From 99791c37bad5644a1890dbbb657bcae45e17c17e Mon Sep 17 00:00:00 2001 From: Benjamin Takats Date: Thu, 1 Dec 2022 21:49:00 +0100 Subject: [PATCH] tabs added --- app/Http/Livewire/Frontend/SearchCourse.php | 3 + app/Http/Livewire/Frontend/SearchEvent.php | 3 + app/Http/Livewire/Tables/CourseTable.php | 21 +++++-- app/Http/Livewire/Tables/EventTable.php | 63 +++++++++++++++++++ app/Http/Livewire/Tables/VenueTable.php | 4 ++ app/Models/Course.php | 5 ++ app/Models/Event.php | 5 ++ .../views/columns/courses/action.blade.php | 1 + .../views/columns/events/action.blade.php | 1 + .../views/columns/lectures/action.blade.php | 2 +- .../views/columns/venues/action.blade.php | 1 + .../views/livewire/frontend/header.blade.php | 10 ++- .../livewire/frontend/search-city.blade.php | 2 +- .../livewire/frontend/search-course.blade.php | 2 +- .../livewire/frontend/search-event.blade.php | 14 ++++- .../frontend/search-lecturer.blade.php | 2 +- .../livewire/frontend/search-tabs.blade.php | 10 ++- .../livewire/frontend/search-venue.blade.php | 2 +- .../views/livewire/guest/welcome.blade.php | 6 +- routes/web.php | 4 +- 20 files changed, 140 insertions(+), 21 deletions(-) create mode 100644 app/Http/Livewire/Tables/EventTable.php create mode 100644 resources/views/columns/courses/action.blade.php create mode 100644 resources/views/columns/events/action.blade.php create mode 100644 resources/views/columns/venues/action.blade.php diff --git a/app/Http/Livewire/Frontend/SearchCourse.php b/app/Http/Livewire/Frontend/SearchCourse.php index bf4b5c7d..515179c7 100644 --- a/app/Http/Livewire/Frontend/SearchCourse.php +++ b/app/Http/Livewire/Frontend/SearchCourse.php @@ -2,10 +2,13 @@ namespace App\Http\Livewire\Frontend; +use App\Models\Country; use Livewire\Component; class SearchCourse extends Component { + public Country $country; + public function render() { return view('livewire.frontend.search-course'); diff --git a/app/Http/Livewire/Frontend/SearchEvent.php b/app/Http/Livewire/Frontend/SearchEvent.php index 6ba7b7ee..fad174c0 100644 --- a/app/Http/Livewire/Frontend/SearchEvent.php +++ b/app/Http/Livewire/Frontend/SearchEvent.php @@ -2,10 +2,13 @@ namespace App\Http\Livewire\Frontend; +use App\Models\Country; use Livewire\Component; class SearchEvent extends Component { + public Country $country; + public function render() { return view('livewire.frontend.search-event'); diff --git a/app/Http/Livewire/Tables/CourseTable.php b/app/Http/Livewire/Tables/CourseTable.php index a67c1f8e..88ef71a2 100644 --- a/app/Http/Livewire/Tables/CourseTable.php +++ b/app/Http/Livewire/Tables/CourseTable.php @@ -9,6 +9,8 @@ use Rappasoft\LaravelLivewireTables\Views\Column; class CourseTable extends DataTableComponent { + public string $country; + protected $model = Course::class; public function configure(): void @@ -19,22 +21,29 @@ class CourseTable extends DataTableComponent public function columns(): array { return [ - Column::make("Id", "id") - ->sortable(), - Column::make("Lecturer id", "lecturer_id") + Column::make("Dozent", "lecturer.name") ->sortable(), Column::make("Name", "name") ->sortable(), - Column::make("Created at", "created_at") + Column::make("Termine") + ->label( + fn($row, Column $column) => ''.$row->events->count().'' + ) + ->html() ->sortable(), - Column::make("Updated at", "updated_at") + Column::make("Erstellt am", "created_at") ->sortable(), + Column::make('') + ->label( + fn($row, Column $column) => view('columns.courses.action')->withRow($row) + ), ]; } public function builder(): Builder { return Course::query() - ->whereHas('country', fn($query) => $query->where('code', $this->country)); + ->whereHas('events.venue.city.country', + fn($query) => $query->where('countries.code', $this->country)); } } diff --git a/app/Http/Livewire/Tables/EventTable.php b/app/Http/Livewire/Tables/EventTable.php new file mode 100644 index 00000000..94fafb8f --- /dev/null +++ b/app/Http/Livewire/Tables/EventTable.php @@ -0,0 +1,63 @@ +setPrimaryKey('id') + ->setAdditionalSelects([ + 'course_id', + 'venue_id', + ]); + } + + public function columns(): array + { + return [ + Column::make("Stadt", "venue.city.name") + ->sortable(), + Column::make("Veranstaltungs-Ort", "venue.name") + ->sortable(), + Column::make("Dozent", "course.lecturer.name") + ->sortable(), + Column::make("Kurs", "course.name") + ->sortable(), + Column::make("Erstellt am", "created_at") + ->sortable(), + Column::make("Zuletzt geändert", "updated_at") + ->sortable(), + Column::make("Teilnehmer") + ->label( + fn($row, Column $column) => ''.$row->registrations->count().'' + ) + ->html() + ->sortable(), + Column::make('') + ->label( + fn($row, Column $column) => view('columns.events.action')->withRow($row) + ), + ]; + } + + public function builder(): Builder + { + return Event::query() + ->withCount([ + 'registrations', + ]) + ->whereHas('venue.city.country', + fn($query) => $query->where('countries.code', $this->country)); + } +} diff --git a/app/Http/Livewire/Tables/VenueTable.php b/app/Http/Livewire/Tables/VenueTable.php index 46f9b4d5..25cb169f 100644 --- a/app/Http/Livewire/Tables/VenueTable.php +++ b/app/Http/Livewire/Tables/VenueTable.php @@ -27,6 +27,10 @@ class VenueTable extends DataTableComponent ->sortable(), Column::make("Street", "street") ->sortable(), + Column::make('') + ->label( + fn($row, Column $column) => view('columns.venues.action')->withRow($row) + ), ]; } diff --git a/app/Models/Course.php b/app/Models/Course.php index 0e857d8a..7925597e 100644 --- a/app/Models/Course.php +++ b/app/Models/Course.php @@ -35,4 +35,9 @@ class Course extends Model { return $this->belongsTo(Lecturer::class); } + + public function events(): \Illuminate\Database\Eloquent\Relations\HasMany + { + return $this->hasMany(Event::class); + } } diff --git a/app/Models/Event.php b/app/Models/Event.php index 0778a259..bf905eff 100644 --- a/app/Models/Event.php +++ b/app/Models/Event.php @@ -38,4 +38,9 @@ class Event extends Model { return $this->belongsTo(Venue::class); } + + public function registrations(): \Illuminate\Database\Eloquent\Relations\HasMany + { + return $this->hasMany(Registration::class); + } } diff --git a/resources/views/columns/courses/action.blade.php b/resources/views/columns/courses/action.blade.php new file mode 100644 index 00000000..a8571def --- /dev/null +++ b/resources/views/columns/courses/action.blade.php @@ -0,0 +1 @@ +Termine anzeigen diff --git a/resources/views/columns/events/action.blade.php b/resources/views/columns/events/action.blade.php new file mode 100644 index 00000000..fee3b944 --- /dev/null +++ b/resources/views/columns/events/action.blade.php @@ -0,0 +1 @@ +Anmelden diff --git a/resources/views/columns/lectures/action.blade.php b/resources/views/columns/lectures/action.blade.php index 8361f5a3..a8571def 100644 --- a/resources/views/columns/lectures/action.blade.php +++ b/resources/views/columns/lectures/action.blade.php @@ -1 +1 @@ -Termine ansehen +Termine anzeigen diff --git a/resources/views/columns/venues/action.blade.php b/resources/views/columns/venues/action.blade.php new file mode 100644 index 00000000..a8571def --- /dev/null +++ b/resources/views/columns/venues/action.blade.php @@ -0,0 +1 @@ +Termine anzeigen diff --git a/resources/views/livewire/frontend/header.blade.php b/resources/views/livewire/frontend/header.blade.php index ccd222c9..3bd28661 100644 --- a/resources/views/livewire/frontend/header.blade.php +++ b/resources/views/livewire/frontend/header.blade.php @@ -1,7 +1,7 @@
-
-
+
+
@auth @@ -63,6 +67,8 @@ 'search.city' => 'Stadt', 'search.lecturer' => 'Dozent', 'search.venue' => 'Veranstaltungs-Ort', + 'search.course' => 'Kurs', + 'search.event' => 'Termin', }; @endphp {{-- MAIN --}}
-
+
diff --git a/resources/views/livewire/frontend/search-course.blade.php b/resources/views/livewire/frontend/search-course.blade.php index 0a5b2abf..80a17ab8 100644 --- a/resources/views/livewire/frontend/search-course.blade.php +++ b/resources/views/livewire/frontend/search-course.blade.php @@ -3,7 +3,7 @@ {{-- MAIN --}}
- diff --git a/resources/views/livewire/frontend/search-venue.blade.php b/resources/views/livewire/frontend/search-venue.blade.php index 28a347ea..ecf95be7 100644 --- a/resources/views/livewire/frontend/search-venue.blade.php +++ b/resources/views/livewire/frontend/search-venue.blade.php @@ -3,7 +3,7 @@ {{-- MAIN --}}
-