update skoring
This commit is contained in:
@@ -404,6 +404,7 @@ class SosialEkonomiController extends Controller
|
|||||||
if ($section === 'akses_keuangan') {
|
if ($section === 'akses_keuangan') {
|
||||||
$pengalamanKredit = (int) $request->input('pengalaman_kredit_kebun');
|
$pengalamanKredit = (int) $request->input('pengalaman_kredit_kebun');
|
||||||
$kondisiAset = (int) $request->input('kondisi_aset_produktif');
|
$kondisiAset = (int) $request->input('kondisi_aset_produktif');
|
||||||
|
$tidakPernahMenerimaProgram = (int) $request->input('keterlibatan_program_keuangan_formal') === KeterlibatanProgramKeuanganFormal::TIDAK_PERNAH_MENERIMA->value;
|
||||||
|
|
||||||
$rules = array_merge($rules, [
|
$rules = array_merge($rules, [
|
||||||
'status_rekening_tabungan' => ['required', 'integer', Rule::in(StatusRekeningTabungan::values())],
|
'status_rekening_tabungan' => ['required', 'integer', Rule::in(StatusRekeningTabungan::values())],
|
||||||
@@ -448,17 +449,17 @@ class SosialEkonomiController extends Controller
|
|||||||
'string',
|
'string',
|
||||||
],
|
],
|
||||||
'keterlibatan_program_keuangan_formal' => ['required', 'integer', Rule::in(KeterlibatanProgramKeuanganFormal::values())],
|
'keterlibatan_program_keuangan_formal' => ['required', 'integer', Rule::in(KeterlibatanProgramKeuanganFormal::values())],
|
||||||
'status_program_keuangan_formal' => ['required', 'array'],
|
'status_program_keuangan_formal' => [Rule::requiredIf(fn () => !$tidakPernahMenerimaProgram), 'nullable', 'array'],
|
||||||
'status_program_keuangan_formal.pkh' => ['required', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
'status_program_keuangan_formal.pkh' => [Rule::requiredIf(fn () => !$tidakPernahMenerimaProgram), 'nullable', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
||||||
'status_program_keuangan_formal.blt' => ['required', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
'status_program_keuangan_formal.blt' => [Rule::requiredIf(fn () => !$tidakPernahMenerimaProgram), 'nullable', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
||||||
'status_program_keuangan_formal.kur' => ['required', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
'status_program_keuangan_formal.kur' => [Rule::requiredIf(fn () => !$tidakPernahMenerimaProgram), 'nullable', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
||||||
'status_program_keuangan_formal.kredit_koperasi_resmi' => ['required', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
'status_program_keuangan_formal.kredit_koperasi_resmi' => [Rule::requiredIf(fn () => !$tidakPernahMenerimaProgram), 'nullable', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
||||||
'status_program_keuangan_formal.credit_union_cu' => ['required', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
'status_program_keuangan_formal.credit_union_cu' => [Rule::requiredIf(fn () => !$tidakPernahMenerimaProgram), 'nullable', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
||||||
'status_program_keuangan_formal.pinjaman_bumdes' => ['required', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
'status_program_keuangan_formal.pinjaman_bumdes' => [Rule::requiredIf(fn () => !$tidakPernahMenerimaProgram), 'nullable', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
||||||
'status_program_keuangan_formal.modal_hibah_dinas_pertanian' => ['required', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
'status_program_keuangan_formal.modal_hibah_dinas_pertanian' => [Rule::requiredIf(fn () => !$tidakPernahMenerimaProgram), 'nullable', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
||||||
'status_program_keuangan_formal.lainnya' => ['nullable', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
'status_program_keuangan_formal.lainnya' => ['nullable', 'string', Rule::in(StatusProgramKeuanganFormal::values())],
|
||||||
'program_keuangan_formal_lainnya_nama' => [
|
'program_keuangan_formal_lainnya_nama' => [
|
||||||
Rule::requiredIf(fn () => filled($request->input('status_program_keuangan_formal.lainnya'))),
|
Rule::requiredIf(fn () => !$tidakPernahMenerimaProgram && filled($request->input('status_program_keuangan_formal.lainnya'))),
|
||||||
'nullable',
|
'nullable',
|
||||||
'string',
|
'string',
|
||||||
'max:255',
|
'max:255',
|
||||||
@@ -610,6 +611,14 @@ class SosialEkonomiController extends Controller
|
|||||||
$payload['jenis_aset_produktif_lainnya'] = null;
|
$payload['jenis_aset_produktif_lainnya'] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
array_key_exists('keterlibatan_program_keuangan_formal', $payload)
|
||||||
|
&& (int) ($payload['keterlibatan_program_keuangan_formal'] ?? 0) === KeterlibatanProgramKeuanganFormal::TIDAK_PERNAH_MENERIMA->value
|
||||||
|
) {
|
||||||
|
$payload['status_program_keuangan_formal'] = null;
|
||||||
|
$payload['program_keuangan_formal_lainnya_nama'] = null;
|
||||||
|
}
|
||||||
|
|
||||||
if (!filled($payload['status_program_keuangan_formal']['lainnya'] ?? null)) {
|
if (!filled($payload['status_program_keuangan_formal']['lainnya'] ?? null)) {
|
||||||
$payload['program_keuangan_formal_lainnya_nama'] = null;
|
$payload['program_keuangan_formal_lainnya_nama'] = null;
|
||||||
}
|
}
|
||||||
@@ -920,6 +929,7 @@ class SosialEkonomiController extends Controller
|
|||||||
'jenisAsetProduktifOptions' => JenisAsetProduktif::options(),
|
'jenisAsetProduktifOptions' => JenisAsetProduktif::options(),
|
||||||
'jenisAsetLainnyaValue' => JenisAsetProduktif::LAINNYA->value,
|
'jenisAsetLainnyaValue' => JenisAsetProduktif::LAINNYA->value,
|
||||||
'keterlibatanProgramKeuanganFormalOptions' => KeterlibatanProgramKeuanganFormal::options(),
|
'keterlibatanProgramKeuanganFormalOptions' => KeterlibatanProgramKeuanganFormal::options(),
|
||||||
|
'keterlibatanProgramKeuanganFormalTidakPernahValue' => KeterlibatanProgramKeuanganFormal::TIDAK_PERNAH_MENERIMA->value,
|
||||||
'statusProgramKeuanganFormalOptions' => StatusProgramKeuanganFormal::options(),
|
'statusProgramKeuanganFormalOptions' => StatusProgramKeuanganFormal::options(),
|
||||||
'programKeuanganFormalRows' => [
|
'programKeuanganFormalRows' => [
|
||||||
'pkh' => 'PKH',
|
'pkh' => 'PKH',
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ class Petani extends Model
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return round($nilai->sum(fn ($value) => (int) $value) * 0.1, 1);
|
return round($nilai->sum(fn ($value) => (int) $value) * 0.2, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function skorPendidikan(): ?float
|
public function skorPendidikan(): ?float
|
||||||
@@ -242,10 +242,10 @@ class Petani extends Model
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$nilai = collect([
|
$nilai = collect(Schema::getColumnListing($aksesPasar->getTable()))
|
||||||
$aksesPasar->skor_pengalaman,
|
->filter(fn ($field) => str_starts_with($field, 'skor_'))
|
||||||
$aksesPasar->skor_kesadaran_premium,
|
->map(fn ($field) => $aksesPasar->getAttribute($field))
|
||||||
])->filter(fn ($value) => !is_null($value) && $value !== '');
|
->filter(fn ($value) => !is_null($value) && $value !== '');
|
||||||
|
|
||||||
if ($nilai->isEmpty()) {
|
if ($nilai->isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -165,31 +165,18 @@
|
|||||||
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Sosial Ekonomi</p>
|
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Sosial Ekonomi</p>
|
||||||
@php
|
@php
|
||||||
$sosialEkonomi = isset($petani) ? $petani->sosialEkonomi : null;
|
$sosialEkonomi = isset($petani) ? $petani->sosialEkonomi : null;
|
||||||
$skorSosialEkonomi = null;
|
$skorSosialEkonomi = isset($petani) ? $petani->skorSosialEkonomi() : null;
|
||||||
$skorSosialEkonomiBulat = null;
|
$skorSosialEkonomiBulat = is_null($skorSosialEkonomi) ? null : (int) round($skorSosialEkonomi);
|
||||||
|
|
||||||
if($sosialEkonomi) {
|
|
||||||
$enumValue = fn ($value) => $value instanceof \BackedEnum ? $value->value : $value;
|
|
||||||
|
|
||||||
$periodePaceklik = (int) ($enumValue($sosialEkonomi->skor_periode_paceklik) ?? 0);
|
|
||||||
$kemampuanMenabung = (int) ($enumValue($sosialEkonomi->skor_kemampuan_menabung) ?? 0);
|
|
||||||
$kecukupanPenghasilan = (int) ($enumValue($sosialEkonomi->skor_kecukupan_penghasilan) ?? 0);
|
|
||||||
$kejelasanStatusLahan = (int) ($enumValue($sosialEkonomi->skor_kejelasan_status_lahan) ?? 0);
|
|
||||||
|
|
||||||
$totalSkor = $periodePaceklik + $kemampuanMenabung + $kecukupanPenghasilan + $kejelasanStatusLahan;
|
|
||||||
$skorSosialEkonomi = ($totalSkor * 20) / 100;
|
|
||||||
$skorSosialEkonomiBulat = (int) round($skorSosialEkonomi);
|
|
||||||
}
|
|
||||||
@endphp
|
@endphp
|
||||||
<h5 class="mb-0">
|
<h5 class="mb-0">
|
||||||
@if($sosialEkonomi)
|
@if(!is_null($skorSosialEkonomi))
|
||||||
{{ number_format($skorSosialEkonomiBulat, 0, ',', '.') }}%
|
{{ number_format($skorSosialEkonomiBulat, 0, ',', '.') }}%
|
||||||
@else
|
@else
|
||||||
-
|
-
|
||||||
@endif
|
@endif
|
||||||
</h5>
|
</h5>
|
||||||
<p class="mb-0" style="font-size: 0.75rem;">
|
<p class="mb-0" style="font-size: 0.75rem;">
|
||||||
@if($sosialEkonomi)
|
@if(!is_null($skorSosialEkonomi))
|
||||||
<span class="me-1">Skor {{ number_format($skorSosialEkonomi, 1) }}</span>
|
<span class="me-1">Skor {{ number_format($skorSosialEkonomi, 1) }}</span>
|
||||||
@else
|
@else
|
||||||
<span class="me-1">Belum isi</span>
|
<span class="me-1">Belum isi</span>
|
||||||
@@ -209,25 +196,22 @@
|
|||||||
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Akses Pasar</p>
|
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Akses Pasar</p>
|
||||||
@php
|
@php
|
||||||
$aksesPasar = isset($petani) ? $petani->aksesPasar : null;
|
$aksesPasar = isset($petani) ? $petani->aksesPasar : null;
|
||||||
$skorAksesPasar = null;
|
$skorAksesPasar = isset($petani) ? $petani->skorAksesPasar() : null;
|
||||||
$skorAksesPasarBulat = null;
|
$skorAksesPasarBulat = null;
|
||||||
|
|
||||||
if($aksesPasar) {
|
if(!is_null($skorAksesPasar)) {
|
||||||
$totalSkorAksesPasar = (int) ($aksesPasar->skor_pengalaman ?? 0)
|
|
||||||
+ (int) ($aksesPasar->skor_kesadaran_premium ?? 0);
|
|
||||||
$skorAksesPasar = ($totalSkorAksesPasar * 10) / 100;
|
|
||||||
$skorAksesPasarBulat = (int) round($skorAksesPasar);
|
$skorAksesPasarBulat = (int) round($skorAksesPasar);
|
||||||
}
|
}
|
||||||
@endphp
|
@endphp
|
||||||
<h5 class="mb-0">
|
<h5 class="mb-0">
|
||||||
@if($aksesPasar)
|
@if(!is_null($skorAksesPasar))
|
||||||
{{ number_format($skorAksesPasarBulat, 0, ',', '.') }}%
|
{{ number_format($skorAksesPasarBulat, 0, ',', '.') }}%
|
||||||
@else
|
@else
|
||||||
-
|
-
|
||||||
@endif
|
@endif
|
||||||
</h5>
|
</h5>
|
||||||
<p class="mb-0" style="font-size: 0.75rem;">
|
<p class="mb-0" style="font-size: 0.75rem;">
|
||||||
@if($aksesPasar)
|
@if(!is_null($skorAksesPasar))
|
||||||
<span class="me-1">Skor {{ number_format($skorAksesPasar, 1) }}</span>
|
<span class="me-1">Skor {{ number_format($skorAksesPasar, 1) }}</span>
|
||||||
@else
|
@else
|
||||||
<span class="me-1">Belum isi</span>
|
<span class="me-1">Belum isi</span>
|
||||||
|
|||||||
@@ -1057,6 +1057,7 @@
|
|||||||
const alasanKreditLainnya = @json($alasanKreditLainnyaValue);
|
const alasanKreditLainnya = @json($alasanKreditLainnyaValue);
|
||||||
const kondisiAsetTidakAda = String(@json($kondisiAsetTidakAdaValue));
|
const kondisiAsetTidakAda = String(@json($kondisiAsetTidakAdaValue));
|
||||||
const jenisAsetLainnya = @json($jenisAsetLainnyaValue);
|
const jenisAsetLainnya = @json($jenisAsetLainnyaValue);
|
||||||
|
const keterlibatanProgramTidakPernah = String(@json($keterlibatanProgramKeuanganFormalTidakPernahValue));
|
||||||
const pernahBantuanNgoPerusahaanPernah = @json($pernahBantuanNgoPerusahaanPernahValue);
|
const pernahBantuanNgoPerusahaanPernah = @json($pernahBantuanNgoPerusahaanPernahValue);
|
||||||
const pinjamanTokohAdatAda = @json($pinjamanTokohAdatAdaValue);
|
const pinjamanTokohAdatAda = @json($pinjamanTokohAdatAdaValue);
|
||||||
const tekananJualSegeraAda = @json($tekananJualSegeraAdaValue);
|
const tekananJualSegeraAda = @json($tekananJualSegeraAdaValue);
|
||||||
@@ -1455,6 +1456,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function syncProgramKeuanganFormalFields() {
|
||||||
|
const isTidakPernah = String($('input[name="keterlibatan_program_keuangan_formal"]:checked').val() || '') === keterlibatanProgramTidakPernah;
|
||||||
|
const $fields = $('input[name^="status_program_keuangan_formal["], #program-keuangan-lainnya');
|
||||||
|
|
||||||
|
$fields.prop('disabled', isTidakPernah);
|
||||||
|
|
||||||
|
if (isTidakPernah) {
|
||||||
|
$('input[name^="status_program_keuangan_formal["]').prop('checked', false);
|
||||||
|
$('#program-keuangan-lainnya').val('');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function syncBantuanNgoFields() {
|
function syncBantuanNgoFields() {
|
||||||
const isPernah = $('input[name="pernah_bantuan_ngo_perusahaan"]:checked').val() === pernahBantuanNgoPerusahaanPernah;
|
const isPernah = $('input[name="pernah_bantuan_ngo_perusahaan"]:checked').val() === pernahBantuanNgoPerusahaanPernah;
|
||||||
const $fields = $('[name^="detail_bantuan_ngo_perusahaan["]');
|
const $fields = $('[name^="detail_bantuan_ngo_perusahaan["]');
|
||||||
@@ -1568,6 +1581,7 @@
|
|||||||
$('input[name="alasan_kredit_ditolak[]"]').on('change', syncAlasanKreditLainnyaField);
|
$('input[name="alasan_kredit_ditolak[]"]').on('change', syncAlasanKreditLainnyaField);
|
||||||
$('input[name="kondisi_aset_produktif"]').on('change', syncAsetProduktifFields);
|
$('input[name="kondisi_aset_produktif"]').on('change', syncAsetProduktifFields);
|
||||||
$('input[name="jenis_aset_produktif[]"]').on('change', syncJenisAsetLainnyaField);
|
$('input[name="jenis_aset_produktif[]"]').on('change', syncJenisAsetLainnyaField);
|
||||||
|
$('input[name="keterlibatan_program_keuangan_formal"]').on('change', syncProgramKeuanganFormalFields);
|
||||||
$('input[name="pernah_bantuan_ngo_perusahaan"]').on('change', syncBantuanNgoFields);
|
$('input[name="pernah_bantuan_ngo_perusahaan"]').on('change', syncBantuanNgoFields);
|
||||||
$('input[name="pinjaman_tokoh_adat_panen"]').on('change', syncPinjamanTokohAdatFields);
|
$('input[name="pinjaman_tokoh_adat_panen"]').on('change', syncPinjamanTokohAdatFields);
|
||||||
$('#total-hutang-tidak-bersedia').on('change', syncTotalHutangFields);
|
$('#total-hutang-tidak-bersedia').on('change', syncTotalHutangFields);
|
||||||
@@ -1582,6 +1596,7 @@
|
|||||||
syncStatusRekeningFields();
|
syncStatusRekeningFields();
|
||||||
syncPengalamanKreditFields();
|
syncPengalamanKreditFields();
|
||||||
syncAsetProduktifFields();
|
syncAsetProduktifFields();
|
||||||
|
syncProgramKeuanganFormalFields();
|
||||||
syncBantuanNgoFields();
|
syncBantuanNgoFields();
|
||||||
syncPinjamanTokohAdatFields();
|
syncPinjamanTokohAdatFields();
|
||||||
syncTotalHutangFields();
|
syncTotalHutangFields();
|
||||||
|
|||||||
@@ -1053,6 +1053,7 @@
|
|||||||
const alasanKreditLainnya = @json($alasanKreditLainnyaValue);
|
const alasanKreditLainnya = @json($alasanKreditLainnyaValue);
|
||||||
const kondisiAsetTidakAda = String(@json($kondisiAsetTidakAdaValue));
|
const kondisiAsetTidakAda = String(@json($kondisiAsetTidakAdaValue));
|
||||||
const jenisAsetLainnya = @json($jenisAsetLainnyaValue);
|
const jenisAsetLainnya = @json($jenisAsetLainnyaValue);
|
||||||
|
const keterlibatanProgramTidakPernah = String(@json($keterlibatanProgramKeuanganFormalTidakPernahValue));
|
||||||
const pernahBantuanNgoPerusahaanPernah = @json($pernahBantuanNgoPerusahaanPernahValue);
|
const pernahBantuanNgoPerusahaanPernah = @json($pernahBantuanNgoPerusahaanPernahValue);
|
||||||
const pinjamanTokohAdatAda = @json($pinjamanTokohAdatAdaValue);
|
const pinjamanTokohAdatAda = @json($pinjamanTokohAdatAdaValue);
|
||||||
const tekananJualSegeraAda = @json($tekananJualSegeraAdaValue);
|
const tekananJualSegeraAda = @json($tekananJualSegeraAdaValue);
|
||||||
@@ -1451,6 +1452,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function syncProgramKeuanganFormalFields() {
|
||||||
|
const isTidakPernah = String($('input[name="keterlibatan_program_keuangan_formal"]:checked').val() || '') === keterlibatanProgramTidakPernah;
|
||||||
|
const $fields = $('input[name^="status_program_keuangan_formal["], #program-keuangan-lainnya');
|
||||||
|
|
||||||
|
$fields.prop('disabled', isTidakPernah);
|
||||||
|
|
||||||
|
if (isTidakPernah) {
|
||||||
|
$('input[name^="status_program_keuangan_formal["]').prop('checked', false);
|
||||||
|
$('#program-keuangan-lainnya').val('');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function syncBantuanNgoFields() {
|
function syncBantuanNgoFields() {
|
||||||
const isPernah = $('input[name="pernah_bantuan_ngo_perusahaan"]:checked').val() === pernahBantuanNgoPerusahaanPernah;
|
const isPernah = $('input[name="pernah_bantuan_ngo_perusahaan"]:checked').val() === pernahBantuanNgoPerusahaanPernah;
|
||||||
const $fields = $('[name^="detail_bantuan_ngo_perusahaan["]');
|
const $fields = $('[name^="detail_bantuan_ngo_perusahaan["]');
|
||||||
@@ -1564,6 +1577,7 @@
|
|||||||
$('input[name="alasan_kredit_ditolak[]"]').on('change', syncAlasanKreditLainnyaField);
|
$('input[name="alasan_kredit_ditolak[]"]').on('change', syncAlasanKreditLainnyaField);
|
||||||
$('input[name="kondisi_aset_produktif"]').on('change', syncAsetProduktifFields);
|
$('input[name="kondisi_aset_produktif"]').on('change', syncAsetProduktifFields);
|
||||||
$('input[name="jenis_aset_produktif[]"]').on('change', syncJenisAsetLainnyaField);
|
$('input[name="jenis_aset_produktif[]"]').on('change', syncJenisAsetLainnyaField);
|
||||||
|
$('input[name="keterlibatan_program_keuangan_formal"]').on('change', syncProgramKeuanganFormalFields);
|
||||||
$('input[name="pernah_bantuan_ngo_perusahaan"]').on('change', syncBantuanNgoFields);
|
$('input[name="pernah_bantuan_ngo_perusahaan"]').on('change', syncBantuanNgoFields);
|
||||||
$('input[name="pinjaman_tokoh_adat_panen"]').on('change', syncPinjamanTokohAdatFields);
|
$('input[name="pinjaman_tokoh_adat_panen"]').on('change', syncPinjamanTokohAdatFields);
|
||||||
$('#total-hutang-tidak-bersedia').on('change', syncTotalHutangFields);
|
$('#total-hutang-tidak-bersedia').on('change', syncTotalHutangFields);
|
||||||
@@ -1578,6 +1592,7 @@
|
|||||||
syncStatusRekeningFields();
|
syncStatusRekeningFields();
|
||||||
syncPengalamanKreditFields();
|
syncPengalamanKreditFields();
|
||||||
syncAsetProduktifFields();
|
syncAsetProduktifFields();
|
||||||
|
syncProgramKeuanganFormalFields();
|
||||||
syncBantuanNgoFields();
|
syncBantuanNgoFields();
|
||||||
syncPinjamanTokohAdatFields();
|
syncPinjamanTokohAdatFields();
|
||||||
syncTotalHutangFields();
|
syncTotalHutangFields();
|
||||||
|
|||||||
Reference in New Issue
Block a user