MIF_E31231754/app/Models/PenilaianWarga.php

93 lines
2.6 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class PenilaianWarga extends Model
{
protected $table = 'penilaian_warga';
protected $fillable = [
'warga_id',
'periode_id',
'kriteria_id',
'nilai',
];
protected $casts = [
'nilai' => 'decimal:2',
];
// Relasi ke Warga
public function warga()
{
return $this->belongsTo(Warga::class, 'warga_id');
}
// Relasi ke Periode Seleksi
public function periode()
{
return $this->belongsTo(PeriodeSeleksi::class, 'periode_id');
}
// Relasi ke Kriteria
public function kriteria()
{
return $this->belongsTo(Kriteria::class, 'kriteria_id');
}
// Helper: Get label untuk nilai berdasarkan kriteria
public static function getNilaiLabel($kriteriaKode, $nilai)
{
// Cari keterangan dari tabel database sub_kriteria
$sub = \App\Models\SubKriteria::whereHas('kriteria', function($q) use ($kriteriaKode) {
$q->where('kode', $kriteriaKode);
})->where('nilai', (int)$nilai)->first();
if ($sub) {
return $sub->keterangan;
}
$labels = [
'C1' => [
1 => 'Tidak bekerja / Buruh harian lepas',
2 => 'Petani kecil / Nelayan kecil',
3 => 'Pedagang kecil / Wiraswasta kecil',
4 => 'Karyawan swasta / PNS Golongan rendah',
5 => 'PNS / Profesional / Pengusaha',
],
'C2' => [
1 => '1 orang',
2 => '2 orang',
3 => '3 orang',
4 => '4 orang',
5 => '> 4 orang',
],
'C3' => [
1 => 'Sehat, usia produktif',
2 => 'Sehat, lanjut usia',
3 => 'Sering sakit ringan / Lansia tunggal',
4 => 'Sakit menahun / Disabilitas ringan',
5 => 'Sakit kronis parah / Disabilitas berat',
],
'C4' => [
1 => '20 - 30 tahun',
2 => '31 - 40 tahun',
3 => '41 - 50 tahun',
4 => '51 - 60 tahun',
5 => '> 60 tahun',
],
'C5' => [
1 => 'Belum pernah menerima bantuan',
2 => 'Pernah menerima (> 2 tahun lalu)',
3 => 'Pernah menerima (1 - 2 tahun lalu)',
4 => 'Aktif menerima 1 jenis bantuan',
5 => 'Aktif menerima banyak jenis bantuan',
],
];
return $labels[$kriteriaKode][$nilai] ?? $nilai;
}
}