diff --git a/app/Http/Controllers/Web/Produktivitas/PraktikBudidayaController.php b/app/Http/Controllers/Web/Produktivitas/PraktikBudidayaController.php new file mode 100644 index 0000000..cee7c7b --- /dev/null +++ b/app/Http/Controllers/Web/Produktivitas/PraktikBudidayaController.php @@ -0,0 +1,24 @@ +where('kategori', 'utama')->values(); $pendapatanKomoditasLainnya = $pendapatanKomoditas->where('kategori', 'lainnya')->values(); $pendapatanLuarPertanian = $sosialEkonomi?->pendapatanLuarPertanian?->values() ?? collect(); + $komoditasPetani = $this->komoditasPetani($petani); return view('produktivitas.petani.sosial-ekonomi.index', compact( 'petani', 'sosialEkonomi', 'pendapatanKomoditasUtama', 'pendapatanKomoditasLainnya', - 'pendapatanLuarPertanian' + 'pendapatanLuarPertanian', + 'komoditasPetani' )); } @@ -56,7 +61,7 @@ class SosialEkonomiController extends Controller return response()->json($sosialEkonomi); } - public function store(Request $request): JsonResponse + public function store(Request $request): JsonResponse|RedirectResponse { $validated = $this->validateData($request); @@ -103,7 +108,7 @@ class SosialEkonomiController extends Controller ]); } - public function update(Request $request, string $id): JsonResponse + public function update(Request $request, string $id): JsonResponse|RedirectResponse { $sosialEkonomi = SosialEkonomi::findOrFail($id); $validated = $this->validateData($request, $sosialEkonomi->id); @@ -201,12 +206,19 @@ class SosialEkonomiController extends Controller private function sosialEkonomiPayload(array $validated): array { - return collect($validated) + $payload = collect($validated) ->except(['pendapatan_komoditas', 'pendapatan_luar_pertanian']) ->merge([ 'uid' => $validated['uid'] ?? 'SEK-' . Str::uuid(), ]) ->all(); + + if (($payload['pihak_membantu_konflik'] ?? null) === 'Tidak ada-selesaikan sendiri') { + $payload['pihak_membantu_konflik_nama'] = null; + $payload['tahun_bantuan_konflik'] = null; + } + + return $payload; } private function syncPendapatanKomoditas(SosialEkonomi $sosialEkonomi, array $items): void @@ -261,4 +273,23 @@ class SosialEkonomiController extends Controller return filled($item['jenis_pekerjaan'] ?? null) || filled($item['estimasi_per_bulan'] ?? null); } + + private function komoditasPetani(Petani $petani) + { + $komoditasIds = Lahan::query() + ->whereNotNull('komoditas_id') + ->where(function ($query) use ($petani) { + $query->where('petani_id', $petani->id); + + if ($petani->profile_id) { + $query->orWhere('profile_id', $petani->profile_id); + } + }) + ->distinct() + ->pluck('komoditas_id'); + + return Komoditas::whereIn('id', $komoditasIds) + ->orderBy('nama') + ->get(); + } } diff --git a/resources/views/produktivitas/petani/header.blade.php b/resources/views/produktivitas/petani/header.blade.php index a41b60f..36625d0 100644 --- a/resources/views/produktivitas/petani/header.blade.php +++ b/resources/views/produktivitas/petani/header.blade.php @@ -72,7 +72,7 @@
| - komoditas) }}"> + @php($selectedKomoditas = old("pendapatan_komoditas.$i.komoditas", $item?->komoditas)) + | - pendapatan) }}"> + @php($pendapatanValue = old("pendapatan_komoditas.$i.pendapatan", $item?->pendapatan)) + |