query('per_page', 10); $search = $request->query('search', ''); $provinsi = Provinsi::orderBy('kode', 'asc')->get(); $desakelurahan = DesaKelurahan::with('kecamatan') ->where('nama', 'like', "%$search%") ->orWhere('kode', 'like', "%$search%") ->orWhereHas('kecamatan', function($query) use ($search) { $query->where('nama', 'like', "%$search%"); }) ->orderBy('kode', 'asc') ->paginate($perPage); return view('master.desakelurahan.index', compact('title', 'desakelurahan', 'provinsi')); } public function getByKecamatan($kecamatan_id) { $desa = DesaKelurahan::where('kecamatan_id', $kecamatan_id) ->orderBy('nama', 'asc') ->get(); return response()->json($desa); } public function store(Request $request) { $validator = Validator::make($request->all(), [ 'kode' => ['required', 'max:10', 'min:10', 'unique:master_desa_kelurahan,kode'], 'nama' => ['required'], 'path' => ['nullable'], 'kecamatan_id' => ['required', 'exists:master_kecamatan,id'] ]); if ($validator->fails()) { return response()->json([ 'status' => 'error', 'message' => 'Terdapat kesalahan pada input Anda.', 'errors' => $validator->errors() ], 422); } DesaKelurahan::create([ 'kode' => $request->kode, 'nama' => $request->nama, 'path' => $request->path, 'kecamatan_id' => $request->kecamatan_id, 'created_by' => auth()->id(), 'updated_by' => auth()->id(), ]); return response()->json([ 'status' => 'success', 'message' => 'Desa/Kelurahan berhasil ditambahkan.' ]); } public function view($id) { $desakelurahan = DesaKelurahan::with(['kecamatan.kabupatenkota.provinsi'])->find($id); if (!$desakelurahan) { return response()->json([ 'status' => 'error', 'message' => 'Data tidak ditemukan' ], 404); } return response()->json([ 'status' => 'success', 'data' => [ 'id' => $desakelurahan->id, 'kode' => $desakelurahan->kode, 'nama' => $desakelurahan->nama, 'path' => $desakelurahan->path, 'kecamatan_id' => $desakelurahan->kecamatan_id, 'nama_kecamatan' => $desakelurahan->kecamatan->nama, 'kabupaten_kota_id' => $desakelurahan->kecamatan->kabupaten_kota_id, 'nama_kabupaten_kota' => $desakelurahan->kecamatan->kabupatenkota->nama, 'provinsi_id' => $desakelurahan->kecamatan->kabupatenkota->provinsi_id, 'nama_provinsi' => $desakelurahan->kecamatan->kabupatenkota->provinsi->nama, ] ]); } public function update(Request $request, $id) { $validator = Validator::make($request->all(), [ 'kode' => ['required', 'max:10', 'min:10', "unique:master_desa_kelurahan,kode,$id"], 'nama' => ['required'], 'path' => ['nullable'], 'kecamatan_id' => ['required', 'exists:master_kecamatan,id'] ]); if ($validator->fails()) { return response()->json([ 'status' => 'error', 'message' => 'Terdapat kesalahan pada input Anda.', 'errors' => $validator->errors() ], 422); } $desakelurahan = DesaKelurahan::find($id); if (!$desakelurahan) { return response()->json(['status' => 'error', 'message' => 'Data tidak ditemukan'], 404); } $desakelurahan->update([ 'kode' => $request->kode, 'nama' => $request->nama, 'path' => $request->path, 'kecamatan_id' => $request->kecamatan_id, 'updated_by' => auth()->id(), ]); return response()->json(['status' => 'success', 'message' => 'Data berhasil diperbarui!']); } public function destroy($id) { $desakelurahan = DesaKelurahan::find($id); if (!$desakelurahan) { return response()->json([ 'status' => 'error', 'message' => 'Data tidak ditemukan.' ], 404); } $desakelurahan->deleted_by = auth()->user()->id; $desakelurahan->save(); $desakelurahan->delete(); return response()->json([ 'status' => 'success', 'message' => 'Data desa/kelurahan berhasil dihapus.' ]); } }