From 3edfc57ba71f46e3f5556eb92ba8c1277c212dbf Mon Sep 17 00:00:00 2001 From: Irwan Cahyono Date: Tue, 14 Jul 2026 17:13:52 +0700 Subject: [PATCH] skor petani praktik budidaya --- app/Models/Pertanian/Petani.php | 4 ++-- app/Models/Pertanian/PraktikBudidaya.php | 25 ++++++++++++++++++------ app/Models/Pertanian/SurveyPanen.php | 24 +++++++++++++++++++++++ 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/app/Models/Pertanian/Petani.php b/app/Models/Pertanian/Petani.php index 82db184..95cb12a 100644 --- a/app/Models/Pertanian/Petani.php +++ b/app/Models/Pertanian/Petani.php @@ -138,9 +138,9 @@ class Petani extends Model return $this->hasMany(SurveySertifikasi::class, 'petani_id'); } - public function surveyProduktivitas(): HasOne + public function surveyProduktivitas(): HasMany { - return $this->hasOne(SurveyProduktivitas::class, 'petani_id')->latestOfMany(); + return $this->hasMany(SurveyProduktivitas::class, 'petani_id'); } public function lahans(): HasMany diff --git a/app/Models/Pertanian/PraktikBudidaya.php b/app/Models/Pertanian/PraktikBudidaya.php index 9f82177..0a3782c 100644 --- a/app/Models/Pertanian/PraktikBudidaya.php +++ b/app/Models/Pertanian/PraktikBudidaya.php @@ -91,16 +91,29 @@ class PraktikBudidaya extends Model 'updated_by' => $petani->updated_by ]); } + + $kebiasaan = $praktikBudidaya->kebiasaan_konservasi_tanah ? count($praktikBudidaya->kebiasaan_konservasi_tanah) : 0; + $pemahaman = $praktikBudidaya->pemahaman_manfaat_konservasi_tanah == 'Ya, tahu manfaatnya' ? 1 : 0; + $skor_konservasi_tanah = 0; + if ($kebiasaan == 0) { + $skor_konservasi_tanah = 1; + } elseif ($kebiasaan == 1 && $pemahaman == 0) { + $skor_konservasi_tanah = 2; + } elseif ($kebiasaan == 1 && $pemahaman == 1) { + $skor_konservasi_tanah = 3; + } elseif ($kebiasaan > 1 && $pemahaman == 0) { + $skor_konservasi_tanah = 4; + } elseif ($kebiasaan > 1 && $pemahaman == 1) { + $skor_konservasi_tanah = 5; + } $skor->update([ - - 'skor_d2_k2_3_praktik_pemangkasan' => $praktikBudidaya->frekuensi_pemangkasan_komoditas_utama, + 'skor_d2_k2_3_praktik_pemangkasan' => $praktikBudidaya->frekuensi_pemangkasan_utama, 'skor_d2_k2_4_praktik_pemupukan' => $praktikBudidaya->pemberian_pupuk, - 'skor_d2_k2_5_pengendalian_opt' => $praktikBudidaya->metode_penanganan_hama_penyakit, + 'skor_d2_k2_5_pengendalian_opt' => $praktikBudidaya->metode_penanganan_opt, 'skor_d2_k2_6_sanitasi_kebun' => $praktikBudidaya->frekuensi_sanitasi_lahan, 'skor_d2_k2_6b_pengelolaan_gulma' => $praktikBudidaya->penanganan_gulma, - 'skor_d2_k2_7_penglolaan_air_irigasi' => $praktikBudidaya->kondisi_pengelolaan_air_irigasi, - //'skor_d2_k2_8_praktik_konservasi_tanah' => $praktikBudidaya->kebiasaan_konservasi_tanah, - //'skor_d2_k3_1_penentuan_pematangan' => $praktikBudidaya-> + 'skor_d2_k2_7_penglolaan_air_irigasi' => $praktikBudidaya->kondisi_pengelolaan_air, + 'skor_d2_k2_8_praktik_konservasi_tanah' => $skor_konservasi_tanah, ]); }); } diff --git a/app/Models/Pertanian/SurveyPanen.php b/app/Models/Pertanian/SurveyPanen.php index 04a4c18..5a7f4ab 100644 --- a/app/Models/Pertanian/SurveyPanen.php +++ b/app/Models/Pertanian/SurveyPanen.php @@ -44,6 +44,30 @@ class SurveyPanen extends Model 'deleted_by', ]; + protected static function booted(): void + { + static::saved(function (SurveyPanen $survey) { + + $petani = Petani::find($survey->petani_id); + $skor = SkorPetani::where('petani_id', $petani->id)->orderBy('id')->first(); + if (!$skor) { + $petaniUid = $petani->uid; + $part = explode('-', $petaniUid); + $skor = SkorPetani::create([ + 'petani_id' => $petani->id, + 'uid' => 'SKR-' . $part[1] . '-' . strtoupper(Str::random(10)), + 'created_by' => $petani->created_by, + 'updated_by' => $petani->updated_by + ]); + } + + $skor->update([ + 'skor_d2_k3_1_penentuan_pematangan' => $survey->dasar_penentuan_panen, + 'skor_d2_k3_5_sortasi_awal_pemisahan_kualitas' => $survey->praktik_sortasi, + ]); + }); + } + public function petani(): BelongsTo { return $this->belongsTo(Petani::class, 'petani_id');