69 lines
2.0 KiB
PHP
69 lines
2.0 KiB
PHP
<?php
|
|
require 'vendor/autoload.php';
|
|
$app = require_once 'bootstrap/app.php';
|
|
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
|
|
$kernel->bootstrap();
|
|
|
|
$periode = \App\Models\PeriodeSeleksi::where('status', 'aktif')->first();
|
|
|
|
if (!$periode) {
|
|
echo "Tidak ada periode aktif.";
|
|
exit;
|
|
}
|
|
|
|
$gimo = \App\Models\Warga::where('nama', 'LIKE', '%GIMO%')->first();
|
|
if (!$gimo) {
|
|
echo "Warga bernama GIMO tidak ditemukan.";
|
|
exit;
|
|
}
|
|
|
|
$kriteria = \App\Models\Kriteria::orderBy('kode')->get();
|
|
|
|
$penilaianGimo = \App\Models\PenilaianWarga::where('warga_id', $gimo->id)
|
|
->where('periode_id', $periode->id)
|
|
->get()
|
|
->keyBy('kriteria_id');
|
|
|
|
$statPerKriteria = \App\Models\PenilaianWarga::where('periode_id', $periode->id)
|
|
->groupBy('kriteria_id')
|
|
->selectRaw('kriteria_id, MAX(nilai) as max_val, MIN(nilai) as min_val')
|
|
->get()
|
|
->keyBy('kriteria_id');
|
|
|
|
echo "Nama: " . $gimo->nama . "\n";
|
|
echo "Periode: " . $periode->nama . "\n\n";
|
|
|
|
$skorTotal = 0;
|
|
|
|
foreach ($kriteria as $k) {
|
|
if (!isset($penilaianGimo[$k->id])) {
|
|
echo "Nilai {$k->kode} belum diisi untuk GIMO.\n";
|
|
continue;
|
|
}
|
|
|
|
$nilaiAsli = $penilaianGimo[$k->id]->nilai;
|
|
$stat = $statPerKriteria[$k->id] ?? null;
|
|
$max = $stat ? $stat->max_val : 0;
|
|
$min = $stat ? $stat->min_val : 0;
|
|
|
|
echo "Kriteria {$k->kode} ({$k->jenis}), Bobot: {$k->bobot}\n";
|
|
echo " - Nilai Asli GIMO: {$nilaiAsli}\n";
|
|
echo " - Nilai Max Semua Warga: {$max}\n";
|
|
echo " - Nilai Min Semua Warga: {$min}\n";
|
|
|
|
if ($k->jenis === 'benefit') {
|
|
$nilaiNormalisasi = $max > 0 ? $nilaiAsli / $max : 0;
|
|
echo " - Rumus Benefit: {$nilaiAsli} / {$max} = {$nilaiNormalisasi}\n";
|
|
} else {
|
|
$nilaiNormalisasi = $nilaiAsli > 0 ? $min / $nilaiAsli : 0;
|
|
echo " - Rumus Cost: {$min} / {$nilaiAsli} = {$nilaiNormalisasi}\n";
|
|
}
|
|
|
|
$nilaiTerbobot = $nilaiNormalisasi * $k->bobot;
|
|
echo " - Nilai Terbobot: {$nilaiNormalisasi} * {$k->bobot} = {$nilaiTerbobot}\n\n";
|
|
|
|
$skorTotal += $nilaiTerbobot;
|
|
}
|
|
|
|
echo "Skor Total SAW: {$skorTotal}\n";
|