<?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];
        }
    }
}
