TIF_NGANJUK_E41212146/app/Http/Controllers/KandangAyamController.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);
}
}
}