columns([ IconColumn::make('sport.icon') ->label('') ->grow(false) ->color('primary') ->width(30) ->icon(fn ($record) => $record->sport->icon) ->tooltip(fn ($record) => $record->id) ->visibleFrom('lg'), TextColumn::make('country.name') ->wrap() ->color('gray') ->icon(fn ($record) => $record->country->icon), TextColumn::make('element_group.competition_group.name')->label('Competition Group'), // TextColumn::make('element_group.group.name')->label('Group'), TextColumn::make('name')->searchable(), ])->filters([ SelectFilter::make('sport_id') ->label('Sport') ->options(Sport::where('is_active', 1)->pluck('name', 'id')), Filter::make('competition_group') ->columns(3)->columnSpan(3) ->schema([ Select::make('country_id') ->searchable() ->label('Country') ->options(Country::orderBy('name')->pluck('name', 'id')) ->live(), Select::make('competition_group_id') ->searchable() ->label('Competition Group') ->options(function (Get $get) { if ($get('country_id')) { return CompetitionGroup::where('country_id', $get('country_id'))->orderBy('name')->pluck('name', 'id'); } else { return CompetitionGroup::orderBy('name')->pluck('name', 'id'); } }), ]) ->query(function (Builder $query, array $data): Builder { return $query->when( $data['country_id'], fn (Builder $query, $country_id) => $query->where('country_id', $country_id) )->when( $data['competition_group_id'], function (Builder $query, $competition_group_id) { return $query->whereHas('element_group', function (Builder $query) use ($competition_group_id) { return $query->where('competition_group_id', $competition_group_id); }); } ); }), ], layout: FiltersLayout::AboveContent) ->deferFilters(false) ->recordActions([ EditAction::make(), DeleteAction::make() ->tooltip('All elements connected to this group, including active events, will be deleted') ->before(function ($record) { Event::where('home_id', $record->id)->delete(); Event::where('away_id', $record->id)->delete(); ElementProvider::where('element_id', $record->id)->delete(); ElementGroup::where('element_id', $record->id)->delete(); }) ->successNotification( Notification::make() ->success() ->title('Element deleted') ->body('The element with all relations in other tables has been deleted successfully.'), ), ]) ->toolbarActions([ BulkActionGroup::make([ DeleteBulkAction::make(), ]), ]); } }