122 lines
4.9 KiB
PHP
122 lines
4.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\KandangAyam;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class KandangAyamController extends Controller
|
|
{
|
|
public function indexKandangManagement(Request $request)
|
|
{
|
|
try {
|
|
$kandangPage = $request->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);
|
|
}
|
|
}
|
|
}
|