sosial ekonomi update

This commit is contained in:
2026-07-06 13:29:25 +07:00
parent d0e41dc1d2
commit 13c71d2612
2 changed files with 45 additions and 36 deletions
@@ -43,40 +43,40 @@ class SosialEkonomiController extends Controller
} }
public function index(Request $request, Petani $petani) public function index(Request $request, Petani $petani)
{ {
$sosialEkonomi = SosialEkonomi::with([ $sosialEkonomi = SosialEkonomi::with([
'pendapatanKomoditas', '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', '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( public function store(Request $request, ?Petani $petani = null): JsonResponse|RedirectResponse
'petani',
'sosialEkonomi',
'komoditasPetani',
'pendapatanKomoditasUtama',
'pendapatanKomoditasLainnya',
'pendapatanLuarPertanian',
));
}
public function store(Request $request): JsonResponse|RedirectResponse
{ {
if ($petani) {
$request->merge(['petani_id' => $petani->id]);
}
$validated = $this->validateData($request); $validated = $this->validateData($request);
$sosialEkonomi = DB::transaction(function () use ($validated) { $sosialEkonomi = DB::transaction(function () use ($validated) {
@@ -97,7 +97,7 @@ class SosialEkonomiController extends Controller
if (!$request->expectsJson()) { if (!$request->expectsJson()) {
return redirect() 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.'); ->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); $validated = $this->validateData($request, $sosialEkonomi->id);
$sosialEkonomi = DB::transaction(function () use ($request, $validated, $sosialEkonomi) { $sosialEkonomi = DB::transaction(function () use ($request, $validated, $sosialEkonomi) {
@@ -149,7 +149,7 @@ class SosialEkonomiController extends Controller
if (!$request->expectsJson()) { if (!$request->expectsJson()) {
return redirect() 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.'); ->with('success', 'Data sosial ekonomi berhasil diperbarui.');
} }
@@ -306,4 +306,13 @@ class SosialEkonomiController extends Controller
->orderBy('nama') ->orderBy('nama')
->get(); ->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);
}
} }
+1 -1
View File
@@ -195,5 +195,5 @@ Route::middleware('auth')
Route::resource('petani.lahan-tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanController::class); 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.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.praktik-budidaya', App\Http\Controllers\Web\Produktivitas\PraktikBudidayaController::class);
Route::resource('petani.sosial-ekonomi', App\Http\Controllers\Web\Produktivitas\SosialEkonomiController::class); Route::resource('petani.sosial-ekonomi', App\Http\Controllers\Web\Produktivitas\SosialEkonomiController::class)->only(['index', 'store', 'update']);
}); });