diff --git a/app/Filament/Clusters/Statistic/Resources/StatisticEvents/StatisticEventsResource.php b/app/Filament/Clusters/Statistic/Resources/StatisticEvents/StatisticEventsResource.php index 2e368088..c4f2dfc3 100644 --- a/app/Filament/Clusters/Statistic/Resources/StatisticEvents/StatisticEventsResource.php +++ b/app/Filament/Clusters/Statistic/Resources/StatisticEvents/StatisticEventsResource.php @@ -24,7 +24,7 @@ class StatisticEventsResource extends Resource protected static ?int $navigationSort = 1; - protected static string|\UnitEnum|null $navigationGroup = 'Statistic Events'; + protected static string|\UnitEnum|null $navigationGroup = 'Events'; protected static ?string $cluster = StatisticCluster::class; diff --git a/app/Filament/Clusters/Statistic/Resources/StatisticEvents/Tables/StatisticEventsTable.php b/app/Filament/Clusters/Statistic/Resources/StatisticEvents/Tables/StatisticEventsTable.php index ff8acc7b..a4cee8b5 100644 --- a/app/Filament/Clusters/Statistic/Resources/StatisticEvents/Tables/StatisticEventsTable.php +++ b/app/Filament/Clusters/Statistic/Resources/StatisticEvents/Tables/StatisticEventsTable.php @@ -2,11 +2,9 @@ namespace App\Filament\Clusters\Statistic\Resources\StatisticEvents\Tables; -use App\Models\CompetitionGroup; use App\Models\Country; use App\Models\Event; use App\Models\Sport; -use CodeWithKyrian\FilamentDateRange\Forms\Components\DateRangePicker; use Filament\Actions\BulkActionGroup; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; @@ -38,10 +36,10 @@ class StatisticEventsTable '3' => 'icon-basketball', '5' => 'icon-tennisball', }), - TextColumn::make('league.name'), + TextColumn::make('league.name')->searchable(), TextColumn::make('starttime')->dateTime('M j, Y')->label('Date'), - TextColumn::make('home.name')->color('primary'), - TextColumn::make('away.name')->color('success'), + TextColumn::make('home.name')->color('primary')->searchable(), + TextColumn::make('away.name')->color('success')->searchable(), ]) ->filters([ Filter::make('events') @@ -50,22 +48,16 @@ class StatisticEventsTable Select::make('sport_id') ->default(1) ->hiddenLabel() - ->label('') - ->label('Sport') ->options(Sport::whereIn('id', [1, 2, 3, 5])->pluck('name', 'id')), Select::make(name: 'country_id') ->hidden(fn (Get $get) => $get('sport_id') == 5) ->placeholder('Country') ->prefixIcon('phosphor-flag') ->hiddenLabel() - ->label('') - ->multiple() ->searchable() - ->preload() ->options(function (Get $get) { $res = Event::where('has_markets', 1) ->where('sport_id', $get('sport_id')) - ->where('starttime', '>=', Carbon::now()) ->groupBy('country_id') ->pluck('country_id')->toArray(); @@ -77,63 +69,30 @@ class StatisticEventsTable $set('competition_group_id', null); }), Select::make('competition_group_id') - ->hidden(fn (Get $get) => $get('sport_id') == 5) - ->placeholder('League') + ->placeholder(fn (Get $get) => $get('sport_id') == 5 ? 'Tournament' : 'League') ->prefixIcon('phosphor-trophy') ->hiddenLabel() - ->label('') - ->multiple() + // ->multiple() ->searchable() ->options(function (Get $get) { $country_id = $get('country_id') ?? 0; - if ($country_id) { - $res = Event::with('country') - ->with('competition_group') - ->where('sport_id', $get('sport_id')) - ->whereIn('country_id', $country_id) - ->where('starttime', '>', Carbon::now()) - ->groupBy('competition_group_id')->get(); - } else { - $res = Event::with('country') - ->with('competition_group') - ->where('sport_id', $get('sport_id')) - ->where('starttime', '>', Carbon::now()) - ->groupBy('competition_group_id')->get(); - } + $res = Event::with('country') + ->with('competition_group') + ->where('sport_id', $get('sport_id')) + ->when($country_id, function ($query, $country_id) { + $query->where('country_id', $country_id); + })->groupBy('competition_group_id')->get(); $arr = []; foreach ($res as $val) { - $arr[$val->competition_group_id] = $val->country?->name.' '.$val->competition_group?->name; + $arr[(int) $val->competition_group_id] = $val->country?->name.' '.$val->competition_group?->name; } + asort($arr); return $arr; }) ->live(), - Select::make('competition_group_id') - ->visible(fn (Get $get) => $get('sport_id') == 5) - ->placeholder('Tournament') - ->prefixIcon('phosphor-trophy') - ->hiddenLabel() - ->label('') - ->multiple() - ->searchable() - ->options(function () { - $res = Event::with('competition_group') - ->where('sport_id', 5) - ->where('starttime', '>', Carbon::now()) - ->groupBy('competition_group_id') - ->get(); - $arr = []; - foreach ($res as $val) { - $arr[$val->competition_group_id] = $val->competition_group->name; - } - // asort($arr); - - return $arr; - }) - ->live(), - DatePicker::make('starttime_from') ->prefix(fn () => new HtmlString('From')) ->displayFormat('d M Y') @@ -151,6 +110,12 @@ class StatisticEventsTable function (Builder $query, $sport_id) { $query->where('sport_id', (int) $sport_id); } + )->when( + $data['competition_group_id'], + function (Builder $query, $competition_group_id) { + // dd($competition_group_id); + $query->where('league_id', (int) $competition_group_id); + } )->when( $data['starttime_from'], function (Builder $query, $starttime_from) { @@ -188,6 +153,14 @@ class StatisticEventsTable } } + if ($data['country_id'] ?? null) { + $country_id = $data['country_id']; + if ($country_id ?? null) { + $text = Country::where('id', $country_id)->value('name'); + $indicators[] = Indicator::make('Country: '.$text)->removeField('country_id'); + } + } + // if ($data['competition_group_id'] ?? null) { // $competition_groups = CompetitionGroup::whereIn('id', $data['competition_group_id'])->pluck('name')->toArray(); // if (count($competition_groups) > 1) { @@ -202,144 +175,8 @@ class StatisticEventsTable ], layout: FiltersLayout::AboveContent) ->deferFilters(false) - // ->filters([ - // Filter::make('events') - // ->columns(7)->columnSpan(7) - // ->schema([ - // Select::make('sport_id') - // ->default(1) - // ->hiddenLabel() - // ->label('') - // ->label('Sport') - // ->options(Sport::where('is_active', 1)->pluck('name', 'id')), - // // Select::make('competition_group_id') - // // ->hidden(fn (Get $get) => $get('sport_id') == 5) - // // ->placeholder('League') - // // ->prefixIcon('phosphor-trophy') - // // ->hiddenLabel() - // // ->label('') - // // ->multiple() - // // ->searchable() - // // ->options(function (Get $get) { - // // $res = Event::where('has_markets', 1) - // // ->with('country') - // // ->with('competition_group') - // // ->where('sport_id', $get('sport_id')) - // // ->where('starttime', '>', Carbon::now()) - // // ->whereIn('country_id', $get('country_id')) - // // ->groupBy('competition_group_id')->get(); - - // // $arr = []; - // // foreach ($res as $val) { - // // $arr[$val->competition_group_id] = $val->country?->name.' '.$val->competition_group?->name; - // // } - // // asort($arr); - - // // return $arr; - // // }) - // // ->live(), - // // Select::make('competition_group_id') - // // ->visible(fn (Get $get) => $get('sport_id') == 5) - // // ->placeholder('Tournament') - // // ->prefixIcon('phosphor-trophy') - // // ->hiddenLabel() - // // ->label('') - // // ->multiple() - // // ->searchable() - // // ->options(function () { - // // $res = Event::where('has_markets', 1) - // // ->with('competition_group') - // // ->where('sport_id', auth()->user()->sport_id) - // // ->where('starttime', '>', Carbon::now()) - // // ->groupBy('competition_group_id') - // // ->get(); - // // $arr = []; - // // foreach ($res as $val) { - // // $arr[$val->competition_group_id] = $val->competition_group->name; - // // } - // // asort($arr); - - // // return $arr; - // // }) - // // ->live(), - - // // DateRangePicker::make('starttime_period') - // // ->columnSpan(2) - // // ->displayFormat('d M Y') - // // ->minDate(now()) - // // ->hiddenLabel() - // // ->label('') - // // ->live(), - // ]), - // // ->query(function (Builder $query, array $data): Builder { - // // return $query->when( - // // $data['sport_id'], - // // function (Builder $query, $sport_id) { - // // $query->where('sport_id', $sport_id); - // // } - - // // )->when( - // // $data['competition_group_id'], - // // fn (Builder $query, $competition_group_id) => $query->whereIn('sport_id', $competition_group_id) - - // // )->when( - // // $data['starttime_period'], - // // function (Builder $query, $starttime_period) { - - // // // dd($starttime_period); - - // // if (isset($starttime_period['start']) && isset($starttime_period['end'])) { - // // $from = Carbon::createFromDate($starttime_period['start']); - // // $end = Carbon::createFromDate($starttime_period['end']); - - // // return $query - // // ->where('starttime', '>=', $from) - // // ->where('starttime', '<=', $end); - // // } elseif (isset($starttime_period['start'])) { - // // $from = Carbon::createFromDate($starttime_period['start']); - - // // return $query - // // ->where('starttime', '>=', $from); - // // } elseif (isset($starttime_period['end'])) { - // // $end = Carbon::createFromDate($starttime_period['end']); - - // // return $query - // // ->where('starttime', '<=', $end); - // // } - // // } - // // ); - // // })->indicateUsing(function (array $data): array { - // // $indicators = []; - - // // if ($data['starttime_period'] ?? null) { - // // $span = $data['starttime_period']; - // // $text = ''; - // // if ($span['start'] ?? null) { - // // $text .= Carbon::parse($span['start'])->format('d. M.'); - // // } - // // if ($span['end'] ?? null) { - // // $text .= ' - '.Carbon::parse($span['end'])->format('d. M.'); - // // } - // // if ($text) { - // // $indicators[] = Indicator::make($text)->removeField('starttime_period.start')->color('info'); - // // } - // // } - - // // if ($data['competition_group_id'] ?? null) { - // // $competition_groups = CompetitionGroup::whereIn('id', $data['competition_group_id'])->pluck('name')->toArray(); - // // if (count($competition_groups) > 1) { - // // $indicators[] = Indicator::make(implode(', ', $competition_groups))->removeField('competition_group_id')->color('info'); - // // } else { - // // $indicators[] = Indicator::make($competition_groups[0])->removeField('competition_group_id')->color('info')->color('info'); - // // } - // // } - - // // return $indicators; - // // }), - // ], layout: FiltersLayout::AboveContent) - // ->deferFilters(false) - // ->hiddenFilterIndicators(false) - // ->persistFiltersInSession() + ->hiddenFilterIndicators(false) + ->persistFiltersInSession() ->recordActions([ EditAction::make(), ])