90 lines
3.1 KiB
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.');
|
|
}
|
|
}
|