update field sosial ekonomi

This commit is contained in:
2026-07-02 14:24:44 +07:00
parent 5c1fe22fa0
commit 5cee65f8df
2 changed files with 139 additions and 11 deletions
@@ -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();
}
}