From e2c778a934e76db72a0e75d15934a87f41eab688 Mon Sep 17 00:00:00 2001 From: SyaharaniSalsabilla Date: Tue, 7 Jul 2026 13:37:12 +0700 Subject: [PATCH 1/6] add data petani --- .../Web/Produktivitas/PetaniController.php | 8 ++++-- app/Models/Pertanian/Petani.php | 2 +- .../views/produktivitas/petani/add.blade.php | 28 +++++++++---------- .../views/produktivitas/petani/edit.blade.php | 12 +++++--- 4 files changed, 29 insertions(+), 21 deletions(-) diff --git a/app/Http/Controllers/Web/Produktivitas/PetaniController.php b/app/Http/Controllers/Web/Produktivitas/PetaniController.php index 4723bfc..70109f3 100644 --- a/app/Http/Controllers/Web/Produktivitas/PetaniController.php +++ b/app/Http/Controllers/Web/Produktivitas/PetaniController.php @@ -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')) { diff --git a/app/Models/Pertanian/Petani.php b/app/Models/Pertanian/Petani.php index 54668c2..5a55294 100644 --- a/app/Models/Pertanian/Petani.php +++ b/app/Models/Pertanian/Petani.php @@ -22,7 +22,7 @@ class Petani extends Model 'uid', 'nama', - 'telepon', + 'nomor_telepon', 'alamat', 'kk', diff --git a/resources/views/produktivitas/petani/add.blade.php b/resources/views/produktivitas/petani/add.blade.php index c42e23a..0a1aa2d 100644 --- a/resources/views/produktivitas/petani/add.blade.php +++ b/resources/views/produktivitas/petani/add.blade.php @@ -12,16 +12,13 @@ @endif
- - - @include('produktivitas.petani.header', ['petani' => null]) - -
-
- +
+
Tambah Petani Baru
+
+
@csrf
@@ -35,7 +32,7 @@ width="120" alt="User avatar" />
@@ -157,7 +154,7 @@
+ placeholder="Cth: 081234567890" value="{{ old('nomor_telepon') }}" minlength="11" maxlength="13" /> @error('nomor_telepon')
{{ $message }}
@enderror
@@ -183,7 +180,7 @@
- +
@@ -191,7 +188,6 @@
-
@endsection @@ -278,7 +274,7 @@ status_perkawinan: { required: true }, file_ktp: { accept: "image/png, image/jpeg, image/jpg" }, file_kk: { accept: "image/png, image/jpeg, image/jpg" }, - nomor_telepon: { required: false, digits: true, maxlength: 20 } + nomor_telepon: { required: false, digits: true, minlength: 11, maxlength: 13 } }, messages: { nama: { required: "Nama petani wajib diisi" }, @@ -296,7 +292,11 @@ status_perkawinan: { required: "Status perkawinan wajib diisi" }, file_ktp: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)" }, file_kk: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)" }, - nomor_telepon: { digits: "Nomor telepon harus berupa angka", maxlength: "Nomor telepon maksimal 20 digit" } + nomor_telepon: { + digits: "Nomor telepon harus berupa angka", + minlength: "Nomor telepon minimal 11 digit", + maxlength: "Nomor telepon maksimal 13 digit" + } }, errorElement: 'div', errorPlacement: function (error, element) { @@ -312,4 +312,4 @@ }); }); -@endpush \ No newline at end of file +@endpush diff --git a/resources/views/produktivitas/petani/edit.blade.php b/resources/views/produktivitas/petani/edit.blade.php index 2848cba..a61b21c 100644 --- a/resources/views/produktivitas/petani/edit.blade.php +++ b/resources/views/produktivitas/petani/edit.blade.php @@ -159,7 +159,7 @@
+ placeholder="Cth: 081234567890" value="{{ old('nomor_telepon', $petani->nomor_telepon) }}" minlength="11" maxlength="13" /> @error('nomor_telepon')
{{ $message }}
@enderror
@@ -303,7 +303,7 @@ status_perkawinan: { required: true }, file_ktp: { accept: "image/png, image/jpeg, image/jpg" }, file_kk: { accept: "image/png, image/jpeg, image/jpg" }, - nomor_telepon: { required: false, digits: true, maxlength: 20 } + nomor_telepon: { required: false, digits: true, minlength: 11, maxlength: 13 } }, messages: { nama: { required: "Nama petani wajib diisi" }, @@ -321,7 +321,11 @@ status_perkawinan: { required: "Status perkawinan wajib diisi" }, file_ktp: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)" }, file_kk: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)" }, - nomor_telepon: { digits: "Nomor telepon harus berupa angka", maxlength: "Nomor telepon maksimal 20 digit" } + nomor_telepon: { + digits: "Nomor telepon harus berupa angka", + minlength: "Nomor telepon minimal 11 digit", + maxlength: "Nomor telepon maksimal 13 digit" + } }, errorElement: 'div', @@ -338,4 +342,4 @@ }); }); -@endpush \ No newline at end of file +@endpush From b3d805fe98b61ac4fbbae9de58193a39ae29d48f Mon Sep 17 00:00:00 2001 From: SyaharaniSalsabilla Date: Tue, 7 Jul 2026 13:37:47 +0700 Subject: [PATCH 2/6] update field sosial ekonomi --- .../petani/sosial-ekonomi/edit.blade.php | 64 +++++++++++-------- .../petani/sosial-ekonomi/index.blade.php | 64 +++++++++++-------- routes/web.php | 18 +++--- 3 files changed, 85 insertions(+), 61 deletions(-) diff --git a/resources/views/produktivitas/petani/sosial-ekonomi/edit.blade.php b/resources/views/produktivitas/petani/sosial-ekonomi/edit.blade.php index d440615..33e3f20 100644 --- a/resources/views/produktivitas/petani/sosial-ekonomi/edit.blade.php +++ b/resources/views/produktivitas/petani/sosial-ekonomi/edit.blade.php @@ -66,11 +66,11 @@ @for($i = 0; $i < 2; $i++) - @php($item = $pendapatanKomoditasUtama->get($i)) + @php $item = $pendapatanKomoditasUtama->get($i) @endphp - @php($selectedKomoditas = old("pendapatan_komoditas.$i.komoditas", $item?->komoditas)) + @php $selectedKomoditas = old("pendapatan_komoditas.$i.komoditas", $item?->komoditas) @endphp - @php($pendapatanValue = old("pendapatan_komoditas.$i.pendapatan", $item?->pendapatan)) + @php $pendapatanValue = old("pendapatan_komoditas.$i.pendapatan", $item?->pendapatan) @endphp
Rp
- @php($periodeValue = old("pendapatan_komoditas.$i.periode", $item?->periode)) + @php $periodeValue = old("pendapatan_komoditas.$i.periode", $item?->periode) @endphp
@@ -121,12 +121,12 @@ @for($i = 0; $i < 2; $i++) - @php($item = $pendapatanKomoditasLainnya->get($i)) - @php($index = $i + 2) + @php $item = $pendapatanKomoditasLainnya->get($i) @endphp + @php $index = $i + 2 @endphp - @php($selectedKomoditas = old("pendapatan_komoditas.$index.komoditas", $item?->komoditas)) + @php $selectedKomoditas = old("pendapatan_komoditas.$index.komoditas", $item?->komoditas) @endphp - @php($pendapatanValue = old("pendapatan_komoditas.$index.pendapatan", $item?->pendapatan)) + @php $pendapatanValue = old("pendapatan_komoditas.$index.pendapatan", $item?->pendapatan) @endphp
Rp
- @php($periodeValue = old("pendapatan_komoditas.$index.periode", $item?->periode)) + @php $periodeValue = old("pendapatan_komoditas.$index.periode", $item?->periode) @endphp
@@ -176,13 +176,13 @@ @for($i = 0; $i < 2; $i++) - @php($item = $pendapatanLuarPertanian->get($i)) + @php $item = $pendapatanLuarPertanian->get($i) @endphp jenis_pekerjaan) }}"> - @php($estimasiValue = old("pendapatan_luar_pertanian.$i.estimasi_per_bulan", $item?->estimasi_per_bulan)) + @php $estimasiValue = old("pendapatan_luar_pertanian.$i.estimasi_per_bulan", $item?->estimasi_per_bulan) @endphp
Rp @@ -229,7 +229,7 @@
- @php($biayaKebunValue = old('total_estimasi_biaya_kebun_per_musim', $sosialEkonomi?->total_estimasi_biaya_kebun_per_musim)) + @php $biayaKebunValue = old('total_estimasi_biaya_kebun_per_musim', $sosialEkonomi?->total_estimasi_biaya_kebun_per_musim) @endphp
Rp @@ -250,7 +250,7 @@
- @php($tabunganValue = old('estimasi_tabungan_per_bulan', $sosialEkonomi?->estimasi_tabungan_per_bulan)) + @php $tabunganValue = old('estimasi_tabungan_per_bulan', $sosialEkonomi?->estimasi_tabungan_per_bulan) @endphp
Rp @@ -305,21 +305,33 @@ @error('skor_kejelasan_status_lahan')
{{ $message }}
@enderror
- - + @php + $adaSertifikatValue = old('ada_sertifikat_dokumen', is_null($sosialEkonomi?->ada_sertifikat_dokumen) ? null : (int) $sosialEkonomi->ada_sertifikat_dokumen); + @endphp + +
+ + +
+
+ + +
@error('ada_sertifikat_dokumen')
{{ $message }}
@enderror
- - + @php + $adaSengketaValue = old('ada_sengketa', is_null($sosialEkonomi?->ada_sengketa) ? null : (int) $sosialEkonomi->ada_sengketa); + @endphp + +
+ + +
+
+ + +
@error('ada_sengketa')
{{ $message }}
@enderror
@@ -376,7 +388,7 @@ +@endpush \ No newline at end of file diff --git a/resources/views/produktivitas/petani/praktik-budidaya/add.blade.php b/resources/views/produktivitas/petani/praktik-budidaya/add.blade.php index 6ccdfda..0537add 100644 --- a/resources/views/produktivitas/petani/praktik-budidaya/add.blade.php +++ b/resources/views/produktivitas/petani/praktik-budidaya/add.blade.php @@ -1,6 +1,12 @@ @extends('layout.main') @section('content') +@use('App\Enums\PraktikBudidaya\TenagaKerja') +@use('App\Enums\PraktikBudidaya\FrekuensiPemangkasanUtama') +@use('App\Enums\PraktikBudidaya\FrekuensiPemangkasanPendamping') +@use('App\Enums\PraktikBudidaya\PenyerbukanManual') +@use('App\Enums\PraktikBudidaya\PemberianPupuk') +@use('App\Enums\PraktikBudidaya\JenisPupuk')
@if ($errors->any())
@@ -11,213 +17,486 @@
@endif -
- - -
- @include('produktivitas.petani.header', ['petani' => $petani]) - -
-
- -
Persiapan Lahan & Tanaman
-
-
- - - @error('tenaga_kerja')
{{ $message }}
@enderror +
+ @csrf +
+
+
Persiapan Lahan & Tanaman
+
+
+ + + @error('tenaga_kerja')
{{ $message }}
@enderror +
-
-
Praktik Pemangkasan & Penyerbukan
-
-
- - - @error('frekuensi_pemangkasan_komoditas_utama')
{{ $message }}
@enderror +
Praktik Pemangkasan & Penyerbukan
+
+
+ + + @error('frekuensi_pemangkasan_komoditas_utama')
{{ $message }}
@enderror +
+
+ +
+ teknik_pemangkasan, true))) && in_array('bentuk', old('teknik_pemangkasan', json_decode($petani->teknik_pemangkasan, true)))) ? 'checked' : '' }}> + +
+
+ teknik_pemangkasan, true))) && in_array('produksi', old('teknik_pemangkasan', json_decode($petani->teknik_pemangkasan, true)))) ? 'checked' : '' }}> + +
+
+ teknik_pemangkasan, true))) && in_array('peremajaan', old('teknik_pemangkasan', json_decode($petani->teknik_pemangkasan, true)))) ? 'checked' : '' }}> + +
+
+ teknik_pemangkasan, true))) && in_array('kebiasaan', old('teknik_pemangkasan', json_decode($petani->teknik_pemangkasan, true)))) ? 'checked' : '' }}> + +
+
+ + + +
+ @error('teknik_pemangkasan') +
{{ $message }}
+ @enderror +
+
+ + + @error('frekuensi_pemangkasan_pohon_penaung')
{{ $message }}
@enderror +
-
- - -
- teknik_pemangkasan, true))) && in_array('bentuk', old('teknik_pemangkasan', json_decode($petani->teknik_pemangkasan, true)))) ? 'checked' : '' }}> - +
+
+ + + @error('penyerbukan_manual') +
{{ $message }}
+ @enderror
- -
- teknik_pemangkasan, true))) && in_array('produksi', old('teknik_pemangkasan', json_decode($petani->teknik_pemangkasan, true)))) ? 'checked' : '' }}> - -
- -
- teknik_pemangkasan, true))) && in_array('peremajaan', old('teknik_pemangkasan', json_decode($petani->teknik_pemangkasan, true)))) ? 'checked' : '' }}> - -
- -
- teknik_pemangkasan, true))) && in_array('kebiasaan', old('teknik_pemangkasan', json_decode($petani->teknik_pemangkasan, true)))) ? 'checked' : '' }}> - -
- -
- teknik_pemangkasan, true))) && in_array('lainnya', old('teknik_pemangkasan', json_decode($petani->teknik_pemangkasan, true)))) ? 'checked' : '' }}> +
+ - +
+ alasan_tidak_penyerbukan) == 'Tidak tahu caranya' ? 'checked' : '' }}> + +
+ +
+ alasan_tidak_penyerbukan) == 'Tidak ada tenaga/waktu' ? 'checked' : '' }}> + +
+ +
+ alasan_tidak_penyerbukan) == 'Mengandalkan penyerbuk alami' ? 'checked' : '' }}> + +
+ +
+ + + + + +
+ + @error('alasan_tidak_penyerbukan') +
{{ $message }}
+ @enderror +
+
+ - -
+
+ tingkat_keberhasilan_penyerbukan) == 'Tinggi, sebagian besar bunga berhasil menjadi buah' ? 'checked' : '' }}> + +
- @error('teknik_pemangkasan') -
{{ $message }}
- @enderror +
+ tingkat_keberhasilan_penyerbukan) == 'Sedang, sekitar separuh bunga berhasil menjadi buah' ? 'checked' : '' }}> + +
+ +
+ tingkat_keberhasilan_penyerbukan) == 'Rendah, hanya sedikit bunga yang berhasil menjadi buah' ? 'checked' : '' }}> + +
+ + @error('tingkat_keberhasilan_penyerbukan') +
{{ $message }}
+ @enderror +
-
- - - @error('frekuensi_pemangkasan_pohon_penaung')
{{ $message }}
@enderror -
-
-
-
- - -
- penyerbukan_manual) == 'Selalu, setiap musim berbunga' ? 'checked' : '' }}> - +
Praktik Pemupukan
+
+
+ + + @error('pemberian_pupuk')
{{ $message }}
@enderror
- -
- penyerbukan_manual) == 'Kadang-kadang, tergantung kondisi' ? 'checked' : '' }}> - +
+ + + @error('jenis_pupuk')
{{ $message }}
@enderror
- -
- penyerbukan_manual) == 'Tidak pernah' ? 'checked' : '' }}> - -
- - @error('penyerbukan_manual') -
{{ $message }}
- @enderror -
-
- - -
- alasan_tidak_penyerbukan) == 'Tidak tahu caranya' ? 'checked' : '' }}> - -
- -
- alasan_tidak_penyerbukan) == 'Tidak ada tenaga/waktu' ? 'checked' : '' }}> - -
- -
- alasan_tidak_penyerbukan) == 'Mengandalkan penyerbuk alami' ? 'checked' : '' }}> - -
- -
- alasan_tidak_penyerbukan) == 'lainnya' ? 'checked' : '' }}> +
+ - - - -
+
+ frekuensi_pemupukan) == '1 kali/tahun' ? 'checked' : '' }}> + +
- @error('alasan_tidak_penyerbukan') -
{{ $message }}
- @enderror +
+ frekuensi_pemupukan) == '2 kali/tahun' ? 'checked' : '' }}> + +
+ +
+ frekuensi_pemupukan) == 'Lebih dari 2 kali/tahun' ? 'checked' : '' }}> + +
+ +
+ + + + + +
+ + @error('frekuensi_pemupukan') +
{{ $message }}
+ @enderror +
+
+ + +
+ + + Kg +
+ + @error('estimasi_dosis_pupuk_organik') +
{{ $message }}
+ @enderror +
+
+ + +
+ + + Kg +
+ + @error('estimasi_dosis_pupuk_anorganik') +
{{ $message }}
+ @enderror +
+
+ + +
+ waktu_pemberian_pupuk) == 'Awal musim hujan' ? 'checked' : '' }}> + +
+ +
+ waktu_pemberian_pupuk) == 'Akhir musim hujan' ? 'checked' : '' }}> + +
+ +
+ waktu_pemberian_pupuk) == 'Sebelum berbunga' ? 'checked' : '' }}> + +
+ +
+ waktu_pemberian_pupuk) == 'Sebelum Setelah Panen' ? 'checked' : '' }}> + +
+ +
+ waktu_pemberian_pupuk) == 'Tidak Menentu' ? 'checked' : '' }}> + +
+ +
+ + + + + +
+ + @error('waktu_pemberian_pupuk') +
{{ $message }}
+ @enderror +
+
+ + +
+ cara_pemberian_pupuk) == 'Ditabur di sekitar pohon' ? 'checked' : '' }}> + +
+ +
+ cara_pemberian_pupuk) == 'Dibenamkan dalam lubang/parit' ? 'checked' : '' }}> + +
+ +
+ cara_pemberian_pupuk) == 'Dicairkan/dikocor' ? 'checked' : '' }}> + +
+ +
+ cara_pemberian_pupuk) == 'Disemprotkan ke daun' ? 'checked' : '' }}> + +
+ +
+ + + + + +
+ + @error('cara_pemberian_pupuk') +
{{ $message }}
+ @enderror +
+
+
+
-
-
-
-
+
@@ -228,66 +507,26 @@ 'use strict'; $(document).ready(function () { - $('#edit-petani-jenis-kelamin, #edit-petani-pendidikan-terakhir, #edit-petani-pekerjaan-utama, #edit-petani-komoditas, #edit-petani-pekerjaan-sampingan, #edit-petani-komoditas-sampingan, #edit-petani-status-pernikahan, #edit-petani-status-keluarga, #edit-petani-petani-pengumpul').select2(); + $('#tenaga-kerja, #frekuensi-pemangkasan-komoditas-utama, #frekuensi-pemangkasan-pohon-penaung, #penyerbukan-manual, #pemberian-pupuk, #jenis-pupuk').select2(); - $('#edit-petani-provinsi').select2().change(function(e) { - e.preventDefault(); - var provinsiId = $(this).val(); - $('#edit-petani-kabupaten').prop('disabled', !provinsiId).val('').trigger('change'); - $('#edit-petani-kecamatan').prop('disabled', true).val('').trigger('change'); - $('#edit-petani-desa').prop('disabled', true).val('').trigger('change'); + const $switch = $('input[name="disimpan_untuk_diri_sendiri"]'); + const $text = $('#switch-text'); - if (provinsiId) { - $.ajax({ - url: '{{ route("kabupatenkota.byprovinsi", ":id") }}'.replace(':id', provinsiId), - method: 'GET', - success: function(data) { - $('#edit-petani-kabupaten').empty().append(''); - data.forEach(function(kabupaten) { - $('#edit-petani-kabupaten').append(''); - }); - } - }); + function updateSwitchText() { + if ($switch.is(':checked')) { + $text + .text('Ya, Sebagian Disimpan') + .removeClass('text-muted text-danger') + // .addClass('text-success'); + } else { + $text + .text('Tidak, Semua Dijual') + .removeClass('text-success') + // .addClass('text-muted'); } - }); - $('#edit-petani-kabupaten').select2().change(function(e) { - e.preventDefault(); - var kabupatenId = $(this).val(); - $('#edit-petani-kecamatan').prop('disabled', !kabupatenId).val('').trigger('change'); - $('#edit-petani-desa').prop('disabled', true).val('').trigger('change'); - - if (kabupatenId) { - $.ajax({ - url: '{{ route("kecamatan.bykabupatenkota", ":id") }}'.replace(':id', kabupatenId), - method: 'GET', - success: function(data) { - $('#edit-petani-kecamatan').empty().append(''); - data.forEach(function(kecamatan) { - $('#edit-petani-kecamatan').append(''); - }); - } - }); - } - }); - $('#edit-petani-kecamatan').select2().change(function(e) { - e.preventDefault(); - var kecamatanId = $(this).val(); - $('#edit-petani-desa').prop('disabled', !kecamatanId).val('').trigger('change'); - - if (kecamatanId) { - $.ajax({ - url: '{{ route("desakelurahan.bykecamatan", ":id") }}'.replace(':id', kecamatanId), - method: 'GET', - success: function(data) { - $('#edit-petani-desa').empty().append(''); - data.forEach(function(desa) { - $('#edit-petani-desa').append(''); - }); - } - }); - } - }); - $('#edit-petani-desa').select2(); + } + updateSwitchText(); + $switch.on('change', updateSwitchText); $('#editPetaniForm').validate({ diff --git a/resources/views/produktivitas/petani/praktik-budidaya/edit.blade.php b/resources/views/produktivitas/petani/praktik-budidaya/edit.blade.php new file mode 100644 index 0000000..f7f61f1 --- /dev/null +++ b/resources/views/produktivitas/petani/praktik-budidaya/edit.blade.php @@ -0,0 +1,1437 @@ +@extends('layout.main') + +@section('content') +@use('App\Enums\PraktikBudidaya\TenagaKerja') +@use('App\Enums\PraktikBudidaya\FrekuensiPemangkasanUtama') +@use('App\Enums\PraktikBudidaya\FrekuensiPemangkasanPendamping') +@use('App\Enums\PraktikBudidaya\PenyerbukanManual') +@use('App\Enums\PraktikBudidaya\PemberianPupuk') +@use('App\Enums\PraktikBudidaya\JenisPupuk') +@use('App\Enums\PraktikBudidaya\MetodePenangananHamaPenyakit') +@use('App\Enums\PraktikBudidaya\IntensitasSeranganHamaPenyakit') +@use('App\Enums\PraktikBudidaya\WaktuKemunculanTerparahHamaPenyakit') +@use('App\Enums\PraktikBudidaya\FrekuensiSanitasiLahan') +@use('App\Enums\PraktikBudidaya\PenangananSisaBuahRanting') +@use('App\Enums\PraktikBudidaya\PenangananGulma') +@use('App\Enums\PraktikBudidaya\KondisiPengelolaanAir') +@use('App\Enums\PraktikBudidaya\KebutuhanAirPermusim') +@use('App\Enums\PraktikBudidaya\PemahamanManfaatKonservasi') +
+ @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif +
+
+ @include('produktivitas.petani.header', ['petani' => $petani]) +
+ @csrf + @method('PUT') +
+
+
Persiapan Lahan & Tanaman
+
+
+ + + @error('tenaga_kerja')
{{ $message }}
@enderror +
+
+
Praktik Pemangkasan & Penyerbukan
+
+
+ + + @error('frekuensi_pemangkasan_komoditas_utama')
{{ $message }}
@enderror +
+
+ +
+ teknik_pemangkasan ?? [])) ? 'checked' : '' }}> + +
+
+ teknik_pemangkasan ?? [])) ? 'checked' : '' }}> + +
+
+ teknik_pemangkasan ?? [])) ? 'checked' : '' }}> + +
+
+ teknik_pemangkasan ?? [])) ? 'checked' : '' }}> + +
+
+ + + + + +
+ @error('teknik_pemangkasan') +
{{ $message }}
+ @enderror +
+
+ + + @error('frekuensi_pemangkasan_pohon_penaung')
{{ $message }}
@enderror +
+
+
+
+ + + @error('penyerbukan_manual') +
{{ $message }}
+ @enderror +
+
+ + +
+ deskripsi_penyerbukan_manual) == 'Tidak tahu caranya' ? 'checked' : '' }}> + +
+ +
+ deskripsi_penyerbukan_manual) == 'Tidak ada tenaga/waktu' ? 'checked' : '' }}> + +
+ +
+ deskripsi_penyerbukan_manual) == 'Mengandalkan penyerbuk alami' ? 'checked' : '' }}> + +
+ +
+ + + + + +
+ + @error('alasan_tidak_penyerbukan') +
{{ $message }}
+ @enderror +
+
+ + +
+ tingkat_keberhasilan_penyerbukan) == 'Tinggi, sebagian besar bunga berhasil menjadi buah' ? 'checked' : '' }}> + +
+ +
+ tingkat_keberhasilan_penyerbukan) == 'Sedang, sekitar separuh bunga berhasil menjadi buah' ? 'checked' : '' }}> + +
+ +
+ tingkat_keberhasilan_penyerbukan) == 'Rendah, hanya sedikit bunga yang berhasil menjadi buah' ? 'checked' : '' }}> + +
+ + @error('tingkat_keberhasilan_penyerbukan') +
{{ $message }}
+ @enderror +
+
+
Praktik Pemupukan
+
+
+ + + @error('pemberian_pupuk')
{{ $message }}
@enderror +
+
+ + + @error('jenis_pupuk')
{{ $message }}
@enderror +
+
+ + +
+ frekuensi_pemberian_pupuk) == '1 kali/tahun' ? 'checked' : '' }}> + +
+ +
+ frekuensi_pemberian_pupuk) == '2 kali/tahun' ? 'checked' : '' }}> + +
+ +
+ frekuensi_pemberian_pupuk) == 'Lebih dari 2 kali/tahun' ? 'checked' : '' }}> + +
+ +
+ + + + + +
+ + @error('frekuensi_pemupukan') +
{{ $message }}
+ @enderror +
+
+ + +
+ + + Kg +
+ + @error('estimasi_dosis_pupuk_organik') +
{{ $message }}
+ @enderror +
+
+ + +
+ + + Kg +
+ + @error('estimasi_dosis_pupuk_anorganik') +
{{ $message }}
+ @enderror +
+
+ + +
+ waktu_pemberian_pupuk) == 'Awal musim hujan' ? 'checked' : '' }}> + +
+ +
+ waktu_pemberian_pupuk) == 'Akhir musim hujan' ? 'checked' : '' }}> + +
+ +
+ waktu_pemberian_pupuk) == 'Sebelum berbunga' ? 'checked' : '' }}> + +
+ +
+ waktu_pemberian_pupuk) == 'Sebelum Setelah Panen' ? 'checked' : '' }}> + +
+ +
+ waktu_pemberian_pupuk) == 'Tidak Menentu' ? 'checked' : '' }}> + +
+ +
+ + + + + +
+ + @error('waktu_pemberian_pupuk') +
{{ $message }}
+ @enderror +
+
+ + +
+ cara_pemberian_pupuk) == 'Ditabur di sekitar pohon' ? 'checked' : '' }}> + +
+ +
+ cara_pemberian_pupuk) == 'Dibenamkan dalam lubang/parit' ? 'checked' : '' }}> + +
+ +
+ cara_pemberian_pupuk) == 'Dicairkan/dikocor' ? 'checked' : '' }}> + +
+ +
+ cara_pemberian_pupuk) == 'Disemprotkan ke daun' ? 'checked' : '' }}> + +
+ +
+ + + + + +
+ + @error('cara_pemberian_pupuk') +
{{ $message }}
+ @enderror +
+
+
+ +
+
+
+
+ +
+ + @csrf + @method('PUT') + +
+
+ +
Pengendalian Organisme Pengganggu Tumbuhan (OPT)
+
+
+ + + @error('metode_penanganan_hama_penyakit')
{{ $message }}
@enderror +
+
+ + +
+ jenis_hama ?? [])) ? 'checked' : '' }}> + +
+ +
+ jenis_hama ?? [])) ? 'checked' : '' }}> + +
+ +
+ jenis_hama ?? [])) ? 'checked' : '' }}> + +
+ +
+ jenis_hama ?? [])) ? 'checked' : '' }}> + +
+ +
+ jenis_hama ?? [])) ? 'checked' : '' }}> + +
+ @error('jenis_hama') +
{{ $message }}
+ @enderror +
+
+ + +
+ jenis_penyakit ?? [])) ? 'checked' : '' }} + +
+ +
+ jenis_penyakit ?? [])) ? 'checked' : '' }} + +
+ +
+ jenis_penyakit ?? [])) ? 'checked' : '' }} + +
+ +
+ jenis_penyakit ?? [])) ? 'checked' : '' }} + +
+ +
+ jenis_penyakit ?? [])) ? 'checked' : '' }} + +
+ + @error('jenis_penyakit') +
{{ $message }}
+ @enderror +
+
+ + + @error('intensitas_serangan')
{{ $message }}
@enderror +
+
+ + + @error('waktu_kemunculan_terparah')
{{ $message }}
@enderror +
+
+ + + @error('metode_paling_sereng_dilakukan')
{{ $message }}
@enderror +
+
+ + +
+ + + Kg +
+ + @error('volume_obat_obatan_permusim') +
{{ $message }}
+ @enderror +
+
+
Sanitasi Kebun
+
+
+ + + @error('frekuensi_sanitasi_lahan')
{{ $message }}
@enderror +
+
+ + + @error('penanganan_sisa_buah_ranting')
{{ $message }}
@enderror +
+
+ + + @error('penanganan_gulma')
{{ $message }}
@enderror +
+
+
Pengelolaan Air & Irigasi
+
+
+ + + @error('kondisi_pengelolaan_air_irigasi')
{{ $message }}
@enderror +
+
+ + +
+ sumber_air) == 'Sungai/mata air' ? 'checked' : '' }}> + +
+ +
+ sumber_air) == 'Sumur' ? 'checked' : '' }}> + +
+ +
+ sumber_air) == 'Mengandalkan hujan saja' ? 'checked' : '' }}> + +
+ +
+ + + + + +
+ + @error('sumber_air') +
{{ $message }}
+ @enderror +
+
+ + +
+ sistem_irigasi) == 'Tidak ada irigasi' ? 'checked' : '' }}> + +
+ +
+ sistem_irigasi) == 'Milik sendiri' ? 'checked' : '' }}> + +
+ +
+ sistem_irigasi) == 'Milik komunitas/kelompok tani' ? 'checked' : '' }}> + +
+ +
+ sistem_irigasi) == 'Milik pemerintah' ? 'checked' : '' }}> + +
+ +
+ + + + + +
+ + @error('sistem_irigasi') +
{{ $message }}
+ @enderror +
+
+ + + @error('kebutuhan_air_permusim')
{{ $message }}
@enderror +
+
+
Praktik Konservasi Tanah
+
+
+ + +
+ kebiasaan_konservasi_tanah ?? [])) ? 'checked' : '' }}> + +
+ +
+ kebiasaan_konservasi_tanah ?? [])) ? 'checked' : '' }}> + +
+ +
+ kebiasaan_konservasi_tanah ?? [])) ? 'checked' : '' }}> + +
+ +
+ kebiasaan_konservasi_tanah ?? [])) ? 'checked' : '' }}> + +
+ +
+ kebiasaan_konservasi_tanah ?? [])) ? 'checked' : '' }}> + +
+ @error('jenis_hama') +
{{ $message }}
+ @enderror +
+
+ + + @error('pemahaman_manfaat_konservasi')
{{ $message }}
@enderror +
+
+
+ +
+
+
+
+
+ + @csrf + @method('PUT') + +
+
+ +
Struktur Biaya Produksi Permusim
+
+
+ + + @error('upah_tenaga_kerja')
{{ $message }}
@enderror +
+
+ + + @error('biaya_bibit')
{{ $message }}
@enderror +
+
+ + + @error('biaya_pupuk')
{{ $message }}
@enderror +
+
+ + + @error('biaya_pestisida')
{{ $message }}
@enderror +
+
+ + + @error('biaya_sewa_alat')
{{ $message }}
@enderror +
+
+ + + @error('biaya_penyediaan-air')
{{ $message }}
@enderror +
+
+ + + @error('biaya_lainnya')
{{ $message }}
@enderror +
+
+ + + @error('total_estimasi_biaya_produksi')
{{ $message }}
@enderror +
+
+
Cara Mementukan Kematangan
+
+
+ + + @error('dasar_penentuan_panen')
{{ $message }}
@enderror +
+
+
Frekuensi & Waktu Panen
+
+
+ + +
+ + + Panen/Tahun +
+ + @error('frekuensi_panen_pertahun') +
{{ $message }}
+ @enderror +
+
+ + + @error('bulan_panen_utama')
{{ $message }}
@enderror +
+
+
Hasil Panen Aktual
+
+
+ + +
+ + + Kg/Tahun +
+ + @error('hasil_panen_komoditas_utama') +
{{ $message }}
+ @enderror +
+
+ + +
+ + + Kg/Tahun +
+ + @error('hasil_panen_komoditas_lainnya') +
{{ $message }}
+ @enderror +
+
+ + + +
+
+
+
+ + +
+ + + Kg/Tahun +
+ + @error('hasil_panen_disimpan') +
{{ $message }}
+ @enderror +
+
+ + + @error('tujuan_disimpan')
{{ $message }}
@enderror +
+
+
+ +
+
+
+
+
+ + @csrf + @method('PUT') + +
+
+
Penanganan Awal Setelah Panen
+
+
+ + + @error('praktik_sortasi')
{{ $message }}
@enderror +
+
+ + + @error('bentuk_sortasi')
{{ $message }}
@enderror +
+
+
Hasil Panen Reject & Estimasi Biaya Panen
+
+
+ + + @error('upah_tenaga_panen')
{{ $message }}
@enderror +
+
+ + + @error('biaya_pengangkutan')
{{ $message }}
@enderror +
+
+ + + @error('biaya_wadah_kemasan')
{{ $message }}
@enderror +
+
+ + + @error('biaya_sewa_alat_panen')
{{ $message }}
@enderror +
+
+ + + @error('biaya_panen_lainnya')
{{ $message }}
@enderror +
+
+ + + @error('total_estimasi_biaya_panen')
{{ $message }}
@enderror +
+
+
+ +
+
+
+
+
+
+
+ Produktivitas Rata-rata 3 Musim Panen Terakhir per Komoditas +
+
+
+
+
+
+ + +
+
+ +
+ + Kg +
+
+
+ +
+ + +
+
+ + +
+
+
+ + +
+
+
+
+
+
+ +
+
+ +
+
+
+ + @csrf + @method('PUT') + +
+
+
Kehilangan Hasil Akibat Organisme Pengganggu Tumbuhan (OPT)
+
+
+ + +
+ estimasi_kehilangan_hasil) == 'Selalu, setiap musim berbunga' ? 'checked' : '' }}> + +
+ +
+ estimasi_kehilangan_hasil) == 'Kadang-kadang, tergantung kondisi' ? 'checked' : '' }}> + +
+ +
+ estimasi_kehilangan_hasil) == 'Tidak pernah' ? 'checked' : '' }}> + +
+ +
+ estimasi_kehilangan_hasil) == 'Lainnya' ? 'checked' : '' }}> + + + + +
+ + @error('estimasi_kehilangan_hasil') +
{{ $message }}
+ @enderror +
+
+
+ +
+
+
+
+
+
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 7fec260..01bd014 100644 --- a/routes/web.php +++ b/routes/web.php @@ -194,6 +194,7 @@ Route::middleware('auth') Route::resource('petani.lahan-tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanController::class)->whereNumber('petani'); Route::resource('petani.lahan-tanaman.tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanTanamanController::class)->only(['show', 'update', 'destroy'])->whereNumber('petani'); Route::resource('petani.praktik-budidaya', App\Http\Controllers\Web\Produktivitas\PraktikBudidayaController::class)->whereNumber('petani'); + Route::resource('petani.pendidikan-pelatihan', App\Http\Controllers\Web\Produktivitas\PendidikanPelatihanController::class); Route::resource('petani.sosial-ekonomi', App\Http\Controllers\Web\Produktivitas\SosialEkonomiController::class)->whereNumber('petani'); Route::resource('petani.akses-pasar', App\Http\Controllers\Web\Produktivitas\AksesPasarController::class)->whereNumber('petani'); }); From 2eb40f8a1a64ec890f9ff97938e40d26695a6d4c Mon Sep 17 00:00:00 2001 From: SyaharaniSalsabilla Date: Tue, 7 Jul 2026 15:41:02 +0700 Subject: [PATCH 4/6] enums sosial ekonomi --- app/Enums/KategoriPendapatanKomoditas.php | 14 +++ app/Enums/PeriodePendapatan.php | 14 +++ app/Enums/PihakMembantuKonflik.php | 27 ++++++ app/Enums/SkorKecukupanPenghasilan.php | 36 ++++++++ app/Enums/SkorKejelasanStatusLahan.php | 36 ++++++++ app/Enums/SkorKemampuanMenabung.php | 36 ++++++++ app/Enums/SkorPeriodePaceklik.php | 36 ++++++++ .../StatusKepemilikanLahanSosialEkonomi.php | 30 +++++++ app/Enums/StatusKonflik.php | 27 ++++++ .../Web/Dashboard/DistribusiController.php | 20 +++++ .../Produktivitas/SosialEkonomiController.php | 69 +++++++++++--- app/Models/Pertanian/SosialEkonomi.php | 18 +++- .../views/dashboard/distribusi.blade.php | 16 ++++ .../petani/sosial-ekonomi/edit.blade.php | 90 +++++++++---------- .../petani/sosial-ekonomi/index.blade.php | 90 +++++++++---------- 15 files changed, 451 insertions(+), 108 deletions(-) create mode 100644 app/Enums/KategoriPendapatanKomoditas.php create mode 100644 app/Enums/PeriodePendapatan.php create mode 100644 app/Enums/PihakMembantuKonflik.php create mode 100644 app/Enums/SkorKecukupanPenghasilan.php create mode 100644 app/Enums/SkorKejelasanStatusLahan.php create mode 100644 app/Enums/SkorKemampuanMenabung.php create mode 100644 app/Enums/SkorPeriodePaceklik.php create mode 100644 app/Enums/StatusKepemilikanLahanSosialEkonomi.php create mode 100644 app/Enums/StatusKonflik.php create mode 100644 app/Http/Controllers/Web/Dashboard/DistribusiController.php create mode 100644 resources/views/dashboard/distribusi.blade.php diff --git a/app/Enums/KategoriPendapatanKomoditas.php b/app/Enums/KategoriPendapatanKomoditas.php new file mode 100644 index 0000000..98b3cdc --- /dev/null +++ b/app/Enums/KategoriPendapatanKomoditas.php @@ -0,0 +1,14 @@ +value; + } + + public static function options(): array + { + return collect(self::cases())->map(fn ($case) => [ + 'value' => $case->value, + 'label' => $case->label(), + ])->toArray(); + } + + public static function values(): array + { + return array_column(self::cases(), 'value'); + } +} diff --git a/app/Enums/SkorKecukupanPenghasilan.php b/app/Enums/SkorKecukupanPenghasilan.php new file mode 100644 index 0000000..d359b3a --- /dev/null +++ b/app/Enums/SkorKecukupanPenghasilan.php @@ -0,0 +1,36 @@ + 'Sangat tidak cukup', + self::KURANG_SERING_BERHUTANG => 'Kurang, sering berhutang', + self::CUKUP_PAS_PASAN => 'Cukup pas-pasan', + self::CUKUP_ADA_SISA => 'Cukup, kadang ada sisa', + self::LEBIH_DARI_CUKUP => 'Lebih dari cukup', + }; + } + + public static function options(): array + { + return collect(self::cases())->map(fn ($case) => [ + 'value' => $case->value, + 'label' => $case->label(), + ])->toArray(); + } + + public static function values(): array + { + return array_column(self::cases(), 'value'); + } +} diff --git a/app/Enums/SkorKejelasanStatusLahan.php b/app/Enums/SkorKejelasanStatusLahan.php new file mode 100644 index 0000000..ad7662a --- /dev/null +++ b/app/Enums/SkorKejelasanStatusLahan.php @@ -0,0 +1,36 @@ + 'Tidak ada dokumen & ada sengketa', + self::ADA_DOKUMEN_MASIH_SENGKETA => 'Ada dokumen tapi masih sengketa', + self::PERNAH_SENGKETA_SELESAI => 'Pernah sengketa, sudah selesai', + self::LAHAN_ADAT_TANPA_SENGKETA => 'Lahan adat/keluarga/perhutanan sosial tanpa sengketa', + self::BERSERTIFIKAT_TANPA_SENGKETA => 'Bersertifikat & tidak ada sengketa', + }; + } + + public static function options(): array + { + return collect(self::cases())->map(fn ($case) => [ + 'value' => $case->value, + 'label' => $case->label(), + ])->toArray(); + } + + public static function values(): array + { + return array_column(self::cases(), 'value'); + } +} diff --git a/app/Enums/SkorKemampuanMenabung.php b/app/Enums/SkorKemampuanMenabung.php new file mode 100644 index 0000000..6297708 --- /dev/null +++ b/app/Enums/SkorKemampuanMenabung.php @@ -0,0 +1,36 @@ + 'Tidak bisa sama sekali', + self::PERNAH_TERPAKAI => 'Pernah tapi selalu terpakai', + self::KADANG_KADANG => 'Kadang-kadang', + self::BISA_TIDAK_TETAP => 'Bisa tapi tidak tetap', + self::RUTIN_TETAP => 'Rutin & jumlah tetap', + }; + } + + public static function options(): array + { + return collect(self::cases())->map(fn ($case) => [ + 'value' => $case->value, + 'label' => $case->label(), + ])->toArray(); + } + + public static function values(): array + { + return array_column(self::cases(), 'value'); + } +} diff --git a/app/Enums/SkorPeriodePaceklik.php b/app/Enums/SkorPeriodePaceklik.php new file mode 100644 index 0000000..3524bb4 --- /dev/null +++ b/app/Enums/SkorPeriodePaceklik.php @@ -0,0 +1,36 @@ + '>4 bulan', + self::TIGA_SAMPAI_EMPAT_BULAN => '3-4 bulan', + self::SATU_SAMPAI_DUA_BULAN => '1-2 bulan', + self::SEBENTAR_TIDAK_MENENTU => 'Sebentar & tidak menentu', + self::TIDAK_ADA_STABIL => 'Tidak ada, stabil', + }; + } + + public static function options(): array + { + return collect(self::cases())->map(fn ($case) => [ + 'value' => $case->value, + 'label' => $case->label(), + ])->toArray(); + } + + public static function values(): array + { + return array_column(self::cases(), 'value'); + } +} diff --git a/app/Enums/StatusKepemilikanLahanSosialEkonomi.php b/app/Enums/StatusKepemilikanLahanSosialEkonomi.php new file mode 100644 index 0000000..935ef44 --- /dev/null +++ b/app/Enums/StatusKepemilikanLahanSosialEkonomi.php @@ -0,0 +1,30 @@ +value; + } + + public static function options(): array + { + return collect(self::cases())->map(fn ($case) => [ + 'value' => $case->value, + 'label' => $case->label(), + ])->toArray(); + } + + public static function values(): array + { + return array_column(self::cases(), 'value'); + } +} diff --git a/app/Enums/StatusKonflik.php b/app/Enums/StatusKonflik.php new file mode 100644 index 0000000..eb6b62e --- /dev/null +++ b/app/Enums/StatusKonflik.php @@ -0,0 +1,27 @@ +value; + } + + public static function options(): array + { + return collect(self::cases())->map(fn ($case) => [ + 'value' => $case->value, + 'label' => $case->label(), + ])->toArray(); + } + + public static function values(): array + { + return array_column(self::cases(), 'value'); + } +} diff --git a/app/Http/Controllers/Web/Dashboard/DistribusiController.php b/app/Http/Controllers/Web/Dashboard/DistribusiController.php new file mode 100644 index 0000000..6d15a5a --- /dev/null +++ b/app/Http/Controllers/Web/Dashboard/DistribusiController.php @@ -0,0 +1,20 @@ +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(), + ]; + } + } diff --git a/app/Models/Pertanian/SosialEkonomi.php b/app/Models/Pertanian/SosialEkonomi.php index b87be0e..f3e2a1a 100644 --- a/app/Models/Pertanian/SosialEkonomi.php +++ b/app/Models/Pertanian/SosialEkonomi.php @@ -2,6 +2,13 @@ namespace App\Models\Pertanian; +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 Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -45,15 +52,18 @@ class SosialEkonomi extends Model 'jumlah_tanggungan' => 'integer', 'anak_masih_sekolah' => 'integer', 'yang_ikut_bekerja' => 'integer', - 'skor_periode_paceklik' => 'integer', + 'skor_periode_paceklik' => SkorPeriodePaceklik::class, 'total_estimasi_biaya_kebun_per_musim' => 'integer', - 'skor_kemampuan_menabung' => 'integer', + 'skor_kemampuan_menabung' => SkorKemampuanMenabung::class, 'estimasi_tabungan_per_bulan' => 'integer', - 'skor_kecukupan_penghasilan' => 'integer', - 'skor_kejelasan_status_lahan' => 'integer', + 'skor_kecukupan_penghasilan' => SkorKecukupanPenghasilan::class, + 'status_kepemilikan_lahan' => StatusKepemilikanLahanSosialEkonomi::class, + 'skor_kejelasan_status_lahan' => SkorKejelasanStatusLahan::class, 'ada_sertifikat_dokumen' => 'boolean', 'ada_sengketa' => 'boolean', + 'pihak_membantu_konflik' => PihakMembantuKonflik::class, 'tahun_bantuan_konflik' => 'integer', + 'status_konflik' => StatusKonflik::class, ]; public function petani(): BelongsTo diff --git a/resources/views/dashboard/distribusi.blade.php b/resources/views/dashboard/distribusi.blade.php new file mode 100644 index 0000000..1b88102 --- /dev/null +++ b/resources/views/dashboard/distribusi.blade.php @@ -0,0 +1,16 @@ +@extends('layout.main') + +@section('content') +
+
+
+
{{ $title }}
+
+
+

+ Dashboard distribusi sedang disiapkan. +

+
+
+
+@endsection diff --git a/resources/views/produktivitas/petani/sosial-ekonomi/edit.blade.php b/resources/views/produktivitas/petani/sosial-ekonomi/edit.blade.php index 33e3f20..df75a1f 100644 --- a/resources/views/produktivitas/petani/sosial-ekonomi/edit.blade.php +++ b/resources/views/produktivitas/petani/sosial-ekonomi/edit.blade.php @@ -202,15 +202,14 @@
Stabilitas Penghasilan
- - + @php $skorPeriodePaceklikValue = old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik?->value); @endphp + + @foreach($periodePaceklikOptions as $option) +
+ + +
+ @endforeach @error('skor_periode_paceklik')
{{ $message }}
@enderror
@@ -237,15 +236,14 @@ @error('total_estimasi_biaya_kebun_per_musim')
{{ $message }}
@enderror
- - + @php $skorKemampuanMenabungValue = old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung?->value); @endphp + + @foreach($kemampuanMenabungOptions as $option) +
+ + +
+ @endforeach @error('skor_kemampuan_menabung')
{{ $message }}
@enderror
@@ -262,15 +260,14 @@
Persepsi Kecukupan Penghasilan
- - + @php $skorKecukupanPenghasilanValue = old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan?->value); @endphp + + @foreach($kecukupanPenghasilanOptions as $option) +
+ + +
+ @endforeach @error('skor_kecukupan_penghasilan')
{{ $message }}
@enderror
@@ -286,22 +283,21 @@ @error('status_kepemilikan_lahan')
{{ $message }}
@enderror
- - + @php $skorKejelasanStatusLahanValue = old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan?->value); @endphp + + @foreach($kejelasanStatusLahanOptions as $option) +
+ + +
+ @endforeach @error('skor_kejelasan_status_lahan')
{{ $message }}
@enderror
@@ -345,8 +341,9 @@ @error('pihak_membantu_konflik')
{{ $message }}
@enderror
@@ -364,8 +361,9 @@ @error('status_konflik')
{{ $message }}
@enderror
@@ -373,7 +371,7 @@
@@ -388,7 +386,9 @@