diff --git a/app/Exports/CitiesExport.php b/app/Exports/CitiesExport.php new file mode 100644 index 0000000..8e7b082 --- /dev/null +++ b/app/Exports/CitiesExport.php @@ -0,0 +1,42 @@ +get(); + } + + public function map($row): array{ + return [ + $row->id, + $row->code, + $row->name, + $row->province->name, + $row->created_at + ]; + } + public function headings(): array{ + return [ + 'ID', + 'Code', + 'Name', + 'Province', + 'Created At' + ]; + } + + public function columnFormats(): array{ + return [ + 'A' => \PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER, + 'E' => \PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_DATETIME + ]; + } +} diff --git a/app/Http/Controllers/CitiesController.php b/app/Http/Controllers/CitiesController.php new file mode 100644 index 0000000..7771195 --- /dev/null +++ b/app/Http/Controllers/CitiesController.php @@ -0,0 +1,135 @@ +validated(); + + if($validate){ + try { + City::create($validate); + return redirect()->route('locations.cities.index')->with('success', 'City created successfully'); + } catch (\Exception $e) { + return redirect()->route('locations.cities.create')->with('error', 'Failed to create city'); + } + } + } + + public function edit($id){ + $city = City::find($id); + $provinces = Province::all(); + return view('location::cities.create', compact('city', 'provinces')); + } + + public function update(CityRequest $request, $id){ + $validate = $request->validated(); + + if($validate){ + try { + $city = City::find($id); + $city->update($validate); + return redirect()->route('locations.cities.index')->with('success', 'City updated successfully'); + } catch (\Exception $e) { + return redirect()->route('locations.cities.edit', $id)->with('error', 'Failed to update city'); + } + } + } + + public function destroy($id){ + try { + City::destroy($id); + echo json_encode(['message' => 'City deleted successfully', 'success' => true]); + } catch (\Exception $e) { + echo json_encode(['message' => 'Failed to delete city', 'success' => false]); + } + } + + public function dataForDatatables(Request $request){ + if (is_null($this->user) || !$this->user->can('provinces.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = City::query(); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('code', 'LIKE', "%$search%"); + $q->orWhere('name', 'LIKE', "%$search%"); + $q->orWhereRelation('province','name', 'LIKE', "%$search%"); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $cities = $query->with('province')->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords/$request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 1; + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $cities, + ]); + } + + public function export() + { + return Excel::download(new CitiesExport, 'cities.xlsx'); + } +} diff --git a/app/Http/Requests/CityRequest.php b/app/Http/Requests/CityRequest.php new file mode 100644 index 0000000..d6822a3 --- /dev/null +++ b/app/Http/Requests/CityRequest.php @@ -0,0 +1,36 @@ + 'required|exists:provinces,code' + ]; + + if ($this->method() === 'PUT') { + $rules['code'] = 'required|string|max:6|unique:cities,code,' . $this->id; + $rules['name'] = 'required|string|max:2554|unique:cities,name,' . $this->id; + } else { + $rules['code'] = 'required|string|max:6|unique:cities,code'; + $rules['name'] = 'required|string|max:2554|unique:cities,name'; + } + + return $rules; + } + + /** + * Determine if the user is authorized to make this request. + */ + public function authorize(): bool + { + return true; + } +} diff --git a/app/Models/City.php b/app/Models/City.php new file mode 100644 index 0000000..0df4162 --- /dev/null +++ b/app/Models/City.php @@ -0,0 +1,16 @@ +belongsTo(Province::class, 'province_code', 'code'); + } + + public function districts(){ + return $this->hasMany(District::class, 'city_code', 'code'); + } +} diff --git a/database/migrations/2024_08_08_144256_create_cities_table.php b/database/migrations/2024_08_08_144256_create_cities_table.php new file mode 100644 index 0000000..356c1f1 --- /dev/null +++ b/database/migrations/2024_08_08_144256_create_cities_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('province_code')->index(); + $table->string('code'); + $table->string('name'); + $table->timestamps(); + $table->softDeletes(); + $table->uuid('created_by')->nullable(); + $table->uuid('updated_by')->nullable(); + $table->uuid('deleted_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('cities'); + } +}; diff --git a/database/seeders/CitySeeder.php b/database/seeders/CitySeeder.php new file mode 100644 index 0000000..b164ab8 --- /dev/null +++ b/database/seeders/CitySeeder.php @@ -0,0 +1,544 @@ +data(); + + foreach ($cities as $city) { + City::create($city); + } + } + + public function data() + { + return [ + ['province_code' => 11, 'code' => '11.01', 'name' => 'KAB. ACEH SELATAN'], + ['province_code' => 11, 'code' => '11.02', 'name' => 'KAB. ACEH TENGGARA'], + ['province_code' => 11, 'code' => '11.03', 'name' => 'KAB. ACEH TIMUR'], + ['province_code' => 11, 'code' => '11.04', 'name' => 'KAB. ACEH TENGAH'], + ['province_code' => 11, 'code' => '11.05', 'name' => 'KAB. ACEH BARAT'], + ['province_code' => 11, 'code' => '11.06', 'name' => 'KAB. ACEH BESAR'], + ['province_code' => 11, 'code' => '11.07', 'name' => 'KAB. PIDIE'], + ['province_code' => 11, 'code' => '11.08', 'name' => 'KAB. ACEH UTARA'], + ['province_code' => 11, 'code' => '11.09', 'name' => 'KAB. SIMEULUE'], + ['province_code' => 11, 'code' => '11.10', 'name' => 'KAB. ACEH SINGKIL'], + ['province_code' => 11, 'code' => '11.11', 'name' => 'KAB. BIREUEN'], + ['province_code' => 11, 'code' => '11.12', 'name' => 'KAB. ACEH BARAT DAYA'], + ['province_code' => 11, 'code' => '11.13', 'name' => 'KAB. GAYO LUES'], + ['province_code' => 11, 'code' => '11.14', 'name' => 'KAB. ACEH JAYA'], + ['province_code' => 11, 'code' => '11.15', 'name' => 'KAB. NAGAN RAYA'], + ['province_code' => 11, 'code' => '11.16', 'name' => 'KAB. ACEH TAMIANG'], + ['province_code' => 11, 'code' => '11.17', 'name' => 'KAB. BENER MERIAH'], + ['province_code' => 11, 'code' => '11.18', 'name' => 'KAB. PIDIE JAYA'], + ['province_code' => 11, 'code' => '11.71', 'name' => 'KOTA BANDA ACEH'], + ['province_code' => 11, 'code' => '11.72', 'name' => 'KOTA SABANG'], + ['province_code' => 11, 'code' => '11.73', 'name' => 'KOTA LHOKSEUMAWE'], + ['province_code' => 11, 'code' => '11.74', 'name' => 'KOTA LANGSA'], + ['province_code' => 11, 'code' => '11.75', 'name' => 'KOTA SUBULUSSALAM'], + ['province_code' => 12, 'code' => '12.01', 'name' => 'KAB. TAPANULI TENGAH'], + ['province_code' => 12, 'code' => '12.02', 'name' => 'KAB. TAPANULI UTARA'], + ['province_code' => 12, 'code' => '12.03', 'name' => 'KAB. TAPANULI SELATAN'], + ['province_code' => 12, 'code' => '12.04', 'name' => 'KAB. NIAS'], + ['province_code' => 12, 'code' => '12.05', 'name' => 'KAB. LANGKAT'], + ['province_code' => 12, 'code' => '12.06', 'name' => 'KAB. KARO'], + ['province_code' => 12, 'code' => '12.07', 'name' => 'KAB. DELI SERDANG'], + ['province_code' => 12, 'code' => '12.08', 'name' => 'KAB. SIMALUNGUN'], + ['province_code' => 12, 'code' => '12.09', 'name' => 'KAB. ASAHAN'], + ['province_code' => 12, 'code' => '12.10', 'name' => 'KAB. LABUHANBATU'], + ['province_code' => 12, 'code' => '12.11', 'name' => 'KAB. DAIRI'], + ['province_code' => 12, 'code' => '12.12', 'name' => 'KAB. TOBA'], + ['province_code' => 12, 'code' => '12.13', 'name' => 'KAB. MANDAILING NATAL'], + ['province_code' => 12, 'code' => '12.14', 'name' => 'KAB. NIAS SELATAN'], + ['province_code' => 12, 'code' => '12.15', 'name' => 'KAB. PAKPAK BHARAT'], + ['province_code' => 12, 'code' => '12.16', 'name' => 'KAB. HUMBANG HASUNDUTAN'], + ['province_code' => 12, 'code' => '12.17', 'name' => 'KAB. SAMOSIR'], + ['province_code' => 12, 'code' => '12.18', 'name' => 'KAB. SERDANG BEDAGAI'], + ['province_code' => 12, 'code' => '12.19', 'name' => 'KAB. BATU BARA'], + ['province_code' => 12, 'code' => '12.20', 'name' => 'KAB. PADANG LAWAS UTARA'], + ['province_code' => 12, 'code' => '12.21', 'name' => 'KAB. PADANG LAWAS'], + ['province_code' => 12, 'code' => '12.22', 'name' => 'KAB. LABUHANBATU SELATAN'], + ['province_code' => 12, 'code' => '12.23', 'name' => 'KAB. LABUHANBATU UTARA'], + ['province_code' => 12, 'code' => '12.24', 'name' => 'KAB. NIAS UTARA'], + ['province_code' => 12, 'code' => '12.25', 'name' => 'KAB. NIAS BARAT'], + ['province_code' => 12, 'code' => '12.71', 'name' => 'KOTA MEDAN'], + ['province_code' => 12, 'code' => '12.72', 'name' => 'KOTA PEMATANGSIANTAR'], + ['province_code' => 12, 'code' => '12.73', 'name' => 'KOTA SIBOLGA'], + ['province_code' => 12, 'code' => '12.74', 'name' => 'KOTA TANJUNG BALAI'], + ['province_code' => 12, 'code' => '12.75', 'name' => 'KOTA BINJAI'], + ['province_code' => 12, 'code' => '12.76', 'name' => 'KOTA TEBING TINGGI'], + ['province_code' => 12, 'code' => '12.77', 'name' => 'KOTA PADANGSIDIMPUAN'], + ['province_code' => 12, 'code' => '12.78', 'name' => 'KOTA GUNUNGSITOLI'], + ['province_code' => 13, 'code' => '13.01', 'name' => 'KAB. PESISIR SELATAN'], + ['province_code' => 13, 'code' => '13.02', 'name' => 'KAB. SOLOK'], + ['province_code' => 13, 'code' => '13.03', 'name' => 'KAB. SIJUNJUNG'], + ['province_code' => 13, 'code' => '13.04', 'name' => 'KAB. TANAH DATAR'], + ['province_code' => 13, 'code' => '13.05', 'name' => 'KAB. PADANG PARIAMAN'], + ['province_code' => 13, 'code' => '13.06', 'name' => 'KAB. AGAM'], + ['province_code' => 13, 'code' => '13.07', 'name' => 'KAB. LIMA PULUH KOTA'], + ['province_code' => 13, 'code' => '13.08', 'name' => 'KAB. PASAMAN'], + ['province_code' => 13, 'code' => '13.09', 'name' => 'KAB. KEPULAUAN MENTAWAI'], + ['province_code' => 13, 'code' => '13.10', 'name' => 'KAB. DHARMASRAYA'], + ['province_code' => 13, 'code' => '13.11', 'name' => 'KAB. SOLOK SELATAN'], + ['province_code' => 13, 'code' => '13.12', 'name' => 'KAB. PASAMAN BARAT'], + ['province_code' => 13, 'code' => '13.71', 'name' => 'KOTA PADANG'], + ['province_code' => 13, 'code' => '13.72', 'name' => 'KOTA SOLOK'], + ['province_code' => 13, 'code' => '13.73', 'name' => 'KOTA SAWAHLUNTO'], + ['province_code' => 13, 'code' => '13.74', 'name' => 'KOTA PADANG PANJANG'], + ['province_code' => 13, 'code' => '13.75', 'name' => 'KOTA BUKITTINGGI'], + ['province_code' => 13, 'code' => '13.76', 'name' => 'KOTA PAYAKUMBUH'], + ['province_code' => 13, 'code' => '13.77', 'name' => 'KOTA PARIAMAN'], + ['province_code' => 14, 'code' => '14.01', 'name' => 'KAB. KAMPAR'], + ['province_code' => 14, 'code' => '14.02', 'name' => 'KAB. INDRAGIRI HULU'], + ['province_code' => 14, 'code' => '14.03', 'name' => 'KAB. BENGKALIS'], + ['province_code' => 14, 'code' => '14.04', 'name' => 'KAB. INDRAGIRI HILIR'], + ['province_code' => 14, 'code' => '14.05', 'name' => 'KAB. PELALAWAN'], + ['province_code' => 14, 'code' => '14.06', 'name' => 'KAB. ROKAN HULU'], + ['province_code' => 14, 'code' => '14.07', 'name' => 'KAB. ROKAN HILIR'], + ['province_code' => 14, 'code' => '14.08', 'name' => 'KAB. SIAK'], + ['province_code' => 14, 'code' => '14.09', 'name' => 'KAB. KUANTAN SINGINGI'], + ['province_code' => 14, 'code' => '14.10', 'name' => 'KAB. KEPULAUAN MERANTI'], + ['province_code' => 14, 'code' => '14.71', 'name' => 'KOTA PEKANBARU'], + ['province_code' => 14, 'code' => '14.72', 'name' => 'KOTA DUMAI'], + ['province_code' => 15, 'code' => '15.01', 'name' => 'KAB. KERINCI'], + ['province_code' => 15, 'code' => '15.02', 'name' => 'KAB. MERANGIN'], + ['province_code' => 15, 'code' => '15.03', 'name' => 'KAB. SAROLANGUN'], + ['province_code' => 15, 'code' => '15.04', 'name' => 'KAB. BATANGHARI'], + ['province_code' => 15, 'code' => '15.05', 'name' => 'KAB. MUARO JAMBI'], + ['province_code' => 15, 'code' => '15.06', 'name' => 'KAB. TANJUNG JABUNG BARAT'], + ['province_code' => 15, 'code' => '15.07', 'name' => 'KAB. TANJUNG JABUNG TIMUR'], + ['province_code' => 15, 'code' => '15.08', 'name' => 'KAB. BUNGO'], + ['province_code' => 15, 'code' => '15.09', 'name' => 'KAB. TEBO'], + ['province_code' => 15, 'code' => '15.71', 'name' => 'KOTA JAMBI'], + ['province_code' => 15, 'code' => '15.72', 'name' => 'KOTA SUNGAI PENUH'], + ['province_code' => 16, 'code' => '16.01', 'name' => 'KAB. OGAN KOMERING ULU'], + ['province_code' => 16, 'code' => '16.02', 'name' => 'KAB. OGAN KOMERING ILIR'], + ['province_code' => 16, 'code' => '16.03', 'name' => 'KAB. MUARA ENIM'], + ['province_code' => 16, 'code' => '16.04', 'name' => 'KAB. LAHAT'], + ['province_code' => 16, 'code' => '16.05', 'name' => 'KAB. MUSI RAWAS'], + ['province_code' => 16, 'code' => '16.06', 'name' => 'KAB. MUSI BANYUASIN'], + ['province_code' => 16, 'code' => '16.07', 'name' => 'KAB. BANYUASIN'], + ['province_code' => 16, 'code' => '16.08', 'name' => 'KAB. OGAN KOMERING ULU TIMUR'], + ['province_code' => 16, 'code' => '16.09', 'name' => 'KAB. OGAN KOMERING ULU SELATAN'], + ['province_code' => 16, 'code' => '16.10', 'name' => 'KAB. OGAN ILIR'], + ['province_code' => 16, 'code' => '16.11', 'name' => 'KAB. EMPAT LAWANG'], + ['province_code' => 16, 'code' => '16.12', 'name' => 'KAB. PENUKAL ABAB LEMATANG ILIR'], + ['province_code' => 16, 'code' => '16.13', 'name' => 'KAB. MUSI RAWAS UTARA'], + ['province_code' => 16, 'code' => '16.71', 'name' => 'KOTA PALEMBANG'], + ['province_code' => 16, 'code' => '16.72', 'name' => 'KOTA PAGAR ALAM'], + ['province_code' => 16, 'code' => '16.73', 'name' => 'KOTA LUBUK LINGGAU'], + ['province_code' => 16, 'code' => '16.74', 'name' => 'KOTA PRABUMULIH'], + ['province_code' => 17, 'code' => '17.01', 'name' => 'KAB. BENGKULU SELATAN'], + ['province_code' => 17, 'code' => '17.02', 'name' => 'KAB. REJANG LEBONG'], + ['province_code' => 17, 'code' => '17.03', 'name' => 'KAB. BENGKULU UTARA'], + ['province_code' => 17, 'code' => '17.04', 'name' => 'KAB. KAUR'], + ['province_code' => 17, 'code' => '17.05', 'name' => 'KAB. SELUMA'], + ['province_code' => 17, 'code' => '17.06', 'name' => 'KAB. MUKO MUKO'], + ['province_code' => 17, 'code' => '17.07', 'name' => 'KAB. LEBONG'], + ['province_code' => 17, 'code' => '17.08', 'name' => 'KAB. KEPAHIANG'], + ['province_code' => 17, 'code' => '17.09', 'name' => 'KAB. BENGKULU TENGAH'], + ['province_code' => 17, 'code' => '17.71', 'name' => 'KOTA BENGKULU'], + ['province_code' => 18, 'code' => '18.01', 'name' => 'KAB. LAMPUNG SELATAN'], + ['province_code' => 18, 'code' => '18.02', 'name' => 'KAB. LAMPUNG TENGAH'], + ['province_code' => 18, 'code' => '18.03', 'name' => 'KAB. LAMPUNG UTARA'], + ['province_code' => 18, 'code' => '18.04', 'name' => 'KAB. LAMPUNG BARAT'], + ['province_code' => 18, 'code' => '18.05', 'name' => 'KAB. TULANG BAWANG'], + ['province_code' => 18, 'code' => '18.06', 'name' => 'KAB. TANGGAMUS'], + ['province_code' => 18, 'code' => '18.07', 'name' => 'KAB. LAMPUNG TIMUR'], + ['province_code' => 18, 'code' => '18.08', 'name' => 'KAB. WAY KANAN'], + ['province_code' => 18, 'code' => '18.09', 'name' => 'KAB. PESAWARAN'], + ['province_code' => 18, 'code' => '18.10', 'name' => 'KAB. PRINGSEWU'], + ['province_code' => 18, 'code' => '18.11', 'name' => 'KAB. MESUJI'], + ['province_code' => 18, 'code' => '18.12', 'name' => 'KAB. TULANG BAWANG BARAT'], + ['province_code' => 18, 'code' => '18.13', 'name' => 'KAB. PESISIR BARAT'], + ['province_code' => 18, 'code' => '18.71', 'name' => 'KOTA BANDAR LAMPUNG'], + ['province_code' => 18, 'code' => '18.72', 'name' => 'KOTA METRO'], + ['province_code' => 19, 'code' => '19.01', 'name' => 'KAB. BANGKA'], + ['province_code' => 19, 'code' => '19.02', 'name' => 'KAB. BELITUNG'], + ['province_code' => 19, 'code' => '19.03', 'name' => 'KAB. BANGKA SELATAN'], + ['province_code' => 19, 'code' => '19.04', 'name' => 'KAB. BANGKA TENGAH'], + ['province_code' => 19, 'code' => '19.05', 'name' => 'KAB. BANGKA BARAT'], + ['province_code' => 19, 'code' => '19.06', 'name' => 'KAB. BELITUNG TIMUR'], + ['province_code' => 19, 'code' => '19.71', 'name' => 'KOTA PANGKAL PINANG'], + ['province_code' => 21, 'code' => '21.01', 'name' => 'KAB. BINTAN'], + ['province_code' => 21, 'code' => '21.02', 'name' => 'KAB. KARIMUN'], + ['province_code' => 21, 'code' => '21.03', 'name' => 'KAB. NATUNA'], + ['province_code' => 21, 'code' => '21.04', 'name' => 'KAB. LINGGA'], + ['province_code' => 21, 'code' => '21.05', 'name' => 'KAB. KEPULAUAN ANAMBAS'], + ['province_code' => 21, 'code' => '21.71', 'name' => 'KOTA BATAM'], + ['province_code' => 21, 'code' => '21.72', 'name' => 'KOTA TANJUNG PINANG'], + ['province_code' => 31, 'code' => '31.01', 'name' => 'KAB. ADM. KEP. SERIBU'], + ['province_code' => 31, 'code' => '31.71', 'name' => 'KOTA ADM. JAKARTA PUSAT'], + ['province_code' => 31, 'code' => '31.72', 'name' => 'KOTA ADM. JAKARTA UTARA'], + ['province_code' => 31, 'code' => '31.73', 'name' => 'KOTA ADM. JAKARTA BARAT'], + ['province_code' => 31, 'code' => '31.74', 'name' => 'KOTA ADM. JAKARTA SELATAN'], + ['province_code' => 31, 'code' => '31.75', 'name' => 'KOTA ADM. JAKARTA TIMUR'], + ['province_code' => 32, 'code' => '32.01', 'name' => 'KAB. BOGOR'], + ['province_code' => 32, 'code' => '32.02', 'name' => 'KAB. SUKABUMI'], + ['province_code' => 32, 'code' => '32.03', 'name' => 'KAB. CIANJUR'], + ['province_code' => 32, 'code' => '32.04', 'name' => 'KAB. BANDUNG'], + ['province_code' => 32, 'code' => '32.05', 'name' => 'KAB. GARUT'], + ['province_code' => 32, 'code' => '32.06', 'name' => 'KAB. TASIKMALAYA'], + ['province_code' => 32, 'code' => '32.07', 'name' => 'KAB. CIAMIS'], + ['province_code' => 32, 'code' => '32.08', 'name' => 'KAB. KUNINGAN'], + ['province_code' => 32, 'code' => '32.09', 'name' => 'KAB. CIREBON'], + ['province_code' => 32, 'code' => '32.10', 'name' => 'KAB. MAJALENGKA'], + ['province_code' => 32, 'code' => '32.11', 'name' => 'KAB. SUMEDANG'], + ['province_code' => 32, 'code' => '32.12', 'name' => 'KAB. INDRAMAYU'], + ['province_code' => 32, 'code' => '32.13', 'name' => 'KAB. SUBANG'], + ['province_code' => 32, 'code' => '32.14', 'name' => 'KAB. PURWAKARTA'], + ['province_code' => 32, 'code' => '32.15', 'name' => 'KAB. KARAWANG'], + ['province_code' => 32, 'code' => '32.16', 'name' => 'KAB. BEKASI'], + ['province_code' => 32, 'code' => '32.17', 'name' => 'KAB. BANDUNG BARAT'], + ['province_code' => 32, 'code' => '32.18', 'name' => 'KAB. PANGANDARAN'], + ['province_code' => 32, 'code' => '32.71', 'name' => 'KOTA BOGOR'], + ['province_code' => 32, 'code' => '32.72', 'name' => 'KOTA SUKABUMI'], + ['province_code' => 32, 'code' => '32.73', 'name' => 'KOTA BANDUNG'], + ['province_code' => 32, 'code' => '32.74', 'name' => 'KOTA CIREBON'], + ['province_code' => 32, 'code' => '32.75', 'name' => 'KOTA BEKASI'], + ['province_code' => 32, 'code' => '32.76', 'name' => 'KOTA DEPOK'], + ['province_code' => 32, 'code' => '32.77', 'name' => 'KOTA CIMAHI'], + ['province_code' => 32, 'code' => '32.78', 'name' => 'KOTA TASIKMALAYA'], + ['province_code' => 32, 'code' => '32.79', 'name' => 'KOTA BANJAR'], + ['province_code' => 33, 'code' => '33.01', 'name' => 'KAB. CILACAP'], + ['province_code' => 33, 'code' => '33.02', 'name' => 'KAB. BANYUMAS'], + ['province_code' => 33, 'code' => '33.03', 'name' => 'KAB. PURBALINGGA'], + ['province_code' => 33, 'code' => '33.04', 'name' => 'KAB. BANJARNEGARA'], + ['province_code' => 33, 'code' => '33.05', 'name' => 'KAB. KEBUMEN'], + ['province_code' => 33, 'code' => '33.06', 'name' => 'KAB. PURWOREJO'], + ['province_code' => 33, 'code' => '33.07', 'name' => 'KAB. WONOSOBO'], + ['province_code' => 33, 'code' => '33.08', 'name' => 'KAB. MAGELANG'], + ['province_code' => 33, 'code' => '33.09', 'name' => 'KAB. BOYOLALI'], + ['province_code' => 33, 'code' => '33.10', 'name' => 'KAB. KLATEN'], + ['province_code' => 33, 'code' => '33.11', 'name' => 'KAB. SUKOHARJO'], + ['province_code' => 33, 'code' => '33.12', 'name' => 'KAB. WONOGIRI'], + ['province_code' => 33, 'code' => '33.13', 'name' => 'KAB. KARANGANYAR'], + ['province_code' => 33, 'code' => '33.14', 'name' => 'KAB. SRAGEN'], + ['province_code' => 33, 'code' => '33.15', 'name' => 'KAB. GROBOGAN'], + ['province_code' => 33, 'code' => '33.16', 'name' => 'KAB. BLORA'], + ['province_code' => 33, 'code' => '33.17', 'name' => 'KAB. REMBANG'], + ['province_code' => 33, 'code' => '33.18', 'name' => 'KAB. PATI'], + ['province_code' => 33, 'code' => '33.19', 'name' => 'KAB. KUDUS'], + ['province_code' => 33, 'code' => '33.20', 'name' => 'KAB. JEPARA'], + ['province_code' => 33, 'code' => '33.21', 'name' => 'KAB. DEMAK'], + ['province_code' => 33, 'code' => '33.22', 'name' => 'KAB. SEMARANG'], + ['province_code' => 33, 'code' => '33.23', 'name' => 'KAB. TEMANGGUNG'], + ['province_code' => 33, 'code' => '33.24', 'name' => 'KAB. KENDAL'], + ['province_code' => 33, 'code' => '33.25', 'name' => 'KAB. BATANG'], + ['province_code' => 33, 'code' => '33.26', 'name' => 'KAB. PEKALONGAN'], + ['province_code' => 33, 'code' => '33.27', 'name' => 'KAB. PEMALANG'], + ['province_code' => 33, 'code' => '33.28', 'name' => 'KAB. TEGAL'], + ['province_code' => 33, 'code' => '33.29', 'name' => 'KAB. BREBES'], + ['province_code' => 33, 'code' => '33.71', 'name' => 'KOTA MAGELANG'], + ['province_code' => 33, 'code' => '33.72', 'name' => 'KOTA SURAKARTA'], + ['province_code' => 33, 'code' => '33.73', 'name' => 'KOTA SALATIGA'], + ['province_code' => 33, 'code' => '33.74', 'name' => 'KOTA SEMARANG'], + ['province_code' => 33, 'code' => '33.75', 'name' => 'KOTA PEKALONGAN'], + ['province_code' => 33, 'code' => '33.76', 'name' => 'KOTA TEGAL'], + ['province_code' => 34, 'code' => '34.01', 'name' => 'KAB. KULON PROGO'], + ['province_code' => 34, 'code' => '34.02', 'name' => 'KAB. BANTUL'], + ['province_code' => 34, 'code' => '34.03', 'name' => 'KAB. GUNUNGKIDUL'], + ['province_code' => 34, 'code' => '34.04', 'name' => 'KAB. SLEMAN'], + ['province_code' => 34, 'code' => '34.71', 'name' => 'KOTA YOGYAKARTA'], + ['province_code' => 35, 'code' => '35.01', 'name' => 'KAB. PACITAN'], + ['province_code' => 35, 'code' => '35.02', 'name' => 'KAB. PONOROGO'], + ['province_code' => 35, 'code' => '35.03', 'name' => 'KAB. TRENGGALEK'], + ['province_code' => 35, 'code' => '35.04', 'name' => 'KAB. TULUNGAGUNG'], + ['province_code' => 35, 'code' => '35.05', 'name' => 'KAB. BLITAR'], + ['province_code' => 35, 'code' => '35.06', 'name' => 'KAB. KEDIRI'], + ['province_code' => 35, 'code' => '35.07', 'name' => 'KAB. MALANG'], + ['province_code' => 35, 'code' => '35.08', 'name' => 'KAB. LUMAJANG'], + ['province_code' => 35, 'code' => '35.09', 'name' => 'KAB. JEMBER'], + ['province_code' => 35, 'code' => '35.10', 'name' => 'KAB. BANYUWANGI'], + ['province_code' => 35, 'code' => '35.11', 'name' => 'KAB. BONDOWOSO'], + ['province_code' => 35, 'code' => '35.12', 'name' => 'KAB. SITUBONDO'], + ['province_code' => 35, 'code' => '35.13', 'name' => 'KAB. PROBOLINGGO'], + ['province_code' => 35, 'code' => '35.14', 'name' => 'KAB. PASURUAN'], + ['province_code' => 35, 'code' => '35.15', 'name' => 'KAB. SIDOARJO'], + ['province_code' => 35, 'code' => '35.16', 'name' => 'KAB. MOJOKERTO'], + ['province_code' => 35, 'code' => '35.17', 'name' => 'KAB. JOMBANG'], + ['province_code' => 35, 'code' => '35.18', 'name' => 'KAB. NGANJUK'], + ['province_code' => 35, 'code' => '35.19', 'name' => 'KAB. MADIUN'], + ['province_code' => 35, 'code' => '35.20', 'name' => 'KAB. MAGETAN'], + ['province_code' => 35, 'code' => '35.21', 'name' => 'KAB. NGAWI'], + ['province_code' => 35, 'code' => '35.22', 'name' => 'KAB. BOJONEGORO'], + ['province_code' => 35, 'code' => '35.23', 'name' => 'KAB. TUBAN'], + ['province_code' => 35, 'code' => '35.24', 'name' => 'KAB. LAMONGAN'], + ['province_code' => 35, 'code' => '35.25', 'name' => 'KAB. GRESIK'], + ['province_code' => 35, 'code' => '35.26', 'name' => 'KAB. BANGKALAN'], + ['province_code' => 35, 'code' => '35.27', 'name' => 'KAB. SAMPANG'], + ['province_code' => 35, 'code' => '35.28', 'name' => 'KAB. PAMEKASAN'], + ['province_code' => 35, 'code' => '35.29', 'name' => 'KAB. SUMENEP'], + ['province_code' => 35, 'code' => '35.71', 'name' => 'KOTA KEDIRI'], + ['province_code' => 35, 'code' => '35.72', 'name' => 'KOTA BLITAR'], + ['province_code' => 35, 'code' => '35.73', 'name' => 'KOTA MALANG'], + ['province_code' => 35, 'code' => '35.74', 'name' => 'KOTA PROBOLINGGO'], + ['province_code' => 35, 'code' => '35.75', 'name' => 'KOTA PASURUAN'], + ['province_code' => 35, 'code' => '35.76', 'name' => 'KOTA MOJOKERTO'], + ['province_code' => 35, 'code' => '35.77', 'name' => 'KOTA MADIUN'], + ['province_code' => 35, 'code' => '35.78', 'name' => 'KOTA SURABAYA'], + ['province_code' => 35, 'code' => '35.79', 'name' => 'KOTA BATU'], + ['province_code' => 36, 'code' => '36.01', 'name' => 'KAB. PANDEGLANG'], + ['province_code' => 36, 'code' => '36.02', 'name' => 'KAB. LEBAK'], + ['province_code' => 36, 'code' => '36.03', 'name' => 'KAB. TANGERANG'], + ['province_code' => 36, 'code' => '36.04', 'name' => 'KAB. SERANG'], + ['province_code' => 36, 'code' => '36.71', 'name' => 'KOTA TANGERANG'], + ['province_code' => 36, 'code' => '36.72', 'name' => 'KOTA CILEGON'], + ['province_code' => 36, 'code' => '36.73', 'name' => 'KOTA SERANG'], + ['province_code' => 36, 'code' => '36.74', 'name' => 'KOTA TANGERANG SELATAN'], + ['province_code' => 51, 'code' => '51.01', 'name' => 'KAB. JEMBRANA'], + ['province_code' => 51, 'code' => '51.02', 'name' => 'KAB. TABANAN'], + ['province_code' => 51, 'code' => '51.03', 'name' => 'KAB. BADUNG'], + ['province_code' => 51, 'code' => '51.04', 'name' => 'KAB. GIANYAR'], + ['province_code' => 51, 'code' => '51.05', 'name' => 'KAB. KLUNGKUNG'], + ['province_code' => 51, 'code' => '51.06', 'name' => 'KAB. BANGLI'], + ['province_code' => 51, 'code' => '51.07', 'name' => 'KAB. KARANGASEM'], + ['province_code' => 51, 'code' => '51.08', 'name' => 'KAB. BULELENG'], + ['province_code' => 51, 'code' => '51.71', 'name' => 'KOTA DENPASAR'], + ['province_code' => 52, 'code' => '52.01', 'name' => 'KAB. LOMBOK BARAT'], + ['province_code' => 52, 'code' => '52.02', 'name' => 'KAB. LOMBOK TENGAH'], + ['province_code' => 52, 'code' => '52.03', 'name' => 'KAB. LOMBOK TIMUR'], + ['province_code' => 52, 'code' => '52.04', 'name' => 'KAB. SUMBAWA'], + ['province_code' => 52, 'code' => '52.05', 'name' => 'KAB. DOMPU'], + ['province_code' => 52, 'code' => '52.06', 'name' => 'KAB. BIMA'], + ['province_code' => 52, 'code' => '52.07', 'name' => 'KAB. SUMBAWA BARAT'], + ['province_code' => 52, 'code' => '52.08', 'name' => 'KAB. LOMBOK UTARA'], + ['province_code' => 52, 'code' => '52.71', 'name' => 'KOTA MATARAM'], + ['province_code' => 52, 'code' => '52.72', 'name' => 'KOTA BIMA'], + ['province_code' => 53, 'code' => '53.01', 'name' => 'KAB. KUPANG'], + ['province_code' => 53, 'code' => '53.02', 'name' => 'KAB TIMOR TENGAH SELATAN'], + ['province_code' => 53, 'code' => '53.03', 'name' => 'KAB. TIMOR TENGAH UTARA'], + ['province_code' => 53, 'code' => '53.04', 'name' => 'KAB. BELU'], + ['province_code' => 53, 'code' => '53.05', 'name' => 'KAB. ALOR'], + ['province_code' => 53, 'code' => '53.06', 'name' => 'KAB. FLORES TIMUR'], + ['province_code' => 53, 'code' => '53.07', 'name' => 'KAB. SIKKA'], + ['province_code' => 53, 'code' => '53.08', 'name' => 'KAB. ENDE'], + ['province_code' => 53, 'code' => '53.09', 'name' => 'KAB. NGADA'], + ['province_code' => 53, 'code' => '53.10', 'name' => 'KAB. MANGGARAI'], + ['province_code' => 53, 'code' => '53.11', 'name' => 'KAB. SUMBA TIMUR'], + ['province_code' => 53, 'code' => '53.12', 'name' => 'KAB. SUMBA BARAT'], + ['province_code' => 53, 'code' => '53.13', 'name' => 'KAB. LEMBATA'], + ['province_code' => 53, 'code' => '53.14', 'name' => 'KAB. ROTE NDAO'], + ['province_code' => 53, 'code' => '53.15', 'name' => 'KAB. MANGGARAI BARAT'], + ['province_code' => 53, 'code' => '53.16', 'name' => 'KAB. NAGEKEO'], + ['province_code' => 53, 'code' => '53.17', 'name' => 'KAB. SUMBA TENGAH'], + ['province_code' => 53, 'code' => '53.18', 'name' => 'KAB. SUMBA BARAT DAYA'], + ['province_code' => 53, 'code' => '53.19', 'name' => 'KAB. MANGGARAI TIMUR'], + ['province_code' => 53, 'code' => '53.20', 'name' => 'KAB. SABU RAIJUA'], + ['province_code' => 53, 'code' => '53.21', 'name' => 'KAB. MALAKA'], + ['province_code' => 53, 'code' => '53.71', 'name' => 'KOTA KUPANG'], + ['province_code' => 61, 'code' => '61.01', 'name' => 'KAB. SAMBAS'], + ['province_code' => 61, 'code' => '61.02', 'name' => 'KAB. MEMPAWAH'], + ['province_code' => 61, 'code' => '61.03', 'name' => 'KAB. SANGGAU'], + ['province_code' => 61, 'code' => '61.04', 'name' => 'KAB. KETAPANG'], + ['province_code' => 61, 'code' => '61.05', 'name' => 'KAB. SINTANG'], + ['province_code' => 61, 'code' => '61.06', 'name' => 'KAB. KAPUAS HULU'], + ['province_code' => 61, 'code' => '61.07', 'name' => 'KAB. BENGKAYANG'], + ['province_code' => 61, 'code' => '61.08', 'name' => 'KAB. LANDAK'], + ['province_code' => 61, 'code' => '61.09', 'name' => 'KAB. SEKADAU'], + ['province_code' => 61, 'code' => '61.10', 'name' => 'KAB. MELAWI'], + ['province_code' => 61, 'code' => '61.11', 'name' => 'KAB. KAYONG UTARA'], + ['province_code' => 61, 'code' => '61.12', 'name' => 'KAB. KUBU RAYA'], + ['province_code' => 61, 'code' => '61.71', 'name' => 'KOTA PONTIANAK'], + ['province_code' => 61, 'code' => '61.72', 'name' => 'KOTA SINGKAWANG'], + ['province_code' => 62, 'code' => '62.01', 'name' => 'KAB. KOTAWARINGIN BARAT'], + ['province_code' => 62, 'code' => '62.02', 'name' => 'KAB. KOTAWARINGIN TIMUR'], + ['province_code' => 62, 'code' => '62.03', 'name' => 'KAB. KAPUAS'], + ['province_code' => 62, 'code' => '62.04', 'name' => 'KAB. BARITO SELATAN'], + ['province_code' => 62, 'code' => '62.05', 'name' => 'KAB. BARITO UTARA'], + ['province_code' => 62, 'code' => '62.06', 'name' => 'KAB. KATINGAN'], + ['province_code' => 62, 'code' => '62.07', 'name' => 'KAB. SERUYAN'], + ['province_code' => 62, 'code' => '62.08', 'name' => 'KAB. SUKAMARA'], + ['province_code' => 62, 'code' => '62.09', 'name' => 'KAB. LAMANDAU'], + ['province_code' => 62, 'code' => '62.10', 'name' => 'KAB. GUNUNG MAS'], + ['province_code' => 62, 'code' => '62.11', 'name' => 'KAB. PULANG PISAU'], + ['province_code' => 62, 'code' => '62.12', 'name' => 'KAB. MURUNG RAYA'], + ['province_code' => 62, 'code' => '62.13', 'name' => 'KAB. BARITO TIMUR'], + ['province_code' => 62, 'code' => '62.71', 'name' => 'KOTA PALANGKARAYA'], + ['province_code' => 63, 'code' => '63.01', 'name' => 'KAB. TANAH LAUT'], + ['province_code' => 63, 'code' => '63.02', 'name' => 'KAB. KOTABARU'], + ['province_code' => 63, 'code' => '63.03', 'name' => 'KAB. BANJAR'], + ['province_code' => 63, 'code' => '63.04', 'name' => 'KAB. BARITO KUALA'], + ['province_code' => 63, 'code' => '63.05', 'name' => 'KAB. TAPIN'], + ['province_code' => 63, 'code' => '63.06', 'name' => 'KAB. HULU SUNGAI SELATAN'], + ['province_code' => 63, 'code' => '63.07', 'name' => 'KAB. HULU SUNGAI TENGAH'], + ['province_code' => 63, 'code' => '63.08', 'name' => 'KAB. HULU SUNGAI UTARA'], + ['province_code' => 63, 'code' => '63.09', 'name' => 'KAB. TABALONG'], + ['province_code' => 63, 'code' => '63.10', 'name' => 'KAB. TANAH BUMBU'], + ['province_code' => 63, 'code' => '63.11', 'name' => 'KAB. BALANGAN'], + ['province_code' => 63, 'code' => '63.71', 'name' => 'KOTA BANJARMASIN'], + ['province_code' => 63, 'code' => '63.72', 'name' => 'KOTA BANJARBARU'], + ['province_code' => 64, 'code' => '64.01', 'name' => 'KAB. PASER'], + ['province_code' => 64, 'code' => '64.02', 'name' => 'KAB. KUTAI KARTANEGARA'], + ['province_code' => 64, 'code' => '64.03', 'name' => 'KAB. BERAU'], + ['province_code' => 64, 'code' => '64.07', 'name' => 'KAB. KUTAI BARAT'], + ['province_code' => 64, 'code' => '64.08', 'name' => 'KAB. KUTAI TIMUR'], + ['province_code' => 64, 'code' => '64.09', 'name' => 'KAB. PENAJAM PASER UTARA'], + ['province_code' => 64, 'code' => '64.11', 'name' => 'KAB. MAHAKAM ULU'], + ['province_code' => 64, 'code' => '64.71', 'name' => 'KOTA BALIKPAPAN'], + ['province_code' => 64, 'code' => '64.72', 'name' => 'KOTA SAMARINDA'], + ['province_code' => 64, 'code' => '64.74', 'name' => 'KOTA BONTANG'], + ['province_code' => 65, 'code' => '65.01', 'name' => 'KAB. BULUNGAN'], + ['province_code' => 65, 'code' => '65.02', 'name' => 'KAB. MALINAU'], + ['province_code' => 65, 'code' => '65.03', 'name' => 'KAB. NUNUKAN'], + ['province_code' => 65, 'code' => '65.04', 'name' => 'KAB. TANA TIDUNG'], + ['province_code' => 65, 'code' => '65.71', 'name' => 'KOTA TARAKAN'], + ['province_code' => 71, 'code' => '71.01', 'name' => 'KAB. BOLAANG MONGONDOW'], + ['province_code' => 71, 'code' => '71.02', 'name' => 'KAB. MINAHASA'], + ['province_code' => 71, 'code' => '71.03', 'name' => 'KAB. KEPULAUAN SANGIHE'], + ['province_code' => 71, 'code' => '71.04', 'name' => 'KAB. KEPULAUAN TALAUD'], + ['province_code' => 71, 'code' => '71.05', 'name' => 'KAB. MINAHASA SELATAN'], + ['province_code' => 71, 'code' => '71.06', 'name' => 'KAB. MINAHASA UTARA'], + ['province_code' => 71, 'code' => '71.07', 'name' => 'KAB. MINAHASA TENGGARA'], + ['province_code' => 71, 'code' => '71.08', 'name' => 'KAB. BOLAANG MONGONDOW UTARA'], + ['province_code' => 71, 'code' => '71.09', 'name' => 'KAB. KEP. SIAU TAGULANDANG BIARO'], + ['province_code' => 71, 'code' => '71.10', 'name' => 'KAB. BOLAANG MONGONDOW TIMUR'], + ['province_code' => 71, 'code' => '71.11', 'name' => 'KAB. BOLAANG MONGONDOW SELATAN'], + ['province_code' => 71, 'code' => '71.71', 'name' => 'KOTA MANADO'], + ['province_code' => 71, 'code' => '71.72', 'name' => 'KOTA BITUNG'], + ['province_code' => 71, 'code' => '71.73', 'name' => 'KOTA TOMOHON'], + ['province_code' => 71, 'code' => '71.74', 'name' => 'KOTA KOTAMOBAGU'], + ['province_code' => 72, 'code' => '72.01', 'name' => 'KAB. BANGGAI'], + ['province_code' => 72, 'code' => '72.02', 'name' => 'KAB. POSO'], + ['province_code' => 72, 'code' => '72.03', 'name' => 'KAB. DONGGALA'], + ['province_code' => 72, 'code' => '72.04', 'name' => 'KAB. TOLI TOLI'], + ['province_code' => 72, 'code' => '72.05', 'name' => 'KAB. BUOL'], + ['province_code' => 72, 'code' => '72.06', 'name' => 'KAB. MOROWALI'], + ['province_code' => 72, 'code' => '72.07', 'name' => 'KAB. BANGGAI KEPULAUAN'], + ['province_code' => 72, 'code' => '72.08', 'name' => 'KAB. PARIGI MOUTONG'], + ['province_code' => 72, 'code' => '72.09', 'name' => 'KAB. TOJO UNA UNA'], + ['province_code' => 72, 'code' => '72.10', 'name' => 'KAB. SIGI'], + ['province_code' => 72, 'code' => '72.11', 'name' => 'KAB. BANGGAI LAUT'], + ['province_code' => 72, 'code' => '72.12', 'name' => 'KAB. MOROWALI UTARA'], + ['province_code' => 72, 'code' => '72.71', 'name' => 'KOTA PALU'], + ['province_code' => 73, 'code' => '73.01', 'name' => 'KAB. KEPULAUAN SELAYAR'], + ['province_code' => 73, 'code' => '73.02', 'name' => 'KAB. BULUKUMBA'], + ['province_code' => 73, 'code' => '73.03', 'name' => 'KAB. BANTAENG'], + ['province_code' => 73, 'code' => '73.04', 'name' => 'KAB. JENEPONTO'], + ['province_code' => 73, 'code' => '73.05', 'name' => 'KAB. TAKALAR'], + ['province_code' => 73, 'code' => '73.06', 'name' => 'KAB. GOWA'], + ['province_code' => 73, 'code' => '73.07', 'name' => 'KAB. SINJAI'], + ['province_code' => 73, 'code' => '73.08', 'name' => 'KAB. BONE'], + ['province_code' => 73, 'code' => '73.09', 'name' => 'KAB. MAROS'], + ['province_code' => 73, 'code' => '73.10', 'name' => 'KAB. PANGKAJENE KEPULAUAN'], + ['province_code' => 73, 'code' => '73.11', 'name' => 'KAB. BARRU'], + ['province_code' => 73, 'code' => '73.12', 'name' => 'KAB. SOPPENG'], + ['province_code' => 73, 'code' => '73.13', 'name' => 'KAB. WAJO'], + ['province_code' => 73, 'code' => '73.14', 'name' => 'KAB. SIDENRENG RAPPANG'], + ['province_code' => 73, 'code' => '73.15', 'name' => 'KAB. PINRANG'], + ['province_code' => 73, 'code' => '73.16', 'name' => 'KAB. ENREKANG'], + ['province_code' => 73, 'code' => '73.17', 'name' => 'KAB. LUWU'], + ['province_code' => 73, 'code' => '73.18', 'name' => 'KAB. TANA TORAJA'], + ['province_code' => 73, 'code' => '73.22', 'name' => 'KAB. LUWU UTARA'], + ['province_code' => 73, 'code' => '73.24', 'name' => 'KAB. LUWU TIMUR'], + ['province_code' => 73, 'code' => '73.26', 'name' => 'KAB. TORAJA UTARA'], + ['province_code' => 73, 'code' => '73.71', 'name' => 'KOTA MAKASSAR'], + ['province_code' => 73, 'code' => '73.72', 'name' => 'KOTA PARE PARE'], + ['province_code' => 73, 'code' => '73.73', 'name' => 'KOTA PALOPO'], + ['province_code' => 74, 'code' => '74.01', 'name' => 'KAB. KOLAKA'], + ['province_code' => 74, 'code' => '74.02', 'name' => 'KAB. KONAWE'], + ['province_code' => 74, 'code' => '74.03', 'name' => 'KAB. MUNA'], + ['province_code' => 74, 'code' => '74.04', 'name' => 'KAB. BUTON'], + ['province_code' => 74, 'code' => '74.05', 'name' => 'KAB. KONAWE SELATAN'], + ['province_code' => 74, 'code' => '74.06', 'name' => 'KAB. BOMBANA'], + ['province_code' => 74, 'code' => '74.07', 'name' => 'KAB. WAKATOBI'], + ['province_code' => 74, 'code' => '74.08', 'name' => 'KAB. KOLAKA UTARA'], + ['province_code' => 74, 'code' => '74.09', 'name' => 'KAB. KONAWE UTARA'], + ['province_code' => 74, 'code' => '74.10', 'name' => 'KAB. BUTON UTARA'], + ['province_code' => 74, 'code' => '74.11', 'name' => 'KAB. KOLAKA TIMUR'], + ['province_code' => 74, 'code' => '74.12', 'name' => 'KAB. KONAWE KEPULAUAN'], + ['province_code' => 74, 'code' => '74.13', 'name' => 'KAB. MUNA BARAT'], + ['province_code' => 74, 'code' => '74.14', 'name' => 'KAB. BUTON TENGAH'], + ['province_code' => 74, 'code' => '74.15', 'name' => 'KAB. BUTON SELATAN'], + ['province_code' => 74, 'code' => '74.71', 'name' => 'KOTA KENDARI'], + ['province_code' => 74, 'code' => '74.72', 'name' => 'KOTA BAU BAU'], + ['province_code' => 75, 'code' => '75.01', 'name' => 'KAB. GORONTALO'], + ['province_code' => 75, 'code' => '75.02', 'name' => 'KAB. BOALEMO'], + ['province_code' => 75, 'code' => '75.03', 'name' => 'KAB. BONE BOLANGO'], + ['province_code' => 75, 'code' => '75.04', 'name' => 'KAB. PAHUWATO'], + ['province_code' => 75, 'code' => '75.05', 'name' => 'KAB. GORONTALO UTARA'], + ['province_code' => 75, 'code' => '75.71', 'name' => 'KOTA GORONTALO'], + ['province_code' => 76, 'code' => '76.01', 'name' => 'KAB. PASANGKAYU'], + ['province_code' => 76, 'code' => '76.02', 'name' => 'KAB. MAMUJU'], + ['province_code' => 76, 'code' => '76.03', 'name' => 'KAB. MAMASA'], + ['province_code' => 76, 'code' => '76.04', 'name' => 'KAB. POLEWALI MANDAR'], + ['province_code' => 76, 'code' => '76.05', 'name' => 'KAB. MAJENE'], + ['province_code' => 76, 'code' => '76.06', 'name' => 'KAB. MAMUJU TENGAH'], + ['province_code' => 81, 'code' => '81.01', 'name' => 'KAB. MALUKU TENGAH'], + ['province_code' => 81, 'code' => '81.02', 'name' => 'KAB. MALUKU TENGGARA'], + ['province_code' => 81, 'code' => '81.03', 'name' => 'KAB. KEPULAUAN TANIMBAR'], + ['province_code' => 81, 'code' => '81.04', 'name' => 'KAB. BURU'], + ['province_code' => 81, 'code' => '81.05', 'name' => 'KAB. SERAM BAGIAN TIMUR'], + ['province_code' => 81, 'code' => '81.06', 'name' => 'KAB. SERAM BAGIAN BARAT'], + ['province_code' => 81, 'code' => '81.07', 'name' => 'KAB. KEPULAUAN ARU'], + ['province_code' => 81, 'code' => '81.08', 'name' => 'KAB. MALUKU BARAT DAYA'], + ['province_code' => 81, 'code' => '81.09', 'name' => 'KAB. BURU SELATAN'], + ['province_code' => 81, 'code' => '81.71', 'name' => 'KOTA AMBON'], + ['province_code' => 81, 'code' => '81.72', 'name' => 'KOTA TUAL'], + ['province_code' => 82, 'code' => '82.01', 'name' => 'KAB. HALMAHERA BARAT'], + ['province_code' => 82, 'code' => '82.02', 'name' => 'KAB. HALMAHERA TENGAH'], + ['province_code' => 82, 'code' => '82.03', 'name' => 'KAB. HALMAHERA UTARA'], + ['province_code' => 82, 'code' => '82.04', 'name' => 'KAB. HALMAHERA SELATAN'], + ['province_code' => 82, 'code' => '82.05', 'name' => 'KAB. KEPULAUAN SULA'], + ['province_code' => 82, 'code' => '82.06', 'name' => 'KAB. HALMAHERA TIMUR'], + ['province_code' => 82, 'code' => '82.07', 'name' => 'KAB. PULAU MOROTAI'], + ['province_code' => 82, 'code' => '82.08', 'name' => 'KAB. PULAU TALIABU'], + ['province_code' => 82, 'code' => '82.71', 'name' => 'KOTA TERNATE'], + ['province_code' => 82, 'code' => '82.72', 'name' => 'KOTA TIDORE KEPULAUAN'], + ['province_code' => 91, 'code' => '91.01', 'name' => 'KAB. MERAUKE'], + ['province_code' => 91, 'code' => '91.02', 'name' => 'KAB. JAYAWIJAYA'], + ['province_code' => 91, 'code' => '91.03', 'name' => 'KAB. JAYAPURA'], + ['province_code' => 91, 'code' => '91.04', 'name' => 'KAB. NABIRE'], + ['province_code' => 91, 'code' => '91.05', 'name' => 'KAB. KEPULAUAN YAPEN'], + ['province_code' => 91, 'code' => '91.06', 'name' => 'KAB. BIAK NUMFOR'], + ['province_code' => 91, 'code' => '91.07', 'name' => 'KAB. PUNCAK JAYA'], + ['province_code' => 91, 'code' => '91.08', 'name' => 'KAB. PANIAI'], + ['province_code' => 91, 'code' => '91.09', 'name' => 'KAB. MIMIKA'], + ['province_code' => 91, 'code' => '91.10', 'name' => 'KAB. SARMI'], + ['province_code' => 91, 'code' => '91.11', 'name' => 'KAB. KEEROM'], + ['province_code' => 91, 'code' => '91.12', 'name' => 'KAB. PEGUNUNGAN BINTANG'], + ['province_code' => 91, 'code' => '91.13', 'name' => 'KAB. YAHUKIMO'], + ['province_code' => 91, 'code' => '91.14', 'name' => 'KAB. TOLIKARA'], + ['province_code' => 91, 'code' => '91.15', 'name' => 'KAB. WAROPEN'], + ['province_code' => 91, 'code' => '91.16', 'name' => 'KAB. BOVEN DIGOEL'], + ['province_code' => 91, 'code' => '91.17', 'name' => 'KAB. MAPPI'], + ['province_code' => 91, 'code' => '91.18', 'name' => 'KAB. ASMAT'], + ['province_code' => 91, 'code' => '91.19', 'name' => 'KAB. SUPIORI'], + ['province_code' => 91, 'code' => '91.20', 'name' => 'KAB. MAMBERAMO RAYA'], + ['province_code' => 91, 'code' => '91.21', 'name' => 'KAB. MAMBERAMO TENGAH'], + ['province_code' => 91, 'code' => '91.22', 'name' => 'KAB. YALIMO'], + ['province_code' => 91, 'code' => '91.23', 'name' => 'KAB. LANNY JAYA'], + ['province_code' => 91, 'code' => '91.24', 'name' => 'KAB. NDUGA'], + ['province_code' => 91, 'code' => '91.25', 'name' => 'KAB. PUNCAK'], + ['province_code' => 91, 'code' => '91.26', 'name' => 'KAB. DOGIYAI'], + ['province_code' => 91, 'code' => '91.27', 'name' => 'KAB. INTAN JAYA'], + ['province_code' => 91, 'code' => '91.28', 'name' => 'KAB. DEIYAI'], + ['province_code' => 91, 'code' => '91.71', 'name' => 'KOTA JAYAPURA'], + ['province_code' => 92, 'code' => '92.01', 'name' => 'KAB. SORONG'], + ['province_code' => 92, 'code' => '92.02', 'name' => 'KAB. MANOKWARI'], + ['province_code' => 92, 'code' => '92.03', 'name' => 'KAB. FAK FAK'], + ['province_code' => 92, 'code' => '92.04', 'name' => 'KAB. SORONG SELATAN'], + ['province_code' => 92, 'code' => '92.05', 'name' => 'KAB. RAJA AMPAT'], + ['province_code' => 92, 'code' => '92.06', 'name' => 'KAB. TELUK BINTUNI'], + ['province_code' => 92, 'code' => '92.07', 'name' => 'KAB. TELUK WONDAMA'], + ['province_code' => 92, 'code' => '92.08', 'name' => 'KAB. KAIMANA'], + ['province_code' => 92, 'code' => '92.09', 'name' => 'KAB. TAMBRAUW'], + ['province_code' => 92, 'code' => '92.10', 'name' => 'KAB. MAYBRAT'], + ['province_code' => 92, 'code' => '92.11', 'name' => 'KAB. MANOKWARI SELATAN'], + ['province_code' => 92, 'code' => '92.12', 'name' => 'KAB. PEGUNUNGAN ARFAK'], + ['province_code' => 92, 'code' => '92.71', 'name' => 'KOTA SORONG'], + + ]; + } + } diff --git a/database/seeders/LocationDatabaseSeeder.php b/database/seeders/LocationDatabaseSeeder.php index ae2ec13..f2407c7 100644 --- a/database/seeders/LocationDatabaseSeeder.php +++ b/database/seeders/LocationDatabaseSeeder.php @@ -3,6 +3,7 @@ namespace Modules\Location\Database\Seeders; use Illuminate\Database\Seeder; +use Modules\Location\Models\City; class LocationDatabaseSeeder extends Seeder { @@ -12,7 +13,8 @@ class LocationDatabaseSeeder extends Seeder public function run(): void { $this->call([ - ProvinceSeeder::class + ProvinceSeeder::class, + CitySeeder::class ]); } } diff --git a/module.json b/module.json index c662a7b..df3b62c 100644 --- a/module.json +++ b/module.json @@ -14,7 +14,7 @@ "master": [ { "title": "Locations", - "path": "", + "path": "locations", "icon": "ki-filled ki-map text-lg", "classes": "", "attributes": [], @@ -31,7 +31,7 @@ }, { "title": "Cities", - "path": "", + "path": "locations.cities", "classes": "", "attributes": [], "permission": "", diff --git a/resources/views/cities/create.blade.php b/resources/views/cities/create.blade.php new file mode 100644 index 0000000..a53fe5d --- /dev/null +++ b/resources/views/cities/create.blade.php @@ -0,0 +1,81 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+ @if(isset($city->id)) +
+ + @method('PUT') + @else + + @endif + @csrf +
+
+

+ {{ isset($city->id) ? 'Edit' : 'Add' }} City +

+
+ Back +
+
+
+
+ +
+ + @error('province_code') + {{ $message }} + @enderror +
+
+
+ +
+ + @error('code') + {{ $message }} + @enderror +
+
+
+ +
+ + @error('name') + {{ $message }} + @enderror +
+
+
+ +
+
+
+
+
+@endsection diff --git a/resources/views/cities/index.blade.php b/resources/views/cities/index.blade.php new file mode 100644 index 0000000..1b8c829 --- /dev/null +++ b/resources/views/cities/index.blade.php @@ -0,0 +1,182 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('locations.cities') }} +@endsection + +@section('content') +
+
+
+
+

+ List of Cities +

+
+
+ +
+
+ + + +
+ Export to Excel + Add City +
+
+
+
+
+ + + + + + + + + + +
+ + + Code + + + City + + + Province + + Action
+
+ +
+
+
+
+@endsection + +@push('scripts') + + + +@endpush + diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 127d715..7e2cd16 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -24,4 +24,19 @@ $trail->push('Edit Province'); }); - // Districts + // Cities + Breadcrumbs::for('locations.cities', function (BreadcrumbTrail $trail) { + $trail->parent('locations.provinces'); + $trail->push('Cities', route('locations.cities.index')); + }); + + Breadcrumbs::for('locations.cities.create', function (BreadcrumbTrail $trail) { + $trail->parent('locations.cities'); + $trail->push('Create City', route('locations.cities.create')); + }); + + + Breadcrumbs::for('locations.cities.edit', function (BreadcrumbTrail $trail) { + $trail->parent('locations.cities'); + $trail->push('Edit City'); + }); diff --git a/routes/web.php b/routes/web.php index 7c1be59..569b7da 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,7 +1,8 @@ name('datatables'); Route::get('export', [ProvincesController ::class, 'export'])->name('export'); }); - Route::resource('provinces', ProvincesController::class); + + Route::name('cities.')->prefix('cities')->group(function () { + Route::get('restore/{id}', [CitiesController::class, 'restore'])->name('restore'); + Route::get('datatables', [CitiesController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [CitiesController ::class, 'export'])->name('export'); + }); + Route::resource('cities', CitiesController::class); + }); });