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