This commit is contained in:
2026-07-07 05:17:42 +07:00
5 changed files with 912 additions and 70 deletions
+1
View File
@@ -7,5 +7,6 @@ enum KondisiTanaman: string
case BAIK = 'baik';
case SEDANG = 'sedang';
case BURUK = 'buruk';
case SAKIT= 'sakit';
case MATI = 'mati';
}
@@ -43,40 +43,66 @@ class SosialEkonomiController extends Controller
}
public function index(Request $request, Petani $petani)
{
$sosialEkonomi = SosialEkonomi::with([
'pendapatanKomoditas',
'pendapatanLuarPertanian',
])
->where('petani_id', $petani->id)
->first();
{
$sosialEkonomi = SosialEkonomi::with([
'pendapatanKomoditas',
'pendapatanLuarPertanian',
])
->where('petani_id', $petani->id)
->first();
$komoditasPetani = collect();
if ($sosialEkonomi && !$request->expectsJson()) {
return redirect()->route('petani.sosial-ekonomi.edit', [$petani->id, $sosialEkonomi->id]);
}
$pendapatanKomoditasUtama = $sosialEkonomi?->pendapatanKomoditas
->where('kategori', 'utama') ?? collect();
$pendapatanKomoditasLainnya = $sosialEkonomi?->pendapatanKomoditas
->where('kategori', 'lainnya') ?? collect();
$pendapatanLuarPertanian = $sosialEkonomi?->pendapatanLuarPertanian ?? collect();
if ($request->expectsJson()) {
return response()->json($sosialEkonomi);
return $this->formView($request, $petani, $sosialEkonomi, 'produktivitas.petani.sosial-ekonomi.index');
}
return view('produktivitas.petani.sosial-ekonomi.index', compact(
'petani',
'sosialEkonomi',
'komoditasPetani',
'pendapatanKomoditasUtama',
'pendapatanKomoditasLainnya',
'pendapatanLuarPertanian',
));
}
public function store(Request $request): JsonResponse|RedirectResponse
public function edit(Request $request, string $petani, string $sosial_ekonomi)
{
$petani = Petani::findOrFail($petani);
$sosialEkonomi = SosialEkonomi::findOrFail($sosial_ekonomi);
if ($sosialEkonomi->petani_id !== $petani->id) {
abort(404);
}
$sosialEkonomi->load([
'pendapatanKomoditas',
'pendapatanLuarPertanian',
]);
return $this->formView($request, $petani, $sosialEkonomi, 'produktivitas.petani.sosial-ekonomi.edit');
}
private function formView(Request $request, Petani $petani, ?SosialEkonomi $sosialEkonomi, string $view)
{
$pendapatanKomoditas = $sosialEkonomi?->pendapatanKomoditas ?? collect();
$pendapatanKomoditasUtama = $pendapatanKomoditas->where('kategori', 'utama')->values();
$pendapatanKomoditasLainnya = $pendapatanKomoditas->where('kategori', 'lainnya')->values();
$pendapatanLuarPertanian = $sosialEkonomi?->pendapatanLuarPertanian?->values() ?? collect();
$komoditasPetani = $this->komoditasPetani($petani);
if ($request->expectsJson()) {
return response()->json($sosialEkonomi);
}
return view($view, compact(
'petani',
'sosialEkonomi',
'komoditasPetani',
'pendapatanKomoditasUtama',
'pendapatanKomoditasLainnya',
'pendapatanLuarPertanian',
));
}
public function store(Request $request, ?Petani $petani = null): JsonResponse|RedirectResponse
{
if ($petani) {
$request->merge(['petani_id' => $petani->id]);
}
$validated = $this->validateData($request);
$sosialEkonomi = DB::transaction(function () use ($validated) {
@@ -97,7 +123,7 @@ class SosialEkonomiController extends Controller
if (!$request->expectsJson()) {
return redirect()
->route('petani.sosial-ekonomi.edit', $sosialEkonomi->petani_id)
->route('petani.sosial-ekonomi.edit', [$sosialEkonomi->petani_id, $sosialEkonomi->id])
->with('success', 'Data sosial ekonomi berhasil disimpan.');
}
@@ -122,9 +148,9 @@ class SosialEkonomiController extends Controller
]);
}
public function update(Request $request, string $id): JsonResponse|RedirectResponse
public function update(Request $request, string $petani, string $sosial_ekonomi): JsonResponse|RedirectResponse
{
$sosialEkonomi = SosialEkonomi::findOrFail($id);
$sosialEkonomi = SosialEkonomi::where('petani_id', $petani)->findOrFail($sosial_ekonomi);
$validated = $this->validateData($request, $sosialEkonomi->id);
$sosialEkonomi = DB::transaction(function () use ($request, $validated, $sosialEkonomi) {
@@ -149,7 +175,7 @@ class SosialEkonomiController extends Controller
if (!$request->expectsJson()) {
return redirect()
->route('petani.sosial-ekonomi.edit', $sosialEkonomi->petani_id)
->route('petani.sosial-ekonomi.edit', [$sosialEkonomi->petani_id, $sosialEkonomi->id])
->with('success', 'Data sosial ekonomi berhasil diperbarui.');
}
@@ -306,4 +332,5 @@ class SosialEkonomiController extends Controller
->orderBy('nama')
->get();
}
}