orderBy("id_lokasi")->get(); return view("setup.lokasi.lokasi", compact("lokasi")); } public function create() { // } public function store(Request $request) { $request->merge([ "id_lokasi" => strtoupper(trim((string) $request->input("id_lokasi"))), "nama_lokasi" => trim((string) $request->input("nama_lokasi")), ]); $data = $request->validate( [ "id_lokasi" => ["required", "string", "max:10", Rule::unique("master_lokasi", "id_lokasi")], "nama_lokasi" => ["required", "string", "max:100"], "max_space" => ["required", "integer", "min:0", "max:32767"], "sisa" => ["required", "integer", "min:0", "max:32767", "lte:max_space"], "prioritas" => ["nullable", "integer"], ], [ "id_lokasi.unique" => "ID lokasi sudah dipakai, gunakan kode lain.", "sisa.lte" => "Sisa kapasitas tidak boleh melebihi kapasitas maksimal.", ] ); $lokasi = MasterLokasi::create($data); return response()->json([ "success" => true, "message" => "Area parkir berhasil ditambahkan.", "data" => $lokasi, ], 201); } public function show($id_lokasi) { $lokasi = MasterLokasi::find($id_lokasi); if (!$lokasi) { return response()->json([ "success" => false, "message" => "Area parkir tidak ditemukan.", ], 404); } return response()->json(["success" => true, "data" => $lokasi]); } public function edit($id_lokasi) { return $this->show($id_lokasi); } public function update(Request $request, $id_lokasi) { $lokasi = MasterLokasi::find($id_lokasi); if (!$lokasi) { return response()->json([ "success" => false, "message" => "Area parkir tidak ditemukan.", ], 404); } $request->merge([ "nama_lokasi" => trim((string) $request->input("nama_lokasi")), ]); $data = $request->validate( [ "nama_lokasi" => ["required", "string", "max:100"], "max_space" => ["required", "integer", "min:0", "max:32767"], "sisa" => ["required", "integer", "min:0", "max:32767", "lte:max_space"], "prioritas" => ["nullable", "integer"], ], [ "sisa.lte" => "Sisa kapasitas tidak boleh melebihi kapasitas maksimal.", ] ); $lokasi->update($data); return response()->json([ "success" => true, "message" => "Area parkir berhasil diperbarui.", "data" => $lokasi, ]); } public function destroy($id_lokasi) { $lokasi = MasterLokasi::find($id_lokasi); if (!$lokasi) { return response()->json([ "success" => false, "message" => "Area parkir tidak ditemukan.", ], 404); } $dipakai = DB::table("stasiunkerja")->where("id_lokasi", $lokasi->id_lokasi)->count(); if ($dipakai > 0) { return response()->json([ "success" => false, "message" => "Area {$lokasi->id_lokasi} dipakai {$dipakai} stasiun kerja, tidak bisa dihapus.", ], 409); } $dipakaiGate = DB::table("nama_pos")->where("area", $lokasi->id_lokasi)->count(); if ($dipakaiGate > 0) { return response()->json([ "success" => false, "message" => "Area {$lokasi->id_lokasi} dipakai {$dipakaiGate} pintu/pos, tidak bisa dihapus.", ], 409); } $lokasi->delete(); return response()->json([ "success" => true, "message" => "Area parkir berhasil dihapus.", ]); } }