columns([ IconColumn::make('sport_id') ->label('') ->icon(fn(string $state): string => match ($state) { '1' => 'icon-soccerball', '2' => 'icon-icehockey', '3' => 'icon-basketball', '5' => 'icon-tennisball', }), IconColumn::make('league.sofascore_category.flag') ->label('') ->icon(function ($state): string { return $state; }), TextColumn::make('league.name') ->label('League') ->tooltip(fn($record) => $record->league_id) ->sortable() ->searchable() ->description( fn($record) => $record->league->sofascore_category->name ), TextColumn::make('starttime')->dateTime('Y-m-d H:i') ->sortable(), TextColumn::make('home.ss_team_name') ->tooltip(fn($record) => $record->home_id) ->color('primary') ->sortable() ->searchable(), TextColumn::make('away.ss_team_name') ->tooltip(fn($record) => $record->away_id) ->color('success') ->sortable() ->searchable(), TextColumn::make('updated_at')->alignCenter()->date(), ]) ->filters([ Filter::make('fixture_filters') ->columns(3) ->columnSpan(3) ->schema([ Select::make('sport_id') ->default(1) ->options(fn() => Sport::query()->where('is_active', 1)->pluck('name', 'id')) ->selectablePlaceholder(false) ->label('Sport') ->live(), Select::make('league_id') ->options(fn(Get $get) => LoadStatisticFixturesLeaguesOptions::load($get('sport_id'))) ->preload() ->searchable() ->columnSpan(2) ->label('League'), ])->query(function (Builder $query, array $data): Builder { return $query->when( $data['league_id'], function (Builder $query, $league_id) { $query->where('league_id', $league_id)->orderBy('league_id'); } )->when( $data['sport_id'], function (Builder $query, $away_id) { $query->where('sport_id', (int) $away_id); } ); }), ], layout: FiltersLayout::AboveContent) ->deferFilters(false) ->recordActions([ EditAction::make()->iconButton(), DeleteAction::make()->iconButton(), ]) ->toolbarActions([ BulkActionGroup::make([ DeleteBulkAction::make(), ]), ]); } }