Skip to content

Commit 7454939

Browse files
committed
fix: minor issues for map query
1 parent f7964e8 commit 7454939

File tree

3 files changed

+67
-52
lines changed

3 files changed

+67
-52
lines changed

app/Http/Controllers/Frontend/Page/PageController.php

+33-16
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,21 @@ public function appointmentPage(Request $request, ?ExpertProfile $expertProfile
5959
}
6060
$office = !empty($request->query('office_id')) ? Map::find($request->query('office_id')) : null;
6161
$admin = User::role('super admin')->first();
62+
$defaultDistrict = $expertProfile != null ? $request->query('branch-district', 'Chattogram') : null;
6263
if ($office == null) {
63-
$maps = Map::where(function (Builder $q) use ($request, $expertProfile, $admin) {
64+
$maps = Map::where(function (Builder $q) use ($request, $expertProfile, $admin, $defaultDistrict) {
6465
if ($request->query('branch-thana')) {
6566
$q->where('thana', $request->query('branch-thana'));
6667
}
67-
if ($request->query('branch-district')) {
68-
$q->where('district', $request->query('branch-district'));
68+
if ($defaultDistrict) {
69+
$q->where('district', $defaultDistrict);
6970
}
7071
if ($expertProfile != null) {
7172
$q->where('user_id', $expertProfile->user_id);
7273
} else {
73-
$q->where('user_id', $admin->id)->orWhere('user_id', null);
74+
$q->where(function (Builder $builder) use ($admin) {
75+
$builder->where('user_id', $admin->id)->orWhere('user_id', null);
76+
});
7477
}
7578
})->latest()->get();
7679
} else {
@@ -81,20 +84,24 @@ public function appointmentPage(Request $request, ?ExpertProfile $expertProfile
8184
if ($expertProfile != null) {
8285
$q->where('user_id', $expertProfile->user_id);
8386
} else {
84-
$q->where('user_id', $admin->id)->orWhere('user_id', null);
87+
$q->where(function (Builder $builder) use ($admin) {
88+
$builder->where('user_id', $admin->id)->orWhere('user_id', null);
89+
});
8590
}
8691
})
8792
->distinct()->latest()->get()->pluck('district');
8893
$branchThanas = Map::select([ 'district', 'thana', 'user_id' ])
8994
->distinct()
90-
->where(function (Builder $q) use ($request, $expertProfile, $admin) {
91-
if (!empty($request->query('branch-district'))) {
92-
$q->where('district', $request->query('branch-district'));
95+
->where(function (Builder $q) use ($request, $expertProfile, $admin, $defaultDistrict) {
96+
if ($defaultDistrict) {
97+
$q->where('district', $defaultDistrict);
9398
}
9499
if ($expertProfile != null) {
95100
$q->where('user_id', $expertProfile->user_id);
96101
} else {
97-
$q->where('user_id', $admin->id)->orWhere('user_id', null);
102+
$q->where(function (Builder $builder) use ($admin) {
103+
$builder->where('user_id', $admin->id)->orWhere('user_id', null);
104+
});
98105
}
99106
})->latest()->get()->pluck('thana');
100107
$banners = getRecords('banners');
@@ -128,20 +135,30 @@ public function officePage(Request $request)
128135
{
129136
$admin = User::role('super admin')->first();
130137
$maps = Map::where(function (Builder $q) use ($request, $admin) {
131-
if ($request->query('thana')) {
132-
$q->where('thana', $request->query('thana'));
138+
if ($request->query('thana', 'Karnaphuli')) {
139+
$q->where('thana', $request->query('thana', 'Karnaphuli'));
133140
}
134-
if ($request->query('district')) {
135-
$q->where('district', $request->query('district'));
141+
if ($request->query('district', 'Chattogram')) {
142+
$q->where('district', $request->query('district', 'Chattogram'));
136143
}
137-
$q->where('user_id', $admin->id)->orWhere('user_id', null);
144+
$q->where(function (Builder $builder) use ($admin) {
145+
$builder->where('user_id', $admin->id)->orWhere('user_id', null);
146+
});
138147
})->latest()->get();
139-
$districts = Map::select([ 'district', 'thana' ])->distinct()->latest()->get()->pluck('district');
148+
$districts = Map::select([ 'district', 'thana' ])->distinct()
149+
->where(function (Builder $q) use ($admin) {
150+
$q->where(function (Builder $builder) use ($admin) {
151+
$builder->where('user_id', $admin->id)->orWhere('user_id', null);
152+
});
153+
154+
})->latest()->get()->pluck('district');
140155
$thanas = Map::select([ 'district', 'thana' ])->distinct()->where(function (Builder $q) use ($request, $admin) {
141156
if (!empty($request->query('district'))) {
142157
$q->where('district', $request->query('district'));
143158
}
144-
$q->where('user_id', $admin->id)->orWhere('user_id', null);
159+
$q->where(function (Builder $builder) use ($admin) {
160+
$builder->where('user_id', $admin->id)->orWhere('user_id', null);
161+
});
145162
})->latest()->get()->pluck('thana');
146163
return view('frontend.pages.office', compact('maps', 'districts', 'thanas'));
147164
}

resources/views/frontend/pages/appointment/makeAppointment.blade.php

+15-23
Original file line numberDiff line numberDiff line change
@@ -134,23 +134,12 @@ class="text-muted fs-6">(selected)</span></h5>
134134
@endif
135135
</div>
136136
@if ($office == null)
137-
<div class="col-md-5 location-selector" id="hx-filter-target">
138-
<input type="hidden" id="maps-data" value="{{ json_encode($maps) }}"
139-
name="">
137+
<div class="col-md-5 location-selector">
138+
140139
<h4 class="text-center mb-2">
141140
Which Office Do You Prefer?
142141
</h4>
143142
<div class="row align-items-center">
144-
@php
145-
$districts = App\Models\Map::select('district')
146-
->distinct()
147-
->get()
148-
->pluck('district');
149-
$thanas = App\Models\Map::select('thana')
150-
->distinct()
151-
->get()
152-
->pluck('thana');
153-
@endphp
154143
<div class="col-12">
155144
<div class="text-center bg-light p-2 rounded">
156145
Filter Branches
@@ -160,29 +149,28 @@ class="text-muted fs-6">(selected)</span></h5>
160149
<div class="mb-2">
161150
<label for="branch-thana">District <span
162151
class="text-danger">*</span></label>
163-
<select class="tail-select !w-full"
152+
<select class="tail-select hx-include !w-full"
164153
hx-get="{{ $expertProfile ?? false ? route('consultation.make', ['expertProfile' => $expertProfile]) : route('appointment.make') }}"
165-
hx-select="#hx-filter-target"
154+
hx-select="#hx-filter-target" hx-include=".hx-include"
166155
hx-target="#hx-filter-target" hx-swap="outerHTML"
167156
label="Select District" id="branch-district"
168157
name="branch-district" required
169158
placeholder="Select District...">
170159
@foreach ($branchDistricts as $district)
171160
<option value="{{ $district }}"
172-
@selected(trim($district) == 'Chattogram')
173-
@selected(trim($district) == request()->query('branch-district'))>{{ trim($district) }}
161+
@selected(trim($district) == 'Chattogram')>{{ trim($district) }}
174162
</option>
175163
@endforeach
176164
</select>
177165
</div>
178166
</div>
179167
<div class="col-md-6">
180-
<div class="mb-2">
168+
<div class="mb-2" id="hx-branch-thanas" hx-swap-oob="true">
181169
<label for="branch-thana">Thana <span
182170
class="text-danger">*</span></label>
183-
<select class="tail-select !w-full"
171+
<select class="tail-select hx-include !w-full"
184172
hx-get="{{ $expertProfile ?? false ? route('consultation.make', ['expertProfile' => $expertProfile]) : route('appointment.make') }}"
185-
hx-select="#hx-filter-target"
173+
hx-select="#hx-filter-target" hx-include=".hx-include"
186174
hx-target="#hx-filter-target" hx-swap="outerHTML"
187175
id="branch-thana" name="branch-thana" required
188176
placeholder="Select Thana...">
@@ -199,8 +187,10 @@ class="text-danger">*</span></label>
199187
<div class="row" id="branch-wrapper">
200188
<div class="text-muted mb-2">Select Branches</div>
201189

202-
<div>
203-
@foreach ($maps as $map)
190+
<div id="hx-filter-target">
191+
<input type="hidden" id="maps-data"
192+
value="{{ json_encode($maps) }}" name="">
193+
@forelse ($maps as $map)
204194
<label for="location-input-{{ $map->id }}"
205195
class="col-md-12 col-6 mb-md-1" style="cursor: pointer;">
206196
<div id="location-{{ $map->id }}"
@@ -217,7 +207,9 @@ class="location-input"
217207
id="location-input-{{ $map->id }}"
218208
value="{{ $map->id }}" hidden>
219209
</label>
220-
@endforeach
210+
@empty
211+
<div class="p-5 rounded bg-gray-200">No branches found for selected location</div>
212+
@endforelse
221213
</div>
222214

223215
</div>

resources/views/frontend/pages/office.blade.php

+19-13
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<h4 class="my-5 text-center fs-3">Which Office Do You Prefer?</h4>
1212
<div id="contact_details">
1313
<div class="container">
14-
<div class="row" style="flex-direction: row-reverse;" id="hx-filter-target">
14+
<div class="row" style="flex-direction: row-reverse;">
1515

1616
<div class="col-12">
1717
<div class="row">
@@ -23,31 +23,34 @@
2323
<div class="col-md-6">
2424
<div>
2525
<label for="branch-thana">District: </label>
26-
<select class="tail-select" hx-get="{{ route('office') }}" hx-select="#hx-filter-target"
26+
<select class="tail-select hx-include" hx-include=".hx-include"
27+
hx-get="{{ route('office') }}" hx-select="#hx-filter-target"
2728
hx-target="#hx-filter-target" hx-swap="outerHTML" label="Select District"
28-
id="branch-district" name="district"
29-
placeholder="Select District...">
29+
id="branch-district" name="district" placeholder="Select District...">
3030
@foreach ($districts as $district)
31-
<option value="{{ $district }}" @selected(trim($district) === 'Chattogram' || trim($district) === request()->query('district') )>{{ trim($district) }}</option>
31+
<option value="{{ $district }}" @selected(trim($district) == request()->query('district') || trim($district) == 'Chattogram')>
32+
{{ trim($district) }}</option>
3233
@endforeach
3334
</select>
3435
</div>
3536
</div>
3637
<div class="col-md-6">
37-
<div class="mb-2">
38+
<div class="mb-2" id="thanas" hx-swap-oob="true">
3839
<label for="branch-thana">Thana: </label>
39-
<select class="tail-select" hx-get={{ route('office') }} hx-select="#hx-filter-target"
40-
hx-target="#hx-filter-target" hx-swap="outerHTML" id="branch-thana"
41-
name="thana" placeholder="Select Thana...">
40+
<select class="tail-select hx-include" hx-include=".hx-include"
41+
hx-get={{ route('office') }} hx-select="#hx-filter-target"
42+
hx-target="#hx-filter-target" hx-swap="outerHTML" id="branch-thana" name="thana"
43+
placeholder="Select Thana...">
4244
@foreach ($thanas as $thana)
43-
<option value="{{ trim($thana) }}" @selected(trim($thana) === request()->query('thana'))>{{ $thana }}</option>
45+
<option value="{{ trim($thana) }}" @selected(trim($thana) == request()->query('thana') || trim($thana) == 'Karnaphuli')>
46+
{{ $thana }}</option>
4447
@endforeach
4548
</select>
4649
</div>
4750
</div>
4851
</div>
4952
</div>
50-
<div class="row" style="flex-direction: row-reverse;" hx-tranisition>
53+
<div class="row ps-0 my-2" style="flex-direction: row-reverse;" id="hx-filter-target" hx-tranisition>
5154
@if ($maps->count() > 0)
5255
<div class="col-12 my-2">
5356
Available Branches
@@ -66,18 +69,21 @@ class="border w-100 h-100 rounded-3 shadow-sm " />
6669
<div class="d-flex gap-5">
6770

6871
<div>
69-
<a href="{{ route('appointment.make')."?office_id=".$map->id }}" class="text-dark fw-bold"
72+
<a href="{{ route('appointment.make') . '?office_id=' . $map->id }}"
73+
class="text-dark fw-bold"
7074
style="text-decoration: underline!important;">Make
7175
Appointment</a>
7276
</div>
73-
</div>
77+
</div>
7478
</div>
7579
@if ($key + 1 !== count($maps))
7680
<hr class="bg-light">
7781
@endif
7882
@endforeach
7983
</div>
8084
</div>
85+
@else
86+
<div class="col-12 p-10 rounded bg-gray-200 text-center -ml-3">No branches found for selected location</div>
8187
@endif
8288
</div>
8389
</div>

0 commit comments

Comments
 (0)