Volije/app/Http/Controllers/HasilController.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];
}
}
}