get('kandang_page', 1); $kandang = KandangAyam::where('user_id', Auth::id()) ->latest() ->paginate(4, ['*'], 'kandang_page', $kandangPage); return view('cage-management', compact('kandang')); } catch (\Exception $e) { Log::error('Gagal memuat data kandang: ' . $e->getMessage()); return redirect()->route('cage-management')->with([ 'status' => 'error', 'message' => 'Terjadi kesalahan saat memuat data kandang.', ]); } } public function storeKandang(Request $request) { $validated = $request->validate([ 'nama_kandang' => 'required|string|max:255', 'kapasitas' => 'required|integer|min:1', 'status_kandang' => 'required|in:Aktif,Tidak Aktif', ], [ 'nama_kandang.required' => 'Nama kandang harus diisi.', 'nama_kandang.max' => 'Nama kandang maksimal 255 karakter.', 'kapasitas.required' => 'Kapasitas kandang harus diisi.', 'kapasitas.integer' => 'Kapasitas harus berupa angka.', 'kapasitas.min' => 'Kapasitas kandang minimal 1.', 'status_kandang.required' => 'Status kandang harus dipilih.', 'status_kandang.in' => 'Status kandang tidak valid.', ]); try { $validated['user_id'] = Auth::id(); KandangAyam::create($validated); return redirect()->route('cage-management')->with([ 'status' => 'success', 'message' => 'Kandang berhasil ditambahkan.', ]); } catch (\Exception $e) { Log::error('Gagal menyimpan kandang: ' . $e->getMessage()); return redirect()->route('cage-management')->with([ 'status' => 'error', 'message' => 'Terjadi kesalahan saat menyimpan data kandang.', ]); } } public function updateKandang(Request $request, $id) { $validated = $request->validate([ 'nama_kandang' => 'required|string|max:255', 'kapasitas' => 'required|integer|min:1', 'status_kandang' => 'required|in:Aktif,Tidak Aktif', ], [ 'nama_kandang.required' => 'Nama kandang harus diisi.', 'nama_kandang.max' => 'Nama kandang maksimal 255 karakter.', 'kapasitas.required' => 'Kapasitas kandang harus diisi.', 'kapasitas.integer' => 'Kapasitas harus berupa angka.', 'kapasitas.min' => 'Kapasitas kandang minimal 1.', 'status_kandang.required' => 'Status kandang harus dipilih.', 'status_kandang.in' => 'Status kandang tidak valid.', ]); try { $kandang = KandangAyam::where('id', $id)->where('user_id', Auth::id())->firstOrFail(); if ($kandang->status_kandang === 'Aktif' && $validated['status_kandang'] === 'Tidak Aktif') { $activePopulations = $kandang->populasiAyam() ->whereIn('status_ayam', ['Proses', 'Siap Panen']) ->count(); if ($activePopulations > 0) { return redirect()->back()->with([ 'status' => 'warning', 'message' => "Kandang ini memiliki $activePopulations populasi ayam aktif. Pastikan semua populasi sudah dipanen sebelum menonaktifkan kandang.", ]); } } $kandang->update($validated); return redirect()->route('cage-management')->with([ 'status' => 'success', 'message' => 'Kandang berhasil diperbarui.', ]); } catch (\Exception $e) { Log::error('Gagal menyimpan kandang: ' . $e->getMessage()); return redirect()->route('cage-management')->with([ 'status' => 'error', 'message' => 'Terjadi kesalahan saat menyimpan data kandang.', ]); } } public function destroyKandang($id) { try { $kandang = KandangAyam::where('id', $id)->where('user_id', Auth::id())->firstOrFail(); $kandang->delete(); return response()->json(['success' => true, 'message' => 'Kandang berhasil dihapus.']); } catch (\Exception $e) { Log::error('Gagal menghapus kandang: ' . $e->getMessage()); return response()->json(['success' => false, 'message' => 'Gagal menghapus kandang.'], 500); } } }