MIF_E31231754/database/seeders/PenilaianWargaSeeder.php

90 lines
3.1 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\PenilaianWarga;
use App\Models\Warga;
use App\Models\PeriodeSeleksi;
class PenilaianWargaSeeder extends Seeder
{
public function run(): void
{
$periode = PeriodeSeleksi::where('status', 'aktif')->first();
if (!$periode) {
$this->command->error('❌ Belum ada periode aktif! Jalankan PeriodeSeeder dulu.');
return;
}
// Ambil semua warga ordered by id
$warga = Warga::orderBy('id')->get();
if ($warga->count() === 0) {
$this->command->error('❌ Belum ada data warga! Jalankan WargaSeeder dulu.');
return;
}
// Nilai per warga: [C1, C2, C3, C4, C5, C6, C7]
// C1 Penghasilan → cost → nilai kecil = miskin
// C2 Tanggungan → benefit → nilai besar = banyak tanggungan
// C3 Kondisi rumah → cost → nilai kecil = rumah buruk
// C4 Status pekerjaan → cost → nilai kecil = tidak bekerja
// C5 Kepemilikan rmh → cost → nilai kecil = numpang/kontrak
// C6 Aset/kendaraan → cost → nilai kecil = tidak punya aset
// C7 Riwayat bansos → cost → nilai kecil = belum pernah terima
// Skala 1-5
$nilaiPerWarga = [
// Ahmad Fauzi — sangat miskin
[1, 5, 1, 1, 1, 1, 1],
// Siti Aminah — miskin
[1, 4, 2, 2, 1, 1, 2],
// Budi Santoso — miskin sedang
[2, 4, 2, 2, 2, 2, 1],
// Wati Rahayu — miskin sedang
[2, 3, 2, 3, 2, 2, 2],
// Suparman — sangat miskin
[1, 5, 1, 1, 1, 1, 1],
// Dewi Lestari — miskin
[2, 4, 2, 2, 2, 1, 2],
// Hasan Basri — cukup miskin
[2, 3, 3, 2, 2, 2, 3],
// Nurul Hidayah — miskin
[1, 4, 2, 2, 1, 2, 1],
// Joko Widodo — cukup
[3, 3, 3, 3, 3, 3, 3],
// Maryam — miskin
[2, 4, 2, 2, 2, 1, 2],
// Supardi — sangat miskin
[1, 5, 1, 1, 1, 1, 1],
// Rina Agustina — cukup miskin
[2, 3, 2, 2, 2, 2, 2],
];
$kriteriaList = \App\Models\Kriteria::orderBy('id')->get();
foreach ($warga as $index => $w) {
if (!isset($nilaiPerWarga[$index])) {
$this->command->warn("⚠️ Warga #{$w->id} ({$w->nama}) tidak ada data nilai, dilewati.");
continue;
}
$nilai = $nilaiPerWarga[$index];
foreach ($kriteriaList as $i => $kr) {
if (isset($nilai[$i])) {
PenilaianWarga::create([
'warga_id' => $w->id,
'periode_id' => $periode->id,
'kriteria_id' => $kr->id,
'nilai' => $nilai[$i],
]);
}
}
}
$this->command->info('✅ Penilaian warga berhasil dibuat untuk ' . $warga->count() . ' warga.');
}
}