where('conto_id', $this->contoId) ->orderByDesc('data') ->orderByDesc('id'); } public function table(Table $table): Table { return $table ->striped() ->columns([ TextColumn::make('data') ->label('Data') ->date('d/m/Y') ->sortable(), TextColumn::make('descrizione') ->label('Descrizione') ->wrap() ->searchable(), TextColumn::make('importo') ->label('Importo') ->formatStateUsing(fn($state) => number_format((float) $state, 2, ',', '.')) ->alignEnd(), IconColumn::make('registrazione_id') ->label('Riconciliato') ->boolean() ->trueColor('success') ->falseColor('gray') ->state(fn(MovimentoBanca $record) => ! empty($record->registrazione_id)), ]) ->filters([ Filter::make('periodo') ->label('Periodo') ->form([ \Filament\Forms\Components\DatePicker::make('from')->label('Dal'), \Filament\Forms\Components\DatePicker::make('to')->label('Al'), ]) ->query(function (Builder $query, array $data): Builder { $from = $data['from'] ?? null; $to = $data['to'] ?? null; return $query ->when($from, fn(Builder $q) => $q->whereDate('data', '>=', $from)) ->when($to, fn(Builder $q) => $q->whereDate('data', '<=', $to)); }), ]) ->paginated([25, 50, 100]); } }