Update Praktik Budidaya

This commit is contained in:
2026-07-07 23:24:48 +07:00
parent ff3f930939
commit 734c3fba65
3 changed files with 468 additions and 100 deletions
@@ -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.');
}
}