86 lines
2.6 KiB
PHP
86 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\PerhitunganModel;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class HasilController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$data['page'] = "Hasil";
|
|
$hasil = PerhitunganModel::get_hasil();
|
|
|
|
foreach ($hasil as $item) {
|
|
// Ambil nilai kriteria untuk setiap alternatif
|
|
$nilai_kriteria = $this->getNilaiKriteria($item->id_alternatif);
|
|
$item->nilai_kriteria = $nilai_kriteria;
|
|
|
|
// Tentukan posisi berdasarkan ranking
|
|
$item->posisi_otomatis = $this->tentukanPosisi($item->ranking);
|
|
}
|
|
|
|
$data['hasil'] = $hasil;
|
|
return view('hasil.index', $data);
|
|
}
|
|
|
|
public function Laporan()
|
|
{
|
|
$hasil = PerhitunganModel::get_hasil();
|
|
|
|
foreach ($hasil as $item) {
|
|
// Ambil nilai kriteria untuk setiap alternatif
|
|
$nilai_kriteria = $this->getNilaiKriteria($item->id_alternatif);
|
|
$item->nilai_kriteria = $nilai_kriteria;
|
|
|
|
// Tentukan posisi berdasarkan ranking
|
|
$item->posisi_otomatis = $this->tentukanPosisi($item->ranking);
|
|
}
|
|
|
|
$data['hasil'] = $hasil;
|
|
return view('hasil.laporan', $data);
|
|
}
|
|
|
|
private function getNilaiKriteria($id_alternatif)
|
|
{
|
|
$nilai = DB::table('penilaian')
|
|
->join('kriteria', 'penilaian.id_kriteria', '=', 'kriteria.id_kriteria')
|
|
->join('sub_kriteria', 'penilaian.nilai', '=', 'sub_kriteria.id_sub_kriteria')
|
|
->where('penilaian.id_alternatif', $id_alternatif)
|
|
->select('kriteria.keterangan as nama_kriteria', 'sub_kriteria.deskripsi as nama_sub_kriteria')
|
|
->get();
|
|
|
|
$result = [];
|
|
foreach ($nilai as $n) {
|
|
$result[$n->nama_kriteria] = $n->nama_sub_kriteria;
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
private function tentukanPosisi($ranking)
|
|
{
|
|
// Tentukan posisi berdasarkan ranking
|
|
switch ($ranking) {
|
|
case 1:
|
|
return 'Spiker';
|
|
case 2:
|
|
return 'Blocker';
|
|
case 3:
|
|
return 'Tosser';
|
|
case 4:
|
|
return 'Opposite Hitter';
|
|
case 5:
|
|
return 'Libero';
|
|
case 6:
|
|
return 'Cover';
|
|
default:
|
|
// Untuk ranking di atas 6, ulangi posisi dari awal
|
|
$posisi = ['Spiker', 'Blocker', 'Tosser', 'Opposite Hitter', 'Libero', 'Cover'];
|
|
$index = ($ranking - 1) % 6;
|
|
return $posisi[$index];
|
|
}
|
|
}
|
|
}
|