154 lines
5.9 KiB
PHP
154 lines
5.9 KiB
PHP
<?php
|
|
|
|
namespace App\Models\Pertanian;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
|
use Illuminate\Support\Facades\Schema;
|
|
use Illuminate\Support\Str;
|
|
|
|
use App\Models\Pertanian\Petani;
|
|
use App\Models\Pertanian\SkorPetani;
|
|
use App\Models\Pertanian\Tanaman;
|
|
use App\Models\Pertanian\Lahan;
|
|
|
|
class PraktikBudidaya extends Model
|
|
{
|
|
use SoftDeletes;
|
|
|
|
protected $table = 'praktik_budidaya';
|
|
|
|
protected $casts = [
|
|
'teknik_pemangkasan' => 'array',
|
|
'jenis_hama' => 'array',
|
|
'jenis_penyakit' => 'array',
|
|
'sumber_air' => '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_padat_permusim',
|
|
'volume_obat_obatan_cair_permusim',
|
|
'satuan_volume_obat_obatan',
|
|
'frekuensi_sanitasi_lahan',
|
|
'penanganan_sisa_buah_ranting',
|
|
'penanganan_gulma',
|
|
'kondisi_pengelolaan_air',
|
|
'sumber_air',
|
|
'sistem_irigasi',
|
|
'kebutuhan_air_permusim',
|
|
'kebiasaan_konservasi_tanah',
|
|
'pemahaman_manfaat_konservasi_tanah',
|
|
'upah_tenaga_kerja',
|
|
'biaya_bibit',
|
|
'biaya_pupuk',
|
|
'biaya_obat_obatan',
|
|
'biaya_sewa_alat_produksi',
|
|
'biaya_penyediaan_air',
|
|
'biaya_produksi_lainnya',
|
|
'total_estimasi_biaya_produksi',
|
|
'created_by',
|
|
'updated_by',
|
|
'deleted_by',
|
|
];
|
|
|
|
protected static function booted(): void
|
|
{
|
|
static::saved(function (PraktikBudidaya $praktikBudidaya) {
|
|
|
|
$petani = Petani::find($praktikBudidaya->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
|
|
]);
|
|
}
|
|
|
|
$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;
|
|
$jenisHama = $praktikBudidaya->jenis_hama ?? [];
|
|
$jenisPenyakit = $praktikBudidaya->jenis_penyakit ?? [];
|
|
|
|
if (Schema::hasColumn((new Lahan)->getTable(), 'jenis_hama')
|
|
&& Schema::hasColumn((new Lahan)->getTable(), 'jenis_penyakit')) {
|
|
Lahan::where('petani_id', $praktikBudidaya->petani_id)->get()->each(function (Lahan $lahan) use ($jenisHama, $jenisPenyakit, $praktikBudidaya) {
|
|
$lahan->update([
|
|
'jenis_hama' => $jenisHama,
|
|
'jenis_penyakit' => $jenisPenyakit,
|
|
'updated_by' => $praktikBudidaya->updated_by,
|
|
]);
|
|
});
|
|
}
|
|
|
|
if (Schema::hasColumn((new Tanaman)->getTable(), 'jenis_hama')
|
|
&& Schema::hasColumn((new Tanaman)->getTable(), 'jenis_penyakit')) {
|
|
Tanaman::where('petani_id', $praktikBudidaya->petani_id)->get()->each(function (Tanaman $tanaman) use ($jenisHama, $jenisPenyakit, $praktikBudidaya) {
|
|
$tanaman->update([
|
|
'jenis_hama' => $jenisHama,
|
|
'jenis_penyakit' => $jenisPenyakit,
|
|
'updated_by' => $praktikBudidaya->updated_by,
|
|
]);
|
|
});
|
|
}
|
|
|
|
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_utama,
|
|
'skor_d2_k2_4_praktik_pemupukan' => $praktikBudidaya->pemberian_pupuk,
|
|
'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,
|
|
'skor_d2_k2_8_praktik_konservasi_tanah' => $skor_konservasi_tanah,
|
|
]);
|
|
});
|
|
}
|
|
|
|
public function petani(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Petani::class, 'petani_id');
|
|
}
|
|
}
|