From 5cee65f8dfd21535055ed66409b381a64366c42c Mon Sep 17 00:00:00 2001 From: SyaharaniSalsabilla Date: Thu, 2 Jul 2026 14:24:44 +0700 Subject: [PATCH 1/4] update field sosial ekonomi --- .../Produktivitas/SosialEkonomiController.php | 39 +++++- .../petani/sosial-ekonomi/index.blade.php | 111 ++++++++++++++++-- 2 files changed, 139 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php b/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php index a229277..900f029 100644 --- a/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php +++ b/app/Http/Controllers/Web/Produktivitas/SosialEkonomiController.php @@ -3,9 +3,12 @@ namespace App\Http\Controllers\Web\Produktivitas; use App\Http\Controllers\Controller; +use App\Models\Pertanian\Komoditas; +use App\Models\Pertanian\Lahan; use App\Models\Pertanian\Petani; use App\Models\Pertanian\SosialEkonomi; use Illuminate\Http\JsonResponse; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; @@ -27,13 +30,15 @@ class SosialEkonomiController extends Controller $pendapatanKomoditasUtama = $pendapatanKomoditas->where('kategori', 'utama')->values(); $pendapatanKomoditasLainnya = $pendapatanKomoditas->where('kategori', 'lainnya')->values(); $pendapatanLuarPertanian = $sosialEkonomi?->pendapatanLuarPertanian?->values() ?? collect(); + $komoditasPetani = $this->komoditasPetani($petani); return view('produktivitas.petani.sosial-ekonomi.index', compact( 'petani', 'sosialEkonomi', 'pendapatanKomoditasUtama', 'pendapatanKomoditasLainnya', - 'pendapatanLuarPertanian' + 'pendapatanLuarPertanian', + 'komoditasPetani' )); } @@ -56,7 +61,7 @@ class SosialEkonomiController extends Controller return response()->json($sosialEkonomi); } - public function store(Request $request): JsonResponse + public function store(Request $request): JsonResponse|RedirectResponse { $validated = $this->validateData($request); @@ -103,7 +108,7 @@ class SosialEkonomiController extends Controller ]); } - public function update(Request $request, string $id): JsonResponse + public function update(Request $request, string $id): JsonResponse|RedirectResponse { $sosialEkonomi = SosialEkonomi::findOrFail($id); $validated = $this->validateData($request, $sosialEkonomi->id); @@ -201,12 +206,19 @@ class SosialEkonomiController extends Controller private function sosialEkonomiPayload(array $validated): array { - return collect($validated) + $payload = collect($validated) ->except(['pendapatan_komoditas', 'pendapatan_luar_pertanian']) ->merge([ 'uid' => $validated['uid'] ?? 'SEK-' . Str::uuid(), ]) ->all(); + + if (($payload['pihak_membantu_konflik'] ?? null) === 'Tidak ada-selesaikan sendiri') { + $payload['pihak_membantu_konflik_nama'] = null; + $payload['tahun_bantuan_konflik'] = null; + } + + return $payload; } private function syncPendapatanKomoditas(SosialEkonomi $sosialEkonomi, array $items): void @@ -261,4 +273,23 @@ class SosialEkonomiController extends Controller return filled($item['jenis_pekerjaan'] ?? null) || filled($item['estimasi_per_bulan'] ?? null); } + + private function komoditasPetani(Petani $petani) + { + $komoditasIds = Lahan::query() + ->whereNotNull('komoditas_id') + ->where(function ($query) use ($petani) { + $query->where('petani_id', $petani->id); + + if ($petani->profile_id) { + $query->orWhere('profile_id', $petani->profile_id); + } + }) + ->distinct() + ->pluck('komoditas_id'); + + return Komoditas::whereIn('id', $komoditasIds) + ->orderBy('nama') + ->get(); + } } diff --git a/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php b/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php index f173946..57b8c0c 100644 --- a/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php +++ b/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php @@ -50,6 +50,11 @@
Pendapatan dari Komoditas Utama
+ @if($komoditasPetani->isEmpty()) +
+ Petani ini belum memiliki komoditas pada data lahan. Tambahkan data Lahan & Tanaman terlebih dahulu agar pilihan komoditas tersedia. +
+ @endif
@@ -62,10 +67,16 @@ @for($i = 0; $i < 2; $i++) @php($item = $pendapatanKomoditasUtama->get($i)) - + + @for($i = 0; $i < 2; $i++) @php($item = $pendapatanLuarPertanian->get($i)) - + @endfor @@ -190,7 +193,8 @@
- + @php($biayaKebunValue = old('total_estimasi_biaya_kebun_per_musim', $sosialEkonomi?->total_estimasi_biaya_kebun_per_musim)) + @error('total_estimasi_biaya_kebun_per_musim')
{{ $message }}
@enderror
@@ -207,7 +211,8 @@
- + @php($tabunganValue = old('estimasi_tabungan_per_bulan', $sosialEkonomi?->estimasi_tabungan_per_bulan)) + @error('estimasi_tabungan_per_bulan')
{{ $message }}
@enderror
@@ -404,8 +409,31 @@ } } + function onlyDigits(value) { + return String(value || '').replace(/\D/g, ''); + } + + function formatRupiah(value) { + const digits = onlyDigits(value); + + return digits.replace(/\B(?=(\d{3})+(?!\d))/g, '.'); + } + $('.sosial-ekonomi-komoditas-utama').on('change', syncKomoditasLainnyaOptions); $('.pendapatan-trigger').on('change keyup', syncAllPendapatanRows); + $('.currency-input').on('input', function () { + const cursorAtEnd = this.selectionStart === this.value.length; + this.value = formatRupiah(this.value); + + if (cursorAtEnd) { + this.setSelectionRange(this.value.length, this.value.length); + } + }); + $('form').on('submit', function () { + $(this).find('.currency-input').each(function () { + this.value = onlyDigits(this.value); + }); + }); $('#pihak-membantu').on('change', syncPihakMembantuFields); syncKomoditasLainnyaOptions(); syncAllPendapatanRows(); From 27e084bc9e456253790c9b5d688d148e1fb8587b Mon Sep 17 00:00:00 2001 From: ahmadafriadi Date: Thu, 2 Jul 2026 14:40:15 +0700 Subject: [PATCH 3/4] Update Praktik Budidaya --- .../PraktikBudidayaController.php | 24 ++ .../produktivitas/petani/header.blade.php | 4 +- .../petani/praktik-budidaya/add.blade.php | 326 ++++++++++++++++++ routes/web.php | 7 +- 4 files changed, 356 insertions(+), 5 deletions(-) create mode 100644 app/Http/Controllers/Web/Produktivitas/PraktikBudidayaController.php create mode 100644 resources/views/produktivitas/petani/praktik-budidaya/add.blade.php diff --git a/app/Http/Controllers/Web/Produktivitas/PraktikBudidayaController.php b/app/Http/Controllers/Web/Produktivitas/PraktikBudidayaController.php new file mode 100644 index 0000000..cee7c7b --- /dev/null +++ b/app/Http/Controllers/Web/Produktivitas/PraktikBudidayaController.php @@ -0,0 +1,24 @@ + @@ -82,7 +82,7 @@ diff --git a/resources/views/produktivitas/petani/praktik-budidaya/add.blade.php b/resources/views/produktivitas/petani/praktik-budidaya/add.blade.php new file mode 100644 index 0000000..6ccdfda --- /dev/null +++ b/resources/views/produktivitas/petani/praktik-budidaya/add.blade.php @@ -0,0 +1,326 @@ +@extends('layout.main') + +@section('content') +
+ @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + +
+ + + +
+ + @include('produktivitas.petani.header', ['petani' => $petani]) + +
+
+ +
Persiapan Lahan & Tanaman
+
+
+ + + @error('tenaga_kerja')
{{ $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' : '' }}> + +
+ +
+ teknik_pemangkasan, true))) && in_array('lainnya', old('teknik_pemangkasan', json_decode($petani->teknik_pemangkasan, true)))) ? 'checked' : '' }}> + + + + +
+ + @error('teknik_pemangkasan') +
{{ $message }}
+ @enderror +
+
+ + + @error('frekuensi_pemangkasan_pohon_penaung')
{{ $message }}
@enderror +
+
+
+
+ + +
+ penyerbukan_manual) == 'Selalu, setiap musim berbunga' ? 'checked' : '' }}> + +
+ +
+ penyerbukan_manual) == 'Kadang-kadang, tergantung kondisi' ? 'checked' : '' }}> + +
+ +
+ 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' : '' }}> + + + + +
+ + @error('alasan_tidak_penyerbukan') +
{{ $message }}
+ @enderror +
+
+
+ +
+
+
+
+
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index ac93d79..7517d25 100644 --- a/routes/web.php +++ b/routes/web.php @@ -186,8 +186,9 @@ Route::middleware('auth') Route::resource('verifikasi', App\Http\Controllers\Web\Program\VerifikasiController::class)->only('store', 'destroy'); // Petani - Route::get('petani/{petani}/sosial-ekonomi', [App\Http\Controllers\Web\Produktivitas\SosialEkonomiController::class, 'editByPetani'])->name('petani.sosial-ekonomi.edit'); Route::resource('petani', App\Http\Controllers\Web\Produktivitas\PetaniController::class); - Route::resource('sosial-ekonomi', App\Http\Controllers\Web\Produktivitas\SosialEkonomiController::class)->except(['create', 'edit']); Route::resource('petani.lahan-tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanController::class); - Route::resource('petani.lahan-tanaman.tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanTanamanController::class)->only(['show', 'update', 'destroy']);}); + Route::resource('petani.lahan-tanaman.tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanTanamanController::class)->only(['show', 'update', 'destroy']); + Route::resource('petani.praktik-budidaya', App\Http\Controllers\Web\Produktivitas\PraktikBudidayaController::class); + Route::resource('petani.sosial-ekonomi', App\Http\Controllers\Web\Produktivitas\SosialEkonomiController::class); +}); \ No newline at end of file From eea9f4dec8525bdbe5f81a122b3de0ffea9e429d Mon Sep 17 00:00:00 2001 From: SyaharaniSalsabilla Date: Fri, 3 Jul 2026 11:24:39 +0700 Subject: [PATCH 4/4] update view sosial ekonomi --- .../petani/sosial-ekonomi/index.blade.php | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php b/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php index be8491b..92b5da4 100644 --- a/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php +++ b/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php @@ -168,12 +168,12 @@
@error('skor_periode_paceklik')
{{ $message }}
@enderror
@@ -200,12 +200,12 @@
@error('skor_kemampuan_menabung')
{{ $message }}
@enderror
@@ -222,12 +222,12 @@
@error('skor_kecukupan_penghasilan')
{{ $message }}
@enderror
@@ -243,7 +243,7 @@
- - - - - - + + + + + + @error('skor_kejelasan_status_lahan')
{{ $message }}
@enderror
- komoditas) }}"> + @php($selectedKomoditas = old("pendapatan_komoditas.$i.komoditas", $item?->komoditas)) + pendapatan) }}"> @@ -97,10 +108,16 @@ @for($i = 0; $i < 2; $i++) @php($item = $pendapatanKomoditasLainnya->get($i)) @php($index = $i + 2) -
- komoditas) }}"> + @php($selectedKomoditas = old("pendapatan_komoditas.$index.komoditas", $item?->komoditas)) + pendapatan) }}"> @@ -130,9 +147,9 @@
- jenis_pekerjaan) }}"> + jenis_pekerjaan) }}"> estimasi_per_bulan) }}"> @@ -312,7 +329,87 @@ @endpush From 3b1a0f52ddf124f28db316ba4370c8197b87bc83 Mon Sep 17 00:00:00 2001 From: SyaharaniSalsabilla Date: Thu, 2 Jul 2026 14:36:25 +0700 Subject: [PATCH 2/4] update field sosial ekonomi --- .../petani/sosial-ekonomi/index.blade.php | 38 ++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php b/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php index 57b8c0c..be8491b 100644 --- a/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php +++ b/resources/views/produktivitas/petani/sosial-ekonomi/index.blade.php @@ -79,7 +79,8 @@ - pendapatan) }}"> + @php($pendapatanValue = old("pendapatan_komoditas.$i.pendapatan", $item?->pendapatan)) + - pendapatan) }}"> + @php($pendapatanValue = old("pendapatan_komoditas.$index.pendapatan", $item?->pendapatan)) + jenis_pekerjaan) }}"> - estimasi_per_bulan) }}"> + @php($estimasiValue = old("pendapatan_luar_pertanian.$i.estimasi_per_bulan", $item?->estimasi_per_bulan)) +