Merge branch 'main' of https://git.probindo.com/Probindo/database-pertani-web
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'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Web\Produktivitas;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
use App\Models\Pertanian\Petani;
|
||||
|
||||
class PendidikanPelatihanController extends Controller
|
||||
{
|
||||
public function index($petaniId, Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$title = 'Petani - Pendidikan dan Pelatihan';
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
|
||||
return view('produktivitas.petani.pendidikan-pelatihan.add', compact('title', 'petani'));
|
||||
}
|
||||
}
|
||||
@@ -80,7 +80,9 @@ class PetaniController extends Controller
|
||||
'kk' => ['nullable', 'min:16', 'max:16'],
|
||||
'file_kk' => ['nullable', 'image', 'mimes:jpeg,jpg,png', 'max:2048'],
|
||||
'foto' => ['nullable', 'image', 'mimes:jpeg,jpg,png', 'max:2048'],
|
||||
'nomor_telepon' => ['nullable', 'numeric', 'max:20'],
|
||||
'nomor_telepon' => ['nullable', 'digits_between:11,13'],
|
||||
], [
|
||||
'nomor_telepon.digits_between' => 'Nomor telepon harus berupa angka 11 sampai 13 digit.',
|
||||
]);
|
||||
|
||||
if ($request->hasFile('file_ktp')) {
|
||||
@@ -162,7 +164,9 @@ class PetaniController extends Controller
|
||||
'kk' => ['nullable', 'min:16', 'max:16'],
|
||||
'file_kk' => ['nullable', 'file', 'mimes:jpeg,jpg,png,pdf', 'max:2048'],
|
||||
'foto' => ['nullable', 'file', 'mimes:jpeg,jpg,png', 'max:2048'],
|
||||
'nomor_telepon' => ['nullable', 'numeric', 'max:20'],
|
||||
'nomor_telepon' => ['nullable', 'digits_between:11,13'],
|
||||
], [
|
||||
'nomor_telepon.digits_between' => 'Nomor telepon harus berupa angka 11 sampai 13 digit.',
|
||||
]);
|
||||
|
||||
if ($request->hasFile('file_ktp')) {
|
||||
|
||||
@@ -5,8 +5,19 @@ namespace App\Http\Controllers\Web\Produktivitas;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Validation\Rules\Enum;
|
||||
|
||||
use App\Models\Pertanian\Petani;
|
||||
use App\Models\Pertanian\PraktikBudidaya;
|
||||
|
||||
use App\Enums\PraktikBudidaya\TenagaKerja;
|
||||
use App\Enums\PraktikBudidaya\FrekuensiPemangkasanUtama;
|
||||
use App\Enums\PraktikBudidaya\FrekuensiPemangkasanPendamping;
|
||||
use App\Enums\PraktikBudidaya\PemberianPupuk;
|
||||
use App\Enums\PraktikBudidaya\JenisPupuk;
|
||||
use App\Enums\PraktikBudidaya\PenyerbukanManual;
|
||||
|
||||
class PraktikBudidayaController extends Controller
|
||||
{
|
||||
@@ -16,9 +27,245 @@ class PraktikBudidayaController extends Controller
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$defaultTeknikPemangkasan = [
|
||||
'Pemangkasan bentuk',
|
||||
'Pemangkasan produksi',
|
||||
'Pemangkasan peremajaan',
|
||||
'Tidak tahu jenis pemangkasannya — dilakukan berdasarkan kebiasaan',
|
||||
];
|
||||
|
||||
$defaultAlasanTidakPenyerbukan = [
|
||||
'Tidak tahu caranya',
|
||||
'Tidak ada tenaga/waktu',
|
||||
'Mengandalkan penyerbuk alami',
|
||||
];
|
||||
|
||||
$defaultFrekuensiPemupukan = [
|
||||
'1 kali/tahun',
|
||||
'2 kali/tahun',
|
||||
'Lebih dari 2 kali/tahun',
|
||||
];
|
||||
|
||||
$defaultWaktuPemberianPupuk = [
|
||||
'Awal musim hujan',
|
||||
'Akhir musim hujan',
|
||||
'Sebelum berbunga',
|
||||
'Sebelum Setelah Panen',
|
||||
'Tidak Menentu',
|
||||
];
|
||||
|
||||
$defaultCaraPemberianPupuk = [
|
||||
'Ditabur di sekitar pohon',
|
||||
'Dibenamkan dalam lubang/parit',
|
||||
'Dicairkan/dikocor',
|
||||
'Disemprotkan ke daun',
|
||||
];
|
||||
|
||||
$defaultSumberAir = [
|
||||
'Sungai/mata air',
|
||||
'Sumur',
|
||||
'Mengandalkan hujan saja',
|
||||
];
|
||||
|
||||
$defaultSistemIrigasi = [
|
||||
'Tidak ada irigasi',
|
||||
'Milik sendiri',
|
||||
'Milik komunitas/kelompok tani',
|
||||
'Milik pemerintah',
|
||||
];
|
||||
|
||||
$title = 'Petani - Praktik Budidaya';
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
$praktikBudidaya = PraktikBudidaya::where('petani_id', $petaniId)->latest()->first();
|
||||
|
||||
$teknikPemangkasan = $praktikBudidaya->teknik_pemangkasan ?? [];
|
||||
$teknikPemangkasanLainnya = collect($teknikPemangkasan)
|
||||
->first(fn ($item) => !in_array($item, $defaultTeknikPemangkasan));
|
||||
|
||||
$alasanTidakPenyerbukan = $praktikBudidaya->deskripsi_tidak_penyerbukan ?? '';
|
||||
$alasanTidakPenyerbukanLainnya = collect(explode(', ', $alasanTidakPenyerbukan))
|
||||
->first(fn ($item) => !in_array($item, $defaultAlasanTidakPenyerbukan));
|
||||
|
||||
$frekuensiPemupukan = $praktikBudidaya->frekuensi_pemupukan ?? '';
|
||||
$frekuensiPemupukanLainnya = collect(explode(', ', $frekuensiPemupukan))
|
||||
->first(fn ($item) => !in_array($item, $defaultFrekuensiPemupukan));
|
||||
|
||||
$waktuPemberianPupuk = $praktikBudidaya->waktu_pemberian_pupuk ?? '';
|
||||
$waktuPemberianPupukLainnya = collect(explode(', ', $waktuPemberianPupuk))
|
||||
->first(fn ($item) => !in_array($item, $defaultWaktuPemberianPupuk));
|
||||
|
||||
$caraPemberianPupuk = $praktikBudidaya->cara_pemberian_pupuk ?? '';
|
||||
$caraPemberianPupukLainnya = collect(explode(', ', $caraPemberianPupuk))
|
||||
->first(fn ($item) => !in_array($item, $defaultCaraPemberianPupuk));
|
||||
|
||||
$sumberAir = $praktikBudidaya->sumber_air ?? '';
|
||||
$sumberAirLainnya = collect(explode(', ', $sumberAir))
|
||||
->first(fn ($item) => !in_array($item, $defaultSumberAir));
|
||||
|
||||
$sistemIrigasi = $praktikBudidaya->sistem_irigasi ?? '';
|
||||
$sistemIrigasiLainnya = collect(explode(', ', $sistemIrigasi))
|
||||
->first(fn ($item) => !in_array($item, $defaultSistemIrigasi));
|
||||
|
||||
return view('produktivitas.petani.praktik-budidaya.add', compact('title', 'petani'));
|
||||
if (!empty($praktikBudidaya)) {
|
||||
return view('produktivitas.petani.praktik-budidaya.edit', compact('title', 'petani', 'praktikBudidaya', 'teknikPemangkasanLainnya', 'alasanTidakPenyerbukanLainnya', 'frekuensiPemupukanLainnya', 'waktuPemberianPupukLainnya', 'caraPemberianPupukLainnya', 'sumberAirLainnya', 'sistemIrigasiLainnya'));
|
||||
}
|
||||
|
||||
return view('produktivitas.petani.praktik-budidaya.add', compact('title', 'petani', 'teknikPemangkasanLainnya', 'alasanTidakPenyerbukanLainnya', 'frekuensiPemupukanLainnya', 'waktuPemberianPupukLainnya', 'caraPemberianPupukLainnya'));
|
||||
}
|
||||
|
||||
public function store($petaniId, Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$validatedData = $request->validate([
|
||||
'tenaga_kerja' => ['nullable', 'string', new Enum(TenagaKerja::class)],
|
||||
'frekuensi_pemangkasan_komoditas_utama' => ['nullable', 'int', new Enum(FrekuensiPemangkasanUtama::class)],
|
||||
'teknik_pemangkasan' => ['nullable', 'array'],
|
||||
'teknik_pemangkasan_lainnya' => ['nullable', 'string'],
|
||||
'frekuensi_pemangkasan_pohon_penaung' => ['nullable', 'string', new Enum(FrekuensiPemangkasanPendamping::class)],
|
||||
|
||||
'penyerbukan_manual' => ['nullable', 'string', new Enum(PenyerbukanManual::class)],
|
||||
'alasan_tidak_penyerbukan' => ['nullable', 'string'],
|
||||
'alasan_tidak_penyerbukan_lainnya' => ['nullable', 'string'],
|
||||
'tingkat_keberhasilan_penyerbukan' => ['nullable', 'string'],
|
||||
'pemberian_pupuk' => ['nullable', 'int', new Enum(PemberianPupuk::class)],
|
||||
'jenis_pupuk' => ['nullable', 'string', new Enum(JenisPupuk::class)],
|
||||
'frekuensi_pemupukan' => ['nullable', 'string'],
|
||||
'frekuensi_pemupukan_lainnya' => ['nullable', 'string'],
|
||||
'estimasi_dosis_pupuk_organik' => ['nullable', 'string'],
|
||||
'estimasi_dosis_pupuk_anorganik' => ['nullable', 'string'],
|
||||
'waktu_pemberian_pupuk' => ['nullable', 'string'],
|
||||
'waktu_pemberian_pupuk_lainnya' => ['nullable', 'string'],
|
||||
'cara_pemberian_pupuk' => ['nullable', 'string'],
|
||||
'cara_pemberian_pupuk_lainnya' => ['nullable', 'string'],
|
||||
]);
|
||||
|
||||
$teknik_pemangkasan = $request->teknik_pemangkasan ?? [];
|
||||
|
||||
if (($key = array_search('Lainnya', $teknik_pemangkasan)) !== false) {
|
||||
unset($teknik_pemangkasan[$key]);
|
||||
|
||||
if (!empty($request->teknik_pemangkasan_lainnya)) {
|
||||
$teknik_pemangkasan[] = $request->teknik_pemangkasan_lainnya;
|
||||
}
|
||||
}
|
||||
|
||||
$teknik_pemangkasan = array_values($teknik_pemangkasan);
|
||||
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
|
||||
$praktikBudidaya = $petani->praktik_budidaya()->create([
|
||||
'petani_id' => $petani->id,
|
||||
'uid' => 'PB-' . strtoupper(Str::random(10)),
|
||||
'tenaga_kerja' => $validatedData['tenaga_kerja'],
|
||||
'frekuensi_pemangkasan_utama' => $validatedData['frekuensi_pemangkasan_komoditas_utama'],
|
||||
|
||||
'teknik_pemangkasan' => $teknik_pemangkasan,
|
||||
|
||||
'frekuensi_pemangkasan_penaung' => $validatedData['frekuensi_pemangkasan_pohon_penaung'],
|
||||
'penyerbukan_manual' => $validatedData['penyerbukan_manual'] ?? null,
|
||||
'deskripsi_penyerbukan_manual' => $validatedData['alasan_tidak_penyerbukan'] ?? null,
|
||||
'tingkat_keberhasilan_penyerbukan' => $validatedData['tingkat_keberhasilan_penyerbukan'] ?? null,
|
||||
'pemberian_pupuk' => $validatedData['pemberian_pupuk'] ?? null,
|
||||
'jenis_pupuk' => $validatedData['jenis_pupuk'] ?? null,
|
||||
'frekuensi_pemberian_pupuk' => ($validatedData['frekuensi_pemupukan'] ?? null) === 'Lainnya' ? ($validatedData['frekuensi_pemupukan_lainnya'] ?? null) : ($validatedData['frekuensi_pemupukan'] ?? null),
|
||||
'estimasi_dosis_pupuk_organik' => $validatedData['estimasi_dosis_pupuk_organik'] ?? null,
|
||||
'estimasi_dosis_pupuk_anorganik' => $validatedData['estimasi_dosis_pupuk_anorganik'] ?? null,
|
||||
'waktu_pemberian_pupuk' => ($validatedData['waktu_pemberian_pupuk'] ?? null) === 'Lainnya' ? ($validatedData['waktu_pemberian_pupuk_lainnya'] ?? null) : ($validatedData['waktu_pemberian_pupuk'] ?? null),
|
||||
'cara_pemberian_pupuk' => ($validatedData['cara_pemberian_pupuk'] ?? null) === 'Lainnya' ? ($validatedData['cara_pemberian_pupuk_lainnya'] ?? null) : ($validatedData['cara_pemberian_pupuk'] ?? null),
|
||||
]);
|
||||
|
||||
return redirect()->route('petani.praktik-budidaya.edit', [$petani->id , $praktikBudidaya->id])
|
||||
->with('success', 'Data praktik budidaya berhasil disimpan.');
|
||||
}
|
||||
|
||||
public function edit($petaniId, $praktikBudidayaId)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$defaultTeknikPemangkasan = [
|
||||
'Pemangkasan bentuk',
|
||||
'Pemangkasan produksi',
|
||||
'Pemangkasan peremajaan',
|
||||
'Tidak tahu jenis pemangkasannya — dilakukan berdasarkan kebiasaan',
|
||||
];
|
||||
|
||||
$defaultAlasanTidakPenyerbukan = [
|
||||
'Tidak tahu caranya',
|
||||
'Tidak ada tenaga/waktu',
|
||||
'Mengandalkan penyerbuk alami',
|
||||
];
|
||||
|
||||
$defaultFrekuensiPemupukan = [
|
||||
'1 kali/tahun',
|
||||
'2 kali/tahun',
|
||||
'Lebih dari 2 kali/tahun',
|
||||
];
|
||||
|
||||
$defaultWaktuPemberianPupuk = [
|
||||
'Awal musim hujan',
|
||||
'Akhir musim hujan',
|
||||
'Sebelum berbunga',
|
||||
'Sebelum Setelah Panen',
|
||||
'Tidak Menentu',
|
||||
];
|
||||
|
||||
$defaultCaraPemberianPupuk = [
|
||||
'Ditabur di sekitar pohon',
|
||||
'Dibenamkan dalam lubang/parit',
|
||||
'Dicairkan/dikocor',
|
||||
'Disemprotkan ke daun',
|
||||
];
|
||||
|
||||
$defaultSumberAir = [
|
||||
'Sungai/mata air',
|
||||
'Sumur',
|
||||
'Mengandalkan hujan saja',
|
||||
];
|
||||
|
||||
$defaultSistemIrigasi = [
|
||||
'Tidak ada irigasi',
|
||||
'Milik sendiri',
|
||||
'Milik komunitas/kelompok tani',
|
||||
'Milik pemerintah',
|
||||
];
|
||||
|
||||
$title = 'Petani - Praktik Budidaya';
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
$praktikBudidaya = PraktikBudidaya::where('petani_id', $petaniId)->where('id', $praktikBudidayaId)->latest()->first();
|
||||
|
||||
$teknikPemangkasan = $praktikBudidaya->teknik_pemangkasan ?? [];
|
||||
$teknikPemangkasanLainnya = collect($teknikPemangkasan)
|
||||
->first(fn ($item) => !in_array($item, $defaultTeknikPemangkasan));
|
||||
|
||||
$alasanTidakPenyerbukan = $praktikBudidaya->deskripsi_tidak_penyerbukan ?? '';
|
||||
$alasanTidakPenyerbukanLainnya = collect(explode(', ', $alasanTidakPenyerbukan))
|
||||
->first(fn ($item) => !in_array($item, $defaultAlasanTidakPenyerbukan));
|
||||
|
||||
$frekuensiPemupukan = $praktikBudidaya->frekuensi_pemupukan ?? '';
|
||||
$frekuensiPemupukanLainnya = collect(explode(', ', $frekuensiPemupukan))
|
||||
->first(fn ($item) => !in_array($item, $defaultFrekuensiPemupukan));
|
||||
|
||||
$waktuPemberianPupuk = $praktikBudidaya->waktu_pemberian_pupuk ?? '';
|
||||
$waktuPemberianPupukLainnya = collect(explode(', ', $waktuPemberianPupuk))
|
||||
->first(fn ($item) => !in_array($item, $defaultWaktuPemberianPupuk));
|
||||
|
||||
$caraPemberianPupuk = $praktikBudidaya->cara_pemberian_pupuk ?? '';
|
||||
$caraPemberianPupukLainnya = collect(explode(', ', $caraPemberianPupuk))
|
||||
->first(fn ($item) => !in_array($item, $defaultCaraPemberianPupuk));
|
||||
|
||||
$sumberAir = $praktikBudidaya->sumber_air ?? '';
|
||||
$sumberAirLainnya = collect(explode(', ', $sumberAir))
|
||||
->first(fn ($item) => !in_array($item, $defaultSumberAir));
|
||||
|
||||
$sistemIrigasi = $praktikBudidaya->sistem_irigasi ?? '';
|
||||
$sistemIrigasiLainnya = collect(explode(', ', $sistemIrigasi))
|
||||
->first(fn ($item) => !in_array($item, $defaultSistemIrigasi));
|
||||
|
||||
return view('produktivitas.petani.praktik-budidaya.edit', compact('title', 'petani', 'praktikBudidaya', 'teknikPemangkasanLainnya', 'alasanTidakPenyerbukanLainnya', 'frekuensiPemupukanLainnya', 'waktuPemberianPupukLainnya', 'caraPemberianPupukLainnya', 'sumberAirLainnya', 'sistemIrigasiLainnya'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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