diff --git a/app/Http/Controllers/Web/Produktivitas/PraktikBudidayaController.php b/app/Http/Controllers/Web/Produktivitas/PraktikBudidayaController.php index 643524d..bf4eb20 100644 --- a/app/Http/Controllers/Web/Produktivitas/PraktikBudidayaController.php +++ b/app/Http/Controllers/Web/Produktivitas/PraktikBudidayaController.php @@ -18,6 +18,15 @@ use App\Enums\PraktikBudidaya\FrekuensiPemangkasanPendamping; use App\Enums\PraktikBudidaya\PemberianPupuk; use App\Enums\PraktikBudidaya\JenisPupuk; use App\Enums\PraktikBudidaya\PenyerbukanManual; +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; class PraktikBudidayaController extends Controller { @@ -268,4 +277,144 @@ class PraktikBudidayaController extends Controller return view('produktivitas.petani.praktik-budidaya.edit', compact('title', 'petani', 'praktikBudidaya', 'teknikPemangkasanLainnya', 'alasanTidakPenyerbukanLainnya', 'frekuensiPemupukanLainnya', 'waktuPemberianPupukLainnya', 'caraPemberianPupukLainnya', 'sumberAirLainnya', 'sistemIrigasiLainnya')); } + + public function update($petaniId, $praktikBudidayaId, Request $request) + { + if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) { + abort(403); + } + + // dd($request->all()); + + $praktikBudidaya = PraktikBudidaya::where('petani_id', $petaniId) + ->where('id', $praktikBudidayaId) + ->firstOrFail(); + + $validatedData = $request->validate([ + // 2.2 Persiapan Lahan & Penanaman + 'tenaga_kerja' => ['nullable', 'string', new Enum(TenagaKerja::class)], + + // 2.3 Praktik Pemangkasan & Penyerbukan + 'frekuensi_pemangkasan_komoditas_utama' => ['nullable', 'integer', new Enum(FrekuensiPemangkasanUtama::class)], + 'teknik_pemangkasan' => ['nullable', 'array'], + 'teknik_pemangkasan.*' => ['string'], + 'teknik_pemangkasan_lainnya' => ['nullable', 'string'], + 'frekuensi_pemangkasan_pohon_penaung' => ['nullable', 'integer', new Enum(FrekuensiPemangkasanPendamping::class)], + 'penyerbukan_manual' => ['nullable', 'integer', new Enum(PenyerbukanManual::class)], + 'alasan_tidak_penyerbukan' => ['nullable', 'string'], + 'alasan_tidak_penyerbukan_lainnya' => ['nullable', 'string'], + 'tingkat_keberhasilan_penyerbukan' => ['nullable', 'string'], + + // 2.4 Praktik Pemupukan + 'pemberian_pupuk' => ['nullable', 'integer', new Enum(PemberianPupuk::class)], + 'jenis_pupuk' => ['nullable', 'integer', new Enum(JenisPupuk::class)], + + 'frekuensi_pemupukan' => ['nullable', 'string'], + 'frekuensi_pemupukan_lainnya' => ['nullable', 'string'], + + 'estimasi_dosis_pupuk_organik' => ['nullable', 'numeric'], + 'estimasi_dosis_pupuk_anorganik' => ['nullable', 'numeric'], + + 'waktu_pemberian_pupuk' => ['nullable', 'string'], + 'waktu_pemberian_pupuk_lainnya' => ['nullable', 'string'], + + 'cara_pemberian_pupuk' => ['nullable', 'string'], + 'cara_pemberian_pupuk_lainnya' => ['nullable', 'string'], + + // 2.5 Pengendalian Organisme Pengganggu Tumbuhan (OPT) + 'metode_penanganan_hama_penyakit' => ['nullable', 'integer', new Enum(MetodePenangananHamaPenyakit::class)], + + 'jenis_hama' => ['nullable', 'array'], + + 'jenis_penyakit' => ['nullable', 'array'], + + 'intensitas_serangan' => ['nullable', 'string', new Enum(IntensitasSeranganHamaPenyakit::class)], + 'waktu_kemunculan_terparah' => ['nullable', 'string', new Enum(WaktuKemunculanTerparahHamaPenyakit::class)], + + 'metode_paling_sering_dilakukan' => ['nullable', 'string'], + + 'volume_obat_obatan_permusim' => ['nullable', 'numeric'], + + // 2.6 Sanitasi Kebun + + 'frekuensi_sanitasi_lahan' => ['nullable', 'integer', new Enum(FrekuensiSanitasiLahan::class)], + 'penanganan_sisa_buah_ranting' => ['nullable', 'string', new Enum(PenangananSisaBuahRanting::class)], + 'penanganan_gulma' => ['nullable', 'integer', new Enum(PenangananGulma::class)], + + + // 2.7 Pengelolaan Air & Irigasi + + 'kondisi_pengelolaan_air_irigasi' => ['nullable', 'integer', new Enum(KondisiPengelolaanAir::class)], + + 'sumber_air' => ['nullable', 'string'], + 'sumber_air_lainnya' => ['nullable', 'string'], + + 'sistem_irigasi' => ['nullable', 'string'], + 'sistem_irigasi_lainnya' => ['nullable', 'string'], + + 'kebutuhan_air_permusim' => ['nullable', 'string', new Enum(KebutuhanAirPermusim::class)], + + 'kebiasaan_konservasi_tanah' => ['nullable', 'array'], + 'kebiasaan_konservasi_tanah.*' => ['string'], + + 'pemahaman_manfaat_konservasi' => ['nullable', 'string', new Enum(PemahamanManfaatKonservasi::class)], + ]); + + $data = []; + + $petani = Petani::findOrFail($petaniId); + + if ($request->has('tenaga_kerja')) { + $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; + } + } + $data = [ + 'tenaga_kerja' => $validatedData['tenaga_kerja'], + 'frekuensi_pemangkasan_utama' => $validatedData['frekuensi_pemangkasan_komoditas_utama'], + + 'teknik_pemangkasan' => array_values($teknikPemangkasan), + + '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), + ]; + } + + if ($request->has('metode_penanganan_hama_penyakit')) { + $data = [ + 'metode_penanganan_opt' => $validatedData['metode_penanganan_hama_penyakit'] ?? null, + 'jenis_hama' => $validatedData['jenis_hama'] ?? [], + 'jenis_penyakit' => $validatedData['jenis_penyakit'] ?? [], + 'intensitas_serangan' => $validatedData['intensitas_serangan'] ?? null, + 'waktu_kemunculan_terparah' => $validatedData['waktu_kemunculan_terparah'] ?? null, + 'metode_paling_sering_dilakukan' => $validatedData['metode_paling_sering_dilakukan'] ?? null, + 'volume_obat_obatan_permusim' => $validatedData['volume_obat_obatan_permusim'] ?? null, + 'frekuensi_sanitasi_lahan' => $validatedData['frekuensi_sanitasi_lahan'] ?? null, + 'penanganan_sisa_buah_ranting' => $validatedData['penanganan_sisa_buah_ranting'] ?? null, + 'penanganan_gulma' => $validatedData['penanganan_gulma'] ?? null, + 'kondisi_pengelolaan_air' => $validatedData['kondisi_pengelolaan_air_irigasi'] ?? null, + 'sumber_air' => ($validatedData['sumber_air'] ?? null) === 'Lainnya' ? ($validatedData['sumber_air_lainnya'] ?? null) : ($validatedData['sumber_air'] ?? null), + 'sistem_irigasi' => ($validatedData['sistem_irigasi'] ?? null) === 'Lainnya' ? ($validatedData['sistem_irigasi_lainnya'] ?? null) : ($validatedData['sistem_irigasi'] ?? null), + 'kebutuhan_air_permusim' => $validatedData['kebutuhan_air_permusim'] ?? null, + 'kebiasaan_konservasi_tanah' => $validatedData['kebiasaan_konservasi_tanah'] ?? [], + 'pemahaman_manfaat_konservasi_tanah' => $validatedData['pemahaman_manfaat_konservasi'] ?? null, + ]; + } + + $praktikBudidaya->update($data); + + return back()->with('success', 'Data berhasil diperbarui.'); + } } diff --git a/app/Models/Pertanian/PraktikBudidaya.php b/app/Models/Pertanian/PraktikBudidaya.php new file mode 100644 index 0000000..d9ed8cf --- /dev/null +++ b/app/Models/Pertanian/PraktikBudidaya.php @@ -0,0 +1,67 @@ + 'array', + 'jenis_hama' => 'array', + 'jenis_penyakit' => 'array', + 'kebiasaan_konservasi_tanah' => 'array' + ]; + + protected $fillable = [ + 'uid', + 'petani_id', + 'tenaga_kerja', + 'frekuensi_pemangkasan_utama', + 'teknik_pemangkasan', + 'frekuensi_pemangkasan_penaung', + 'penyerbukan_manual', + 'deskripsi_penyerbukan_manual', + 'tingkat_keberhasilan_penyerbukan', + 'pemberian_pupuk', + 'jenis_pupuk', + 'frekuensi_pemberian_pupuk', + 'estimasi_dosis_pupuk_organik', + 'estimasi_dosis_pupuk_anorganik', + 'waktu_pemberian_pupuk', + 'cara_pemberian_pupuk', + 'metode_penanganan_opt', + 'jenis_hama', + 'jenis_penyakit', + 'intensitas_serangan', + 'waktu_kemunculan_terparah', + 'metode_paling_sering_dilakukan', + 'volume_obat_obatan_permusim', + 'satuan_volume_obat_obatan', + 'frekuensi_sanitasi_lahan', + 'penanganan_sisa_buah_ranting', + 'penanganan_gulma', + 'kondisi_pengelolaan_air', + 'sumber_air', + 'sistem_irigasi', + 'kebutuan_air_permusim', + 'kebiasaan_konservasi_tanah', + 'pemahaman_manfaat_konservasi_tanah', + // 'nilai_konservasi_tanah', + // 'upah_tenaga_kerja' + ]; + + public function petani(): BelongsTo + { + return $this->belongsTo(Petani::class, 'petani_id'); + } +} \ No newline at end of file diff --git a/resources/views/produktivitas/petani/praktik-budidaya/edit.blade.php b/resources/views/produktivitas/petani/praktik-budidaya/edit.blade.php index f7f61f1..054d1e9 100644 --- a/resources/views/produktivitas/petani/praktik-budidaya/edit.blade.php +++ b/resources/views/produktivitas/petani/praktik-budidaya/edit.blade.php @@ -104,11 +104,12 @@