diff --git a/app/Http/Controllers/CitiesController.php b/app/Http/Controllers/CitiesController.php index 1e95f7f..1d7e464 100644 --- a/app/Http/Controllers/CitiesController.php +++ b/app/Http/Controllers/CitiesController.php @@ -80,8 +80,21 @@ class CitiesController extends Controller if ($request->has('search') && !empty($request->get('search'))) { $search = $request->get('search'); $search = explode('|', $search); - if(isset($search[0]) &&!empty($search[0])){ - $query->where('province_code',$search[0]); + if(isset($search[0]) && !empty($search[0])){ + // Define special city codes once + $specialCityCodes = ['92.01', '92.04', '92.05', '92.09', '92.10', '92.71']; + + // Handle Papua province special cases + if($search[0] == '92'){ + $query->where('province_code', '92') + ->whereNotIn('code', $specialCityCodes); + } else if($search[0] == '92.1'){ + $query->where('province_code', '92') + ->whereIn('code', $specialCityCodes); + } else { + // For all other provinces + $query->where('province_code', $search[0]); + } } $query->where(function ($q) use ($search) { $q->where('code', 'LIKE', "%$search[1]%"); @@ -121,6 +134,19 @@ class CitiesController extends Controller // Calculate the current page number $currentPage = 0 + 1; + //maping data for datatables, + //jika city code adalah '92.01', '92.04', '92.05', '92.09', '92.10', '92.71' maka province code yang dipilih adalah 92.1 + $data = $data->map(function ($item) { + if (in_array($item->code, ['92.01', '92.04', '92.05', '92.09', '92.10', '92.71'])) { + $item->province_name = Province::where('code', '92.1')->first()->name; + } else { + $item->province_name = $item->province->name; + } + return $item; + }); + + // Apply the search filter again if there is a search filter + // Return the response data as a JSON object return response()->json([ 'draw' => $request->get('draw'), @@ -138,7 +164,20 @@ class CitiesController extends Controller return Excel::download(new CitiesExport, 'cities.xlsx'); } - public function getCitiesByProvinceId($id){ - return response()->json(City::where('province_code', $id)->get()); + public function getCitiesByProvinceId($id) + { + + $query = City::query(); + + $provinceCode = substr($id, 0, 2); + $query->where('province_code', $provinceCode); + + if ($id == '92.1') { + $query->whereIn('code', ['92.01', '92.04', '92.05', '92.09', '92.10', '92.71']); + } elseif ($id == '92') { + $query->whereNotIn('code', ['92.01', '92.04', '92.05', '92.09', '92.10', '92.71']); + } + + return response()->json($query->get()); } } diff --git a/resources/views/cities/index.blade.php b/resources/views/cities/index.blade.php index 10229d7..9e43469 100644 --- a/resources/views/cities/index.blade.php +++ b/resources/views/cities/index.blade.php @@ -38,9 +38,8 @@ -
+ Export to Excel Add City @@ -150,7 +149,7 @@ province: { title: 'Province', render: (item, data) => { - return data.province.name; + return data.province_name; } }, actions: {