This commit is contained in:
2026-07-10 13:49:24 +07:00
+23 -27
View File
@@ -2,20 +2,16 @@
namespace App\Models\Pertanian; namespace App\Models\Pertanian;
use App\Enums\Pendidikan;
use App\Enums\Pernikahan;
use App\Models\Wilayah\DesaKelurahan;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model; 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\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
use Carbon\Carbon;
use App\Models\Wilayah\DesaKelurahan;
use App\Enums\Pendidikan;
use App\Enums\Pernikahan;
use App\Models\Pertanian\SkorPetani;
class Petani extends Model class Petani extends Model
{ {
@@ -50,7 +46,7 @@ class Petani extends Model
'created_by', 'created_by',
'updated_by', 'updated_by',
'deleted_by' 'deleted_by',
]; ];
protected $casts = [ protected $casts = [
@@ -63,7 +59,7 @@ class Petani extends Model
public function getUmurAttribute(): ?int public function getUmurAttribute(): ?int
{ {
if (!$this->tanggal_lahir) { if (! $this->tanggal_lahir) {
return null; return null;
} }
@@ -85,13 +81,13 @@ class Petani extends Model
static::saved(function (Petani $petani) { static::saved(function (Petani $petani) {
$skor = SkorPetani::where('petani_id')->orderBy('id')->first(); $skor = SkorPetani::where('petani_id')->orderBy('id')->first();
if (!$skor) { if (! $skor) {
$petaniUid = $petani->uid; $petaniUid = $petani->uid;
$part = explode('-', $petaniUid); $part = explode('-', $petaniUid);
$skor = SkorPetani::create([ $skor = SkorPetani::create([
'uid' => 'SKR-' . $part[1] . '-' . strtoupper(Str::random(10)), 'uid' => 'SKR-'.$part[1].'-'.strtoupper(Str::random(10)),
'created_by' => $petani->created_by, 'created_by' => $petani->created_by,
'updated_by' => $petani->updated_by 'updated_by' => $petani->updated_by,
]); ]);
} }
}); });
@@ -134,7 +130,7 @@ class Petani extends Model
public function skorLahanTanaman(): ?float public function skorLahanTanaman(): ?float
{ {
if (!Schema::hasTable('map_lahan')) { if (! Schema::hasTable('map_lahan')) {
return null; return null;
} }
@@ -152,7 +148,7 @@ class Petani extends Model
'mati' => 0, 'mati' => 0,
default => null, default => null,
}) })
->filter(fn ($value) => !is_null($value)); ->filter(fn ($value) => ! is_null($value));
if ($nilaiKondisi->isEmpty()) { if ($nilaiKondisi->isEmpty()) {
return null; return null;
@@ -163,13 +159,13 @@ class Petani extends Model
public function skorPraktikBudidaya(): ?float public function skorPraktikBudidaya(): ?float
{ {
if (!Schema::hasTable('praktik_budidaya')) { if (! Schema::hasTable('praktik_budidaya')) {
return null; return null;
} }
$praktikBudidaya = $this->praktikBudidaya()->first(); $praktikBudidaya = $this->praktikBudidaya()->first();
if (!$praktikBudidaya) { if (! $praktikBudidaya) {
return null; return null;
} }
@@ -181,7 +177,7 @@ class Petani extends Model
$praktikBudidaya->penanganan_gulma, $praktikBudidaya->penanganan_gulma,
$praktikBudidaya->kondisi_pengelolaan_air, $praktikBudidaya->kondisi_pengelolaan_air,
$praktikBudidaya->nilai_konservasi_tanah, $praktikBudidaya->nilai_konservasi_tanah,
])->filter(fn ($value) => !is_null($value) && $value !== ''); ])->filter(fn ($value) => ! is_null($value) && $value !== '');
if ($nilai->isEmpty()) { if ($nilai->isEmpty()) {
return null; return null;
@@ -192,7 +188,7 @@ class Petani extends Model
public function skorPendidikan(): ?float public function skorPendidikan(): ?float
{ {
if (!$this->pendidikan_terakhir) { if (! $this->pendidikan_terakhir) {
return null; return null;
} }
@@ -215,13 +211,13 @@ class Petani extends Model
public function skorSosialEkonomi(): ?float public function skorSosialEkonomi(): ?float
{ {
if (!Schema::hasTable('sosial_ekonomi')) { if (! Schema::hasTable('sosial_ekonomi')) {
return null; return null;
} }
$sosialEkonomi = $this->sosialEkonomi()->first(); $sosialEkonomi = $this->sosialEkonomi()->first();
if (!$sosialEkonomi) { if (! $sosialEkonomi) {
return null; return null;
} }
@@ -245,7 +241,7 @@ class Petani extends Model
$this->enumValue($sosialEkonomi->keterikatan_hutang_panen), $this->enumValue($sosialEkonomi->keterikatan_hutang_panen),
$this->enumValue($sosialEkonomi->praktik_ijon), $this->enumValue($sosialEkonomi->praktik_ijon),
$this->enumValue($sosialEkonomi->kebebasan_memilih_pembeli), $this->enumValue($sosialEkonomi->kebebasan_memilih_pembeli),
])->filter(fn ($value) => !is_null($value) && $value !== '' && (int) $value > 0); ])->filter(fn ($value) => ! is_null($value) && $value !== '' && (int) $value > 0);
if ($nilai->isEmpty()) { if ($nilai->isEmpty()) {
return null; return null;
@@ -256,20 +252,20 @@ class Petani extends Model
public function skorAksesPasar(): ?float public function skorAksesPasar(): ?float
{ {
if (!Schema::hasTable('akses_pasar')) { if (! Schema::hasTable('akses_pasar')) {
return null; return null;
} }
$aksesPasar = $this->aksesPasar()->first(); $aksesPasar = $this->aksesPasar()->first();
if (!$aksesPasar) { if (! $aksesPasar) {
return null; return null;
} }
$nilai = collect(Schema::getColumnListing($aksesPasar->getTable())) $nilai = collect(Schema::getColumnListing($aksesPasar->getTable()))
->filter(fn ($field) => str_starts_with($field, 'skor_')) ->filter(fn ($field) => str_starts_with($field, 'skor_'))
->map(fn ($field) => $aksesPasar->getAttribute($field)) ->map(fn ($field) => $aksesPasar->getAttribute($field))
->filter(fn ($value) => !is_null($value) && $value !== ''); ->filter(fn ($value) => ! is_null($value) && $value !== '');
if ($nilai->isEmpty()) { if ($nilai->isEmpty()) {
return null; return null;
@@ -286,7 +282,7 @@ class Petani extends Model
$this->skorPendidikan(), $this->skorPendidikan(),
$this->skorSosialEkonomi(), $this->skorSosialEkonomi(),
$this->skorAksesPasar(), $this->skorAksesPasar(),
])->filter(fn ($value) => !is_null($value)); ])->filter(fn ($value) => ! is_null($value));
if ($nilai->isEmpty()) { if ($nilai->isEmpty()) {
return null; return null;