From 5cee65f8dfd21535055ed66409b381a64366c42c Mon Sep 17 00:00:00 2001 From: SyaharaniSalsabilla Date: Thu, 2 Jul 2026 14:24:44 +0700 Subject: [PATCH] update field sosial ekonomi --- .../Produktivitas/SosialEkonomiController.php | 39 +++++- .../petani/sosial-ekonomi/index.blade.php | 111 ++++++++++++++++-- 2 files changed, 139 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php b/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php index a229277..900f029 100644 --- a/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php +++ b/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php @@ -3,9 +3,12 @@ namespace App\Http\Controllers\Web\Produktivitas; use App\Http\Controllers\Controller; +use App\Models\Pertanian\Komoditas; +use App\Models\Pertanian\Lahan; use App\Models\Pertanian\Petani; use App\Models\Pertanian\SosialEkonomi; use Illuminate\Http\JsonResponse; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; @@ -27,13 +30,15 @@ class SosialEkonomiController extends Controller $pendapatanKomoditasUtama = $pendapatanKomoditas->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/sosial-ekonomi/index.blade.php b/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php index f173946..57b8c0c 100644 --- a/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php +++ b/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php @@ -50,6 +50,11 @@
Pendapatan dari Komoditas Utama
+ @if($komoditasPetani->isEmpty()) +
+ Petani ini belum memiliki komoditas pada data lahan. Tambahkan data Lahan & Tanaman terlebih dahulu agar pilihan komoditas tersedia. +
+ @endif
@@ -62,10 +67,16 @@ @for($i = 0; $i < 2; $i++) @php($item = $pendapatanKomoditasUtama->get($i)) - + + @for($i = 0; $i < 2; $i++) @php($item = $pendapatanLuarPertanian->get($i)) - +
- komoditas) }}"> + @php($selectedKomoditas = old("pendapatan_komoditas.$i.komoditas", $item?->komoditas)) + pendapatan) }}"> @@ -97,10 +108,16 @@ @for($i = 0; $i < 2; $i++) @php($item = $pendapatanKomoditasLainnya->get($i)) @php($index = $i + 2) -
- komoditas) }}"> + @php($selectedKomoditas = old("pendapatan_komoditas.$index.komoditas", $item?->komoditas)) + pendapatan) }}"> @@ -130,9 +147,9 @@
- jenis_pekerjaan) }}"> + jenis_pekerjaan) }}"> estimasi_per_bulan) }}"> @@ -312,7 +329,87 @@ @endpush