From 13c71d261277988f055728f30b900371feedb881 Mon Sep 17 00:00:00 2001 From: SyaharaniSalsabilla Date: Mon, 6 Jul 2026 13:29:25 +0700 Subject: [PATCH] sosial ekonomi update --- .../Produktivitas/SosialEkonomiController.php | 77 +++++++++++-------- routes/web.php | 4 +- 2 files changed, 45 insertions(+), 36 deletions(-) diff --git a/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php b/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php index 94ab44a..dfdcf7a 100644 --- a/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php +++ b/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php @@ -43,40 +43,40 @@ class SosialEkonomiController extends Controller } public function index(Request $request, Petani $petani) -{ - $sosialEkonomi = SosialEkonomi::with([ - 'pendapatanKomoditas', + { + $sosialEkonomi = SosialEkonomi::with([ + 'pendapatanKomoditas', + 'pendapatanLuarPertanian', + ]) + ->where('petani_id', $petani->id) + ->first(); + + $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('produktivitas.petani.sosial-ekonomi.index', compact( + 'petani', + 'sosialEkonomi', + 'komoditasPetani', + 'pendapatanKomoditasUtama', + 'pendapatanKomoditasLainnya', 'pendapatanLuarPertanian', - ]) - ->where('petani_id', $petani->id) - ->first(); - - $komoditasPetani = collect(); - - $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 view('produktivitas.petani.sosial-ekonomi.index', compact( - 'petani', - 'sosialEkonomi', - 'komoditasPetani', - 'pendapatanKomoditasUtama', - 'pendapatanKomoditasLainnya', - 'pendapatanLuarPertanian', - )); -} - - public function store(Request $request): JsonResponse|RedirectResponse + 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 +97,7 @@ class SosialEkonomiController extends Controller if (!$request->expectsJson()) { return redirect() - ->route('petani.sosial-ekonomi.edit', $sosialEkonomi->petani_id) + ->route('petani.sosial-ekonomi.index', $sosialEkonomi->petani_id) ->with('success', 'Data sosial ekonomi berhasil disimpan.'); } @@ -122,9 +122,9 @@ class SosialEkonomiController extends Controller ]); } - public function update(Request $request, string $id): JsonResponse|RedirectResponse + public function update(Request $request, Petani|string $petani, ?string $sosialEkonomiId = null): JsonResponse|RedirectResponse { - $sosialEkonomi = SosialEkonomi::findOrFail($id); + $sosialEkonomi = $this->findSosialEkonomi($petani, $sosialEkonomiId); $validated = $this->validateData($request, $sosialEkonomi->id); $sosialEkonomi = DB::transaction(function () use ($request, $validated, $sosialEkonomi) { @@ -149,7 +149,7 @@ class SosialEkonomiController extends Controller if (!$request->expectsJson()) { return redirect() - ->route('petani.sosial-ekonomi.edit', $sosialEkonomi->petani_id) + ->route('petani.sosial-ekonomi.index', $sosialEkonomi->petani_id) ->with('success', 'Data sosial ekonomi berhasil diperbarui.'); } @@ -306,4 +306,13 @@ class SosialEkonomiController extends Controller ->orderBy('nama') ->get(); } + + private function findSosialEkonomi(Petani|string $petani, ?string $sosialEkonomiId = null): SosialEkonomi + { + if ($petani instanceof Petani) { + return SosialEkonomi::where('petani_id', $petani->id)->findOrFail($sosialEkonomiId); + } + + return SosialEkonomi::findOrFail($petani); + } } diff --git a/routes/web.php b/routes/web.php index c9e9466..9a41f09 100644 --- a/routes/web.php +++ b/routes/web.php @@ -195,5 +195,5 @@ Route::middleware('auth') Route::resource('petani.lahan-tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanController::class); Route::resource('petani.lahan-tanaman.tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanTanamanController::class)->only(['show', 'update', 'destroy']); Route::resource('petani.praktik-budidaya', App\Http\Controllers\Web\Produktivitas\PraktikBudidayaController::class); - Route::resource('petani.sosial-ekonomi', App\Http\Controllers\Web\Produktivitas\SosialEkonomiController::class); -}); \ No newline at end of file + Route::resource('petani.sosial-ekonomi', App\Http\Controllers\Web\Produktivitas\SosialEkonomiController::class)->only(['index', 'store', 'update']); +});