diff --git a/app/Enums/PendidikanPelatihan/PelatihanGAP.php b/app/Enums/PendidikanPelatihan/PelatihanGAP.php index 3b13a3d..25bcbce 100644 --- a/app/Enums/PendidikanPelatihan/PelatihanGAP.php +++ b/app/Enums/PendidikanPelatihan/PelatihanGAP.php @@ -4,12 +4,13 @@ namespace App\Enums\PendidikanPelatihan; enum PelatihanGAP: string { - case PEMANGKASAN = 'Pemangkasan atau perawatan tanaman'; - case PEMUPUKAN = 'Pemupukan atau nutrisi tanah'; - case PENGENDALIAN = 'Pengendalian hama dan penyakit'; + case PEMANGKASAN = 'Pemangkasan/perawatan tanaman'; + case PEMUPUKAN = 'Pemupukan/nutrisi'; + case PENGENDALIAN = 'Pengendalian hama & penyakit'; case PRAKTIK = 'Praktik Berkebun yang Baik (GAP)'; case PENGOLAHAN = 'Pengolahan/pascapanen'; - case PENYERBUKAN = 'Penyerbukan manual (Vanili)'; + case PENYERBUKAN = 'Penyerbukan Manual (Vanili)'; + case LAINNYA = 'Lainnya'; public function label(): string { @@ -23,4 +24,4 @@ enum PelatihanGAP: string 'label' => $case->label(), ])->toArray(); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/Web/Dashboard/SurveyPetaniController.php b/app/Http/Controllers/Web/Dashboard/SurveyPetaniController.php index 6ce9279..21d92ea 100644 --- a/app/Http/Controllers/Web/Dashboard/SurveyPetaniController.php +++ b/app/Http/Controllers/Web/Dashboard/SurveyPetaniController.php @@ -23,7 +23,7 @@ use BackedEnum; class SurveyPetaniController extends Controller { - private const GAP_ENUM_CLASS = 'App\\Enums\\PendidikanPelatihan\\PelatihanGap'; + private const GAP_ENUM_CLASS = 'App\\Enums\\PendidikanPelatihan\\PelatihanGAP'; public function index() { $colors = $this->colors(); diff --git a/app/Http/Controllers/Web/Produktivitas/PendidikanPelatihanController.php b/app/Http/Controllers/Web/Produktivitas/PendidikanPelatihanController.php index 61515d2..fb8e686 100644 --- a/app/Http/Controllers/Web/Produktivitas/PendidikanPelatihanController.php +++ b/app/Http/Controllers/Web/Produktivitas/PendidikanPelatihanController.php @@ -6,7 +6,9 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\Gate; use Illuminate\Support\Str; +use Illuminate\Validation\Rule; +use App\Enums\PendidikanPelatihan\PelatihanGAP; use App\Models\Pertanian\Petani; use App\Models\Pertanian\SurveyPelatihan; use App\Models\Pertanian\SurveySertifikasi; @@ -44,15 +46,22 @@ class PendidikanPelatihanController extends Controller $validatedData = $request->validate([ 'riwayat_pelatihan' => ['nullable', 'array'], - 'riwayat_pelatihan.*.jenis_pelatihan' => ['nullable', 'string', 'max:255'], + 'riwayat_pelatihan.*.jenis_pelatihan' => ['nullable', 'string', Rule::enum(PelatihanGAP::class)], + 'riwayat_pelatihan.*.jenis_pelatihan_lainnya' => [ + 'nullable', 'string', 'max:255', + 'required_if:riwayat_pelatihan.*.jenis_pelatihan,' . PelatihanGAP::LAINNYA->value, + ], 'riwayat_pelatihan.*.penyelenggara' => ['nullable', 'string', 'max:255'], 'riwayat_pelatihan.*.tahun' => ['nullable', 'integer', 'min:1900', 'max:' . date('Y')], ], [ + 'riwayat_pelatihan.*.jenis_pelatihan.enum' => 'Jenis pelatihan yang dipilih tidak valid.', + 'riwayat_pelatihan.*.jenis_pelatihan_lainnya.required_if' => 'Jenis pelatihan lainnya wajib diisi jika memilih Lainnya.', 'riwayat_pelatihan.*.tahun.integer' => 'Tahun pelatihan harus berupa angka.', 'riwayat_pelatihan.*.tahun.min' => 'Tahun pelatihan tidak valid.', 'riwayat_pelatihan.*.tahun.max' => 'Tahun pelatihan tidak boleh melebihi tahun saat ini.', ], [ 'riwayat_pelatihan.*.jenis_pelatihan' => 'jenis pelatihan', + 'riwayat_pelatihan.*.jenis_pelatihan_lainnya' => 'jenis pelatihan lainnya', 'riwayat_pelatihan.*.penyelenggara' => 'penyelenggara', 'riwayat_pelatihan.*.tahun' => 'tahun pelatihan', ]); @@ -66,10 +75,15 @@ class PendidikanPelatihanController extends Controller continue; } + // Jika memilih "Lainnya", yang disimpan adalah teks isian bebasnya + $jenisPelatihan = ($item['jenis_pelatihan'] ?? null) === PelatihanGAP::LAINNYA->value + ? trim($item['jenis_pelatihan_lainnya']) + : ($item['jenis_pelatihan'] ?? null); + $petani->surveyPelatihan()->create([ 'uid' => 'SPL-' . strtoupper(Str::random(10)), 'petani_id' => $petani->id, - 'jenis_pelatihan' => $item['jenis_pelatihan'] ?? null, + 'jenis_pelatihan' => $jenisPelatihan, 'penyelenggara' => $item['penyelenggara'] ?? null, 'tahun_pelaksanaan' => $item['tahun'] ?? null, 'created_by' => auth()->id(), diff --git a/resources/views/produktivitas/petani/pendidikan-pelatihan/index.blade.php b/resources/views/produktivitas/petani/pendidikan-pelatihan/index.blade.php index afc3df1..b5e9e5a 100644 --- a/resources/views/produktivitas/petani/pendidikan-pelatihan/index.blade.php +++ b/resources/views/produktivitas/petani/pendidikan-pelatihan/index.blade.php @@ -1,5 +1,7 @@ @extends('layout.main') +@use('App\Enums\PendidikanPelatihan\PelatihanGAP') + @push('style')