diff --git a/app/Enums/KondisiTanaman.php b/app/Enums/KondisiTanaman.php index a1a8c64..00c44e3 100644 --- a/app/Enums/KondisiTanaman.php +++ b/app/Enums/KondisiTanaman.php @@ -7,5 +7,6 @@ enum KondisiTanaman: string case BAIK = 'baik'; case SEDANG = 'sedang'; case BURUK = 'buruk'; + case SAKIT= 'sakit'; case MATI = 'mati'; } diff --git a/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php b/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php index 94ab44a..6834594 100644 --- a/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php +++ b/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php @@ -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(); } + } diff --git a/resources/views/produktivitas/petani/sosial-ekonomi/edit.blade.php b/resources/views/produktivitas/petani/sosial-ekonomi/edit.blade.php new file mode 100644 index 0000000..d440615 --- /dev/null +++ b/resources/views/produktivitas/petani/sosial-ekonomi/edit.blade.php @@ -0,0 +1,628 @@ +@extends('layout.main') + +@section('content') +
| Komoditas | -Pendapatan (Rp) | +Pendapatan | Periode |
@php($pendapatanValue = old("pendapatan_komoditas.$index.pendapatan", $item?->pendapatan))
-
+
+ Rp
+
+
|
-
+ @php($periodeValue = old("pendapatan_komoditas.$index.periode", $item?->periode))
+
+
+
+
+
+
+
+
+
+ |
@endfor
|---|
| Jenis Pekerjaan | -Estimasi per Bulan (Rp) | +Estimasi per Bulan |
@php($estimasiValue = old("pendapatan_luar_pertanian.$i.estimasi_per_bulan", $item?->estimasi_per_bulan))
-
+
+ Rp
+
+
|
@endfor
|---|