solve sosial ekonomi
This commit is contained in:
@@ -154,8 +154,7 @@ class SosialEkonomiController extends Controller
|
||||
});
|
||||
|
||||
if (!$request->expectsJson()) {
|
||||
return redirect()
|
||||
->route('petani.sosial-ekonomi.edit', [$sosialEkonomi->petani_id, $sosialEkonomi->id])
|
||||
return $this->redirectToEditSection($sosialEkonomi, $request)
|
||||
->with('success', 'Data sosial ekonomi berhasil disimpan.');
|
||||
}
|
||||
|
||||
@@ -206,8 +205,7 @@ class SosialEkonomiController extends Controller
|
||||
});
|
||||
|
||||
if (!$request->expectsJson()) {
|
||||
return redirect()
|
||||
->route('petani.sosial-ekonomi.edit', [$sosialEkonomi->petani_id, $sosialEkonomi->id])
|
||||
return $this->redirectToEditSection($sosialEkonomi, $request)
|
||||
->with('success', 'Data sosial ekonomi berhasil diperbarui.');
|
||||
}
|
||||
|
||||
@@ -218,6 +216,18 @@ class SosialEkonomiController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
private function redirectToEditSection(SosialEkonomi $sosialEkonomi, Request $request): RedirectResponse
|
||||
{
|
||||
$url = route('petani.sosial-ekonomi.edit', [$sosialEkonomi->petani_id, $sosialEkonomi->id]);
|
||||
$fragment = $request->input('redirect_fragment');
|
||||
|
||||
if (is_string($fragment) && preg_match('/^[A-Za-z0-9_-]+$/', $fragment)) {
|
||||
$url .= '#' . $fragment;
|
||||
}
|
||||
|
||||
return redirect()->to($url);
|
||||
}
|
||||
|
||||
public function destroy(string $id): JsonResponse
|
||||
{
|
||||
$sosialEkonomi = SosialEkonomi::findOrFail($id);
|
||||
@@ -589,6 +599,14 @@ class SosialEkonomiController extends Controller
|
||||
|
||||
$payload = $this->normalizeSkorPayload($payload);
|
||||
|
||||
if (array_key_exists('ada_sengketa', $payload) && !filter_var($payload['ada_sengketa'], FILTER_VALIDATE_BOOLEAN)) {
|
||||
$payload['keterangan_sengketa'] = null;
|
||||
$payload['pihak_membantu_konflik'] = null;
|
||||
$payload['pihak_membantu_konflik_nama'] = null;
|
||||
$payload['tahun_bantuan_konflik'] = null;
|
||||
$payload['status_konflik'] = null;
|
||||
}
|
||||
|
||||
if (($payload['pihak_membantu_konflik'] ?? null) === PihakMembantuKonflik::TIDAK_ADA_SELESAIKAN_SENDIRI->value) {
|
||||
$payload['pihak_membantu_konflik_nama'] = null;
|
||||
$payload['tahun_bantuan_konflik'] = null;
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
@extends('layout.main')
|
||||
|
||||
@push('scripts-head')
|
||||
<style>
|
||||
#section-utama,
|
||||
#section-sosial-budaya,
|
||||
#section-keanggotaan-kelompok,
|
||||
#section-akses-keuangan,
|
||||
#section-keterikatan-hutang {
|
||||
scroll-margin-top: 96px;
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="container-xxl flex-grow-1 container-p-y">
|
||||
@if (session('success'))
|
||||
@@ -1062,6 +1074,20 @@
|
||||
const pinjamanTokohAdatAda = @json($pinjamanTokohAdatAdaValue);
|
||||
const tekananJualSegeraAda = @json($tekananJualSegeraAdaValue);
|
||||
const kebebasanMemilihPembeliCukupBebas = Number(@json($kebebasanMemilihPembeliCukupBebasValue));
|
||||
const sectionAnchors = {
|
||||
utama: 'section-utama',
|
||||
sosial_budaya: 'section-sosial-budaya',
|
||||
keanggotaan_kelompok: 'section-keanggotaan-kelompok',
|
||||
akses_keuangan: 'section-akses-keuangan',
|
||||
keterikatan_hutang: 'section-keterikatan-hutang'
|
||||
};
|
||||
const nextSectionAnchors = {
|
||||
utama: 'section-sosial-budaya',
|
||||
sosial_budaya: 'section-keanggotaan-kelompok',
|
||||
keanggotaan_kelompok: 'section-akses-keuangan',
|
||||
akses_keuangan: 'section-keterikatan-hutang',
|
||||
keterikatan_hutang: 'section-keterikatan-hutang'
|
||||
};
|
||||
const fieldExamples = {
|
||||
jumlah_tanggungan: 'Contoh: 4',
|
||||
anak_masih_sekolah: 'Contoh: 2',
|
||||
@@ -1399,7 +1425,8 @@
|
||||
}
|
||||
|
||||
function syncPihakMembantuFields() {
|
||||
const isTidakAda = $('#pihak-membantu').val() === pihakMembantuTanpaBantuan;
|
||||
const isAdaSengketa = $('input[name="ada_sengketa"]:checked').val() === '1';
|
||||
const isTidakAda = !isAdaSengketa || $('#pihak-membantu').val() === pihakMembantuTanpaBantuan;
|
||||
const $fields = $('#pihak-membantu-nama, #tahun-bantuan');
|
||||
|
||||
$fields.prop('disabled', isTidakAda);
|
||||
@@ -1409,6 +1436,21 @@
|
||||
}
|
||||
}
|
||||
|
||||
function syncSengketaFields() {
|
||||
const isAdaSengketa = $('input[name="ada_sengketa"]:checked').val() === '1';
|
||||
const $fields = $('#keterangan-sengketa, #pihak-membantu, #status-konflik');
|
||||
const $assistanceFields = $('#pihak-membantu-nama, #tahun-bantuan');
|
||||
|
||||
$fields.prop('disabled', !isAdaSengketa);
|
||||
|
||||
if (!isAdaSengketa) {
|
||||
$fields.add($assistanceFields).val('');
|
||||
$fields.filter('select').trigger('change.select2');
|
||||
}
|
||||
|
||||
syncPihakMembantuFields();
|
||||
}
|
||||
|
||||
function syncPernahJualHargaLebihTinggiFields() {
|
||||
const isPernah = $('#pernah-jual-harga-lebih-tinggi').val() === pernahJualHargaLebihTinggiPernah;
|
||||
const $field = $('#penyebab-harga-lebih-tinggi');
|
||||
@@ -1601,6 +1643,37 @@
|
||||
clearPendapatanRowValidation($row);
|
||||
}
|
||||
|
||||
function setupSectionAnchors() {
|
||||
$('input[name="form_section"]').each(function () {
|
||||
const section = this.value;
|
||||
const anchor = sectionAnchors[section];
|
||||
const nextAnchor = nextSectionAnchors[section] || anchor;
|
||||
const $form = $(this).closest('form');
|
||||
|
||||
if (anchor) {
|
||||
$form.find('> .card').first().attr('id', anchor);
|
||||
}
|
||||
|
||||
if (nextAnchor && !$form.find('input[name="redirect_fragment"]').length) {
|
||||
$('<input>', {
|
||||
type: 'hidden',
|
||||
name: 'redirect_fragment',
|
||||
value: nextAnchor
|
||||
}).appendTo($form);
|
||||
}
|
||||
});
|
||||
|
||||
if (window.location.hash) {
|
||||
const target = document.getElementById(window.location.hash.substring(1));
|
||||
|
||||
if (target) {
|
||||
setTimeout(function () {
|
||||
target.scrollIntoView({ block: 'start' });
|
||||
}, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('change', '.sosial-ekonomi-komoditas-utama', syncKomoditasLainnyaOptions);
|
||||
$(document).on('input change', '.pendapatan-row input, .pendapatan-row select', function () {
|
||||
clearPendapatanRowValidation($(this).closest('.pendapatan-row'));
|
||||
@@ -1636,6 +1709,7 @@
|
||||
});
|
||||
});
|
||||
$('#pihak-membantu').on('change', syncPihakMembantuFields);
|
||||
$('input[name="ada_sengketa"]').on('change', syncSengketaFields);
|
||||
$('#pernah-jual-harga-lebih-tinggi').on('change', syncPernahJualHargaLebihTinggiFields);
|
||||
$('input[name="panutan_petani_sukses"]').on('change', syncPanutanFields);
|
||||
$('input[name="terdaftar_kelompok_tani"]').on('change', syncTerdaftarKelompokFields);
|
||||
@@ -1650,10 +1724,12 @@
|
||||
$('#total-hutang-tidak-bersedia').on('change', syncTotalHutangFields);
|
||||
$('input[name="tekanan_jual_segera"]').on('change', syncTekananJualFields);
|
||||
$('input[name="kebebasan_memilih_pembeli"]').on('change', syncKebebasanPembeliFields);
|
||||
setupSectionAnchors();
|
||||
applySosialEkonomiExamples();
|
||||
syncKomoditasLainnyaOptions();
|
||||
setupAllPendapatanRows();
|
||||
syncPihakMembantuFields();
|
||||
syncSengketaFields();
|
||||
syncPernahJualHargaLebihTinggiFields();
|
||||
syncPanutanFields();
|
||||
syncTerdaftarKelompokFields();
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
@extends('layout.main')
|
||||
|
||||
@push('scripts-head')
|
||||
<style>
|
||||
#section-utama,
|
||||
#section-sosial-budaya,
|
||||
#section-keanggotaan-kelompok,
|
||||
#section-akses-keuangan,
|
||||
#section-keterikatan-hutang {
|
||||
scroll-margin-top: 96px;
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="container-xxl flex-grow-1 container-p-y">
|
||||
@if (session('success'))
|
||||
@@ -1058,6 +1070,20 @@
|
||||
const pinjamanTokohAdatAda = @json($pinjamanTokohAdatAdaValue);
|
||||
const tekananJualSegeraAda = @json($tekananJualSegeraAdaValue);
|
||||
const kebebasanMemilihPembeliCukupBebas = Number(@json($kebebasanMemilihPembeliCukupBebasValue));
|
||||
const sectionAnchors = {
|
||||
utama: 'section-utama',
|
||||
sosial_budaya: 'section-sosial-budaya',
|
||||
keanggotaan_kelompok: 'section-keanggotaan-kelompok',
|
||||
akses_keuangan: 'section-akses-keuangan',
|
||||
keterikatan_hutang: 'section-keterikatan-hutang'
|
||||
};
|
||||
const nextSectionAnchors = {
|
||||
utama: 'section-sosial-budaya',
|
||||
sosial_budaya: 'section-keanggotaan-kelompok',
|
||||
keanggotaan_kelompok: 'section-akses-keuangan',
|
||||
akses_keuangan: 'section-keterikatan-hutang',
|
||||
keterikatan_hutang: 'section-keterikatan-hutang'
|
||||
};
|
||||
const fieldExamples = {
|
||||
jumlah_tanggungan: 'Contoh: 4',
|
||||
anak_masih_sekolah: 'Contoh: 2',
|
||||
@@ -1395,7 +1421,8 @@
|
||||
}
|
||||
|
||||
function syncPihakMembantuFields() {
|
||||
const isTidakAda = $('#pihak-membantu').val() === pihakMembantuTanpaBantuan;
|
||||
const isAdaSengketa = $('input[name="ada_sengketa"]:checked').val() === '1';
|
||||
const isTidakAda = !isAdaSengketa || $('#pihak-membantu').val() === pihakMembantuTanpaBantuan;
|
||||
const $fields = $('#pihak-membantu-nama, #tahun-bantuan');
|
||||
|
||||
$fields.prop('disabled', isTidakAda);
|
||||
@@ -1405,6 +1432,21 @@
|
||||
}
|
||||
}
|
||||
|
||||
function syncSengketaFields() {
|
||||
const isAdaSengketa = $('input[name="ada_sengketa"]:checked').val() === '1';
|
||||
const $fields = $('#keterangan-sengketa, #pihak-membantu, #status-konflik');
|
||||
const $assistanceFields = $('#pihak-membantu-nama, #tahun-bantuan');
|
||||
|
||||
$fields.prop('disabled', !isAdaSengketa);
|
||||
|
||||
if (!isAdaSengketa) {
|
||||
$fields.add($assistanceFields).val('');
|
||||
$fields.filter('select').trigger('change.select2');
|
||||
}
|
||||
|
||||
syncPihakMembantuFields();
|
||||
}
|
||||
|
||||
function syncPernahJualHargaLebihTinggiFields() {
|
||||
const isPernah = $('#pernah-jual-harga-lebih-tinggi').val() === pernahJualHargaLebihTinggiPernah;
|
||||
const $field = $('#penyebab-harga-lebih-tinggi');
|
||||
@@ -1597,6 +1639,37 @@
|
||||
clearPendapatanRowValidation($row);
|
||||
}
|
||||
|
||||
function setupSectionAnchors() {
|
||||
$('input[name="form_section"]').each(function () {
|
||||
const section = this.value;
|
||||
const anchor = sectionAnchors[section];
|
||||
const nextAnchor = nextSectionAnchors[section] || anchor;
|
||||
const $form = $(this).closest('form');
|
||||
|
||||
if (anchor) {
|
||||
$form.find('> .card').first().attr('id', anchor);
|
||||
}
|
||||
|
||||
if (nextAnchor && !$form.find('input[name="redirect_fragment"]').length) {
|
||||
$('<input>', {
|
||||
type: 'hidden',
|
||||
name: 'redirect_fragment',
|
||||
value: nextAnchor
|
||||
}).appendTo($form);
|
||||
}
|
||||
});
|
||||
|
||||
if (window.location.hash) {
|
||||
const target = document.getElementById(window.location.hash.substring(1));
|
||||
|
||||
if (target) {
|
||||
setTimeout(function () {
|
||||
target.scrollIntoView({ block: 'start' });
|
||||
}, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('change', '.sosial-ekonomi-komoditas-utama', syncKomoditasLainnyaOptions);
|
||||
$(document).on('input change', '.pendapatan-row input, .pendapatan-row select', function () {
|
||||
clearPendapatanRowValidation($(this).closest('.pendapatan-row'));
|
||||
@@ -1632,6 +1705,7 @@
|
||||
});
|
||||
});
|
||||
$('#pihak-membantu').on('change', syncPihakMembantuFields);
|
||||
$('input[name="ada_sengketa"]').on('change', syncSengketaFields);
|
||||
$('#pernah-jual-harga-lebih-tinggi').on('change', syncPernahJualHargaLebihTinggiFields);
|
||||
$('input[name="panutan_petani_sukses"]').on('change', syncPanutanFields);
|
||||
$('input[name="terdaftar_kelompok_tani"]').on('change', syncTerdaftarKelompokFields);
|
||||
@@ -1646,10 +1720,12 @@
|
||||
$('#total-hutang-tidak-bersedia').on('change', syncTotalHutangFields);
|
||||
$('input[name="tekanan_jual_segera"]').on('change', syncTekananJualFields);
|
||||
$('input[name="kebebasan_memilih_pembeli"]').on('change', syncKebebasanPembeliFields);
|
||||
setupSectionAnchors();
|
||||
applySosialEkonomiExamples();
|
||||
syncKomoditasLainnyaOptions();
|
||||
setupAllPendapatanRows();
|
||||
syncPihakMembantuFields();
|
||||
syncSengketaFields();
|
||||
syncPernahJualHargaLebihTinggiFields();
|
||||
syncPanutanFields();
|
||||
syncTerdaftarKelompokFields();
|
||||
|
||||
Reference in New Issue
Block a user