enums sosial ekonomi
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Web\Dashboard;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
class DistribusiController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
if (!Gate::allows('super_admin') && !Gate::allows('admin')) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$title = 'Distribusi Dashboard';
|
||||
|
||||
return view('dashboard.distribusi', compact('title'));
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,15 @@
|
||||
namespace App\Http\Controllers\Web\Produktivitas;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Enums\KategoriPendapatanKomoditas;
|
||||
use App\Enums\PeriodePendapatan;
|
||||
use App\Enums\PihakMembantuKonflik;
|
||||
use App\Enums\SkorKecukupanPenghasilan;
|
||||
use App\Enums\SkorKejelasanStatusLahan;
|
||||
use App\Enums\SkorKemampuanMenabung;
|
||||
use App\Enums\SkorPeriodePaceklik;
|
||||
use App\Enums\StatusKepemilikanLahanSosialEkonomi;
|
||||
use App\Enums\StatusKonflik;
|
||||
use App\Models\Pertanian\Komoditas;
|
||||
use App\Models\Pertanian\Lahan;
|
||||
use App\Models\Pertanian\Petani;
|
||||
@@ -32,14 +41,14 @@ class SosialEkonomiController extends Controller
|
||||
$pendapatanLuarPertanian = $sosialEkonomi?->pendapatanLuarPertanian?->values() ?? collect();
|
||||
$komoditasPetani = $this->komoditasPetani($petani);
|
||||
|
||||
return view('produktivitas.petani.sosial-ekonomi.index', compact(
|
||||
return view('produktivitas.petani.sosial-ekonomi.index', array_merge(compact(
|
||||
'petani',
|
||||
'sosialEkonomi',
|
||||
'pendapatanKomoditasUtama',
|
||||
'pendapatanKomoditasLainnya',
|
||||
'pendapatanLuarPertanian',
|
||||
'komoditasPetani'
|
||||
));
|
||||
), $this->sosialEkonomiOptions()));
|
||||
}
|
||||
|
||||
public function index(Request $request, Petani $petani)
|
||||
@@ -87,14 +96,14 @@ class SosialEkonomiController extends Controller
|
||||
return response()->json($sosialEkonomi);
|
||||
}
|
||||
|
||||
return view($view, compact(
|
||||
return view($view, array_merge(compact(
|
||||
'petani',
|
||||
'sosialEkonomi',
|
||||
'komoditasPetani',
|
||||
'pendapatanKomoditasUtama',
|
||||
'pendapatanKomoditasLainnya',
|
||||
'pendapatanLuarPertanian',
|
||||
));
|
||||
), $this->sosialEkonomiOptions()));
|
||||
}
|
||||
|
||||
public function store(Request $request, ?Petani $petani = null): JsonResponse|RedirectResponse
|
||||
@@ -214,29 +223,29 @@ class SosialEkonomiController extends Controller
|
||||
'jumlah_tanggungan' => ['nullable', 'integer', 'min:0'],
|
||||
'anak_masih_sekolah' => ['nullable', 'integer', 'min:0'],
|
||||
'yang_ikut_bekerja' => ['nullable', 'integer', 'min:0'],
|
||||
'skor_periode_paceklik' => ['nullable', 'integer', 'min:1', 'max:5'],
|
||||
'skor_periode_paceklik' => ['nullable', 'integer', Rule::in(SkorPeriodePaceklik::values())],
|
||||
'bulan_paceklik' => ['nullable', 'string', 'max:255'],
|
||||
'sumber_penghasilan_paceklik' => ['nullable', 'string'],
|
||||
'total_estimasi_biaya_kebun_per_musim' => ['nullable', 'integer', 'min:0'],
|
||||
'skor_kemampuan_menabung' => ['nullable', 'integer', 'min:1', 'max:5'],
|
||||
'skor_kemampuan_menabung' => ['nullable', 'integer', Rule::in(SkorKemampuanMenabung::values())],
|
||||
'estimasi_tabungan_per_bulan' => ['nullable', 'integer', 'min:0'],
|
||||
'skor_kecukupan_penghasilan' => ['nullable', 'integer', 'min:1', 'max:5'],
|
||||
'skor_kecukupan_penghasilan' => ['nullable', 'integer', Rule::in(SkorKecukupanPenghasilan::values())],
|
||||
'alasan_kecukupan_penghasilan' => ['nullable', 'string'],
|
||||
'status_kepemilikan_lahan' => ['nullable', 'string', 'max:255'],
|
||||
'skor_kejelasan_status_lahan' => ['nullable', 'integer', 'min:1', 'max:5'],
|
||||
'status_kepemilikan_lahan' => ['nullable', 'string', Rule::in(StatusKepemilikanLahanSosialEkonomi::values())],
|
||||
'skor_kejelasan_status_lahan' => ['nullable', 'integer', Rule::in(SkorKejelasanStatusLahan::values())],
|
||||
'ada_sertifikat_dokumen' => ['nullable', 'boolean'],
|
||||
'ada_sengketa' => ['nullable', 'boolean'],
|
||||
'keterangan_sengketa' => ['nullable', 'string'],
|
||||
'pihak_membantu_konflik' => ['nullable', 'string', 'max:255'],
|
||||
'pihak_membantu_konflik' => ['nullable', 'string', Rule::in(PihakMembantuKonflik::values())],
|
||||
'pihak_membantu_konflik_nama' => ['nullable', 'string', 'max:255'],
|
||||
'tahun_bantuan_konflik' => ['nullable', 'integer', 'digits:4'],
|
||||
'status_konflik' => ['nullable', 'string', 'max:255'],
|
||||
'status_konflik' => ['nullable', 'string', Rule::in(StatusKonflik::values())],
|
||||
|
||||
'pendapatan_komoditas' => ['nullable', 'array'],
|
||||
'pendapatan_komoditas.*.kategori' => ['required_with:pendapatan_komoditas', 'string', 'in:utama,lainnya'],
|
||||
'pendapatan_komoditas.*.kategori' => ['required_with:pendapatan_komoditas', 'string', Rule::in(KategoriPendapatanKomoditas::values())],
|
||||
'pendapatan_komoditas.*.komoditas' => ['nullable', 'string', 'max:255'],
|
||||
'pendapatan_komoditas.*.pendapatan' => ['nullable', 'integer', 'min:0'],
|
||||
'pendapatan_komoditas.*.periode' => ['nullable', 'string', 'in:musim,tahun'],
|
||||
'pendapatan_komoditas.*.periode' => ['nullable', 'string', Rule::in(PeriodePendapatan::values())],
|
||||
|
||||
'pendapatan_luar_pertanian' => ['nullable', 'array'],
|
||||
'pendapatan_luar_pertanian.*.jenis_pekerjaan' => ['nullable', 'string', 'max:255'],
|
||||
@@ -253,7 +262,9 @@ class SosialEkonomiController extends Controller
|
||||
])
|
||||
->all();
|
||||
|
||||
if (($payload['pihak_membantu_konflik'] ?? null) === 'Tidak ada-selesaikan sendiri') {
|
||||
$payload = $this->normalizeSkorPayload($payload);
|
||||
|
||||
if (($payload['pihak_membantu_konflik'] ?? null) === PihakMembantuKonflik::TIDAK_ADA_SELESAIKAN_SENDIRI->value) {
|
||||
$payload['pihak_membantu_konflik_nama'] = null;
|
||||
$payload['tahun_bantuan_konflik'] = null;
|
||||
}
|
||||
@@ -261,6 +272,22 @@ class SosialEkonomiController extends Controller
|
||||
return $payload;
|
||||
}
|
||||
|
||||
private function normalizeSkorPayload(array $payload): array
|
||||
{
|
||||
foreach ([
|
||||
'skor_periode_paceklik',
|
||||
'skor_kemampuan_menabung',
|
||||
'skor_kecukupan_penghasilan',
|
||||
'skor_kejelasan_status_lahan',
|
||||
] as $field) {
|
||||
if (array_key_exists($field, $payload) && !is_null($payload[$field]) && $payload[$field] !== '') {
|
||||
$payload[$field] = (int) $payload[$field];
|
||||
}
|
||||
}
|
||||
|
||||
return $payload;
|
||||
}
|
||||
|
||||
private function syncPendapatanKomoditas(SosialEkonomi $sosialEkonomi, array $items): void
|
||||
{
|
||||
$sosialEkonomi->pendapatanKomoditas()->delete();
|
||||
@@ -333,4 +360,18 @@ class SosialEkonomiController extends Controller
|
||||
->get();
|
||||
}
|
||||
|
||||
private function sosialEkonomiOptions(): array
|
||||
{
|
||||
return [
|
||||
'periodePaceklikOptions' => SkorPeriodePaceklik::options(),
|
||||
'kemampuanMenabungOptions' => SkorKemampuanMenabung::options(),
|
||||
'kecukupanPenghasilanOptions' => SkorKecukupanPenghasilan::options(),
|
||||
'kejelasanStatusLahanOptions' => SkorKejelasanStatusLahan::options(),
|
||||
'statusKepemilikanLahanOptions' => StatusKepemilikanLahanSosialEkonomi::options(),
|
||||
'pihakMembantuKonflikOptions' => PihakMembantuKonflik::options(),
|
||||
'pihakMembantuTanpaBantuanValue' => PihakMembantuKonflik::TIDAK_ADA_SELESAIKAN_SENDIRI->value,
|
||||
'statusKonflikOptions' => StatusKonflik::options(),
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user