From 57a21514d13c8c03660566449a215d6ec501c20d Mon Sep 17 00:00:00 2001 From: HolgerHatGarKeineNode Date: Fri, 5 Dec 2025 19:16:17 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=8D=20Scope=20cities=20and=20venues=20?= =?UTF-8?q?by=20country,=20add=20default=20country=20handling,=20and=20enh?= =?UTF-8?q?ance=20dropdowns=20with=20searchable=20and=20flag-based=20count?= =?UTF-8?q?ry=20selection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/livewire/cities/create.blade.php | 26 ++++++++++++++++--- .../views/livewire/venues/create.blade.php | 19 ++++++++++---- .../views/livewire/venues/index.blade.php | 1 + 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/resources/views/livewire/cities/create.blade.php b/resources/views/livewire/cities/create.blade.php index 753c2f7..4a52294 100644 --- a/resources/views/livewire/cities/create.blade.php +++ b/resources/views/livewire/cities/create.blade.php @@ -11,6 +11,7 @@ new class extends Component { use SeoTrait; + public $country = 'de'; public string $name = ''; public ?int $country_id = null; public float $latitude = 0; @@ -18,6 +19,14 @@ class extends Component { public ?int $population = null; public ?string $population_date = null; + public function mount(): void + { + $this->country = request()->route('country', config('app.domain_country')); + $this->country_id = Country::query() + ->where('code', $this->country) + ->value('id'); + } + public function createCity(): void { $validated = $this->validate([ @@ -59,10 +68,17 @@ class extends Component {
- - + + {{ __('Select a country') }} @foreach($countries as $country) - + +
+ {{ str($country->code)->lower() }} + {{ $country->name }} +
+
@endforeach
@@ -75,6 +91,10 @@ class extends Component { + +
+ https://www.mappr.co/latitude-longitude-finder/ +
diff --git a/resources/views/livewire/venues/create.blade.php b/resources/views/livewire/venues/create.blade.php index 79bb2c5..a9df5c1 100644 --- a/resources/views/livewire/venues/create.blade.php +++ b/resources/views/livewire/venues/create.blade.php @@ -11,10 +11,16 @@ new class extends Component { use SeoTrait; + public $country = 'de'; public string $name = ''; public ?int $city_id = null; public string $street = ''; + public function mount(): void + { + $this->country = request()->route('country', config('app.domain_country')); + } + public function createVenue(): void { $validated = $this->validate([ @@ -36,7 +42,10 @@ class extends Component { public function with(): array { return [ - 'cities' => City::query()->with('country')->orderBy('name')->get(), + 'cities' => City::query() + ->with('country') + ->whereHas('country', fn($query) => $query->where('countries.code', $this->country)) + ->orderBy('name')->get(), ]; } }; ?> @@ -53,15 +62,15 @@ class extends Component {
- - + @foreach($cities as $city) - + @endforeach diff --git a/resources/views/livewire/venues/index.blade.php b/resources/views/livewire/venues/index.blade.php index 663a0af..750ac6d 100644 --- a/resources/views/livewire/venues/index.blade.php +++ b/resources/views/livewire/venues/index.blade.php @@ -27,6 +27,7 @@ class extends Component { ->when($this->search, fn($query) => $query->where('name', 'ilike', '%'.$this->search.'%'), ) + ->whereHas('city.country', fn($query) => $query->where('countries.code', $this->country)) ->orderBy('name') ->paginate(15), ];