diff --git a/app/Http/Livewire/BookCase/CityTable.php b/app/Http/Livewire/BookCase/CityTable.php new file mode 100644 index 00000000..24a589a2 --- /dev/null +++ b/app/Http/Livewire/BookCase/CityTable.php @@ -0,0 +1,15 @@ +sortable(), ]; } + + public function builder(): Builder + { + return BitcoinEvent::query() + ->whereHas('venue.city.country', fn($query) => $query->where('code', $this->country)); + } } diff --git a/app/Http/Livewire/Tables/BookCaseTable.php b/app/Http/Livewire/Tables/BookCaseTable.php index 4555d942..5865226b 100644 --- a/app/Http/Livewire/Tables/BookCaseTable.php +++ b/app/Http/Livewire/Tables/BookCaseTable.php @@ -49,6 +49,7 @@ class BookCaseTable extends DataTableComponent { return [ TextFilter::make('By IDs', 'byids') + ->hiddenFromMenus() ->filter(function (Builder $builder, string $value) { $builder->whereIn('id', str($value)->explode(',')); }), diff --git a/app/Http/Livewire/Tables/CityTable.php b/app/Http/Livewire/Tables/CityTable.php index 64491700..b48d1f52 100644 --- a/app/Http/Livewire/Tables/CityTable.php +++ b/app/Http/Livewire/Tables/CityTable.php @@ -14,6 +14,7 @@ class CityTable extends DataTableComponent use Actions; public string $country; + public string $type; protected $model = City::class; @@ -39,25 +40,36 @@ class CityTable extends DataTableComponent public function columns(): array { - return [ - Column::make("Stadt Name", "name") - ->sortable() - ->searchable(), - Column::make('Veranstaltungs-Orte') - ->label( - fn($row, Column $column) => $row->venues_count - ) - ->collapseOnMobile(), - Column::make('Termine') - ->label( - fn($row, Column $column) => $row->events_count - ) - ->collapseOnMobile(), - Column::make('') - ->label( - fn($row, Column $column) => view('columns.cities.action')->withRow($row) - ), - ]; + $columns = collect([]); + if($this->type === 'school') { + $columns = $columns->merge([ + Column::make('Veranstaltungs-Orte') + ->label( + fn($row, Column $column) => $row->venues_count + ) + ->collapseOnMobile(), + Column::make('Termine') + ->label( + fn($row, Column $column) => $row->events_count + ) + ->collapseOnMobile(), + ]); + } + if ($this->type === 'bookCase') { + $columns = $columns->merge([ + Column::make("Stadt Name", "name") + ->sortable() + ->searchable(), + Column::make('') + ->label( + fn($row, Column $column) => view('columns.cities.action') + ->withRow($row) + ->withType($this->type) + ), + ]); + } + + return $columns->toArray(); } public function builder(): Builder @@ -94,13 +106,18 @@ class CityTable extends DataTableComponent $city = City::query() ->find($id); $query = BookCase::radius($city->latitude, $city->longitude, 5); + $ids = $query->pluck('id'); + if ($ids->isEmpty()) { + $this->notification() + ->error(__('No bookcases found in the radius of 5km')); + return; + } + return to_route('bookCases.table.bookcases', [ '#table', - 'country' => $this->country, - 'table' => [ + 'table' => [ 'filters' => [ - 'byids' => $query->pluck('id') - ->implode(',') + 'byids' => $ids->implode(',') ], ] ]); diff --git a/app/Http/Livewire/Tables/MeetupEventTable.php b/app/Http/Livewire/Tables/MeetupEventTable.php index 0e74d6b3..a90090cd 100644 --- a/app/Http/Livewire/Tables/MeetupEventTable.php +++ b/app/Http/Livewire/Tables/MeetupEventTable.php @@ -71,6 +71,7 @@ class MeetupEventTable extends DataTableComponent public function builder(): Builder { return MeetupEvent::query() + ->whereHas('meetup.city.country', fn($query) => $query->where('code', $this->country)) ->with([ 'meetup', ]); diff --git a/app/Http/Livewire/Tables/MeetupTable.php b/app/Http/Livewire/Tables/MeetupTable.php index 64afc640..75e37bd7 100644 --- a/app/Http/Livewire/Tables/MeetupTable.php +++ b/app/Http/Livewire/Tables/MeetupTable.php @@ -55,6 +55,7 @@ class MeetupTable extends DataTableComponent public function builder(): Builder { return Meetup::query() + ->whereHas('city.country', fn($query) => $query->where('code', $this->country)) ->withCount([ 'meetupEvents', ]); @@ -64,7 +65,7 @@ class MeetupTable extends DataTableComponent { return to_route('meetup.table.meetupEvent', [ 'country' => $this->country, - 'table' => [ + 'table' => [ 'filters' => ['id' => $id], ] ]); diff --git a/resources/views/columns/cities/action.blade.php b/resources/views/columns/cities/action.blade.php index 2ede0660..3b86c74d 100644 --- a/resources/views/columns/cities/action.blade.php +++ b/resources/views/columns/cities/action.blade.php @@ -1,14 +1,18 @@