<?php namespace App\Http\Controllers; use App\Models\Kriteria; use App\Models\Penilaian; use App\Models\Alternatif; use App\Models\Perhitungan; use Illuminate\Http\Request; use Illuminate\Support\Arr; use Illuminate\Support\Facades\DB; use PhpParser\Node\Stmt\Foreach_; class PerhitunganController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index(){ $penilaians=Penilaian::all(); $alternatifs=Alternatif::all(); $kriterias=Kriteria::all(); // foreach($alternatifss as $altera){ // $alternatifs[] = $altera; // } // // dd($alternatifs); try{ $matriksawal = array(); foreach($alternatifs as $alter){ $nilaia = Penilaian::select('nilai') ->where('id_alternatif', $alter->idalter) ->orderBy('id_kriteria') ->get(); //berupa collection // $nilaia = DB::table('penilaians') // ->select('nilai') // ->orderBy('id_kriteria','asc') //berarti kriteria wajib urut // ->where('id_alternatif', $alter->idalter) // ->get(); //nanti berupa objek $matriksawal[] = $nilaia; } $kuadrat = array(); for($i = 0; $i < $alternatifs->count(); $i++){ for ($j = 0; $j < $kriterias->count(); $j++){ $kuadrat[$i][$j] = pow($matriksawal[$i][$j]->nilai,2); } } $kuadrat1 = array(); $kuadrat1 = $kuadrat; $totalkuadrat = array_shift($kuadrat1); foreach ($kuadrat1 as $val) { foreach ($val as $key => $val) { $totalkuadrat[$key]+=$val; } } $akartotalkuadrat = array(); for ($z = 0; $z < $kriterias->count(); $z++){ $akartotalkuadrat[$z] = sqrt($totalkuadrat[$z]); } $normalisasi = array(); for($p = 0; $p < $alternatifs->count(); $p++){ for ($q = 0; $q < $kriterias->count(); $q++){ $normalisasi[$p][$q] = $matriksawal[$p][$q]->nilai / $akartotalkuadrat[$q]; } } $bobot = array(); $bobot = Kriteria::select('bobot') ->orderBy('kodekriteria') ->get(); //berupa collection $normaterbobot = array(); for($p = 0; $p < $alternatifs->count(); $p++){ for ($q = 0; $q < $kriterias->count(); $q++){ $normaterbobot[$p][$q] = $normalisasi[$p][$q] * $bobot[$q]->bobot; } } $normaterbobot1 = array(); $normaterbobot1 = $normaterbobot; $sifat = array(); $sifat = Kriteria::select('sifat') ->orderBy('kodekriteria') ->get(); //berupa collection $perkolom = array(); for($p = 0; $p < $kriterias->count(); $p++){ for ($q = 0; $q < $alternatifs->count(); $q++){ $perkolom[$p][$q] = $normaterbobot1[$q][$p]; } } // dd(max($perkolom[3])); $idealpositif = array(); for($d = 0; $d < $kriterias->count(); $d++){ if($sifat[$d]->sifat == "Benefit"){ $idealpositif[$d] = max($perkolom[$d]); } else { $idealpositif[$d] = min($perkolom[$d]); } } $idealnegatif = array(); for($d = 0; $d < $kriterias->count(); $d++){ if($sifat[$d]->sifat == "Benefit"){ $idealnegatif[$d] = min($perkolom[$d]); } else { $idealnegatif[$d] = max($perkolom[$d]); } } $normaterbobot2 = array(); $normaterbobot2 = $normaterbobot; $idealpositif2 = array(); $idealpositif2 = $idealpositif; $jarakpositiftotal = array(); $summ = 0; for ($f = 0; $f < $alternatifs->count(); $f++){ for($h = 0; $h < $kriterias->count(); $h++){ $summ += pow($normaterbobot2[$f][$h]-$idealpositif2[$h],2); } $jarakpositiftotal[] = sqrt($summ); $summ = 0; } $idealnegatif2 = array(); $idealnegatif2 = $idealnegatif; $jaraknegatiftotal = array(); $summ = 0; for ($f = 0; $f < $alternatifs->count(); $f++){ for($h = 0; $h < $kriterias->count(); $h++){ $summ += pow($normaterbobot2[$f][$h]-$idealnegatif2[$h],2); } $jaraknegatiftotal[] = sqrt($summ); $summ = 0; } $Preferensi = array(); for ($f = 0; $f < $alternatifs->count(); $f++){ $Preferensi[] = $jaraknegatiftotal[$f]/($jaraknegatiftotal[$f]+$jarakpositiftotal[$f]); } // $nilaiakhirnya = array(); Perhitungan::query()->truncate(); for ($f = 0; $f < $alternatifs->count(); $f++){ // $nilaiakhirnya[$f] = array('kodenyaalter' =>$alternatifs[$f]->kodealternatif, // 'namanyaalter' =>$alternatifs[$f]->namaalternatif, // 'nilaipreferensi' => $Preferensi[$f]); Perhitungan::create(['kodenyaalter' =>$alternatifs[$f]->kodealternatif, 'namanyaalter' =>$alternatifs[$f]->namaalternatif, 'nilaipreferensi' => $Preferensi[$f]]); } } catch (\Throwable $th){ return redirect()->route('dashboard')->with('error','Silahkan Lengkapi Data Penilaian Terlebih Dahulu.'); } // dd($Preferensi); return view ('dashboards.perhitungan.index', [ 'kriterias' => $kriterias, 'alternatifs' => $alternatifs, 'matriksawal' => $matriksawal, 'kuadrat' => $kuadrat, 'totalkuadrat' => $totalkuadrat, 'akartotalkuadrat' => $akartotalkuadrat, 'normalisasi' => $normalisasi, 'normaterbobot' => $normaterbobot, 'idealpositif' => $idealpositif, 'idealnegatif' => $idealnegatif, 'jarakpositiftotal' => $jarakpositiftotal, 'jaraknegatiftotal' => $jaraknegatiftotal, 'Preferensi' => $Preferensi ]); } public function indexKOTOR() { // $alternatifs=Perhitungan::all(); $penilaians=Penilaian::all(); $alternatifs=Alternatif::all(); $kriterias=Kriteria::all(); // $kriterias=Kriteria::all()->where('name', 'Banyak Praktikan Rajin Hadir'); // $BobotKriteria = DB::table('kriterias') // ->select('bobot') // ->orderBy('id','asc') // ->get(); // $NamaKriteria = DB::table('kriterias') // ->select('name') // ->orderBy('id','asc') // ->get(); // $matriksawal = Alternatif::join('penilaians', 'penilaians.id_alternatif', '=', 'alternatifs.id') // ->join('kriterias','kriterias.id','=','penilaians.id_kriteria') // ->get(['alternatifs.name','kriterias.id','penilaians.nilai']); // $matriksawal = Penilaian::join('alternatifs', 'alternatifs.id', '=', 'penilaians.id_alternatif') // ->join('kriterias','kriterias.id','=','penilaians.id_kriteria') // ->get(['penilaians.nilai'])->where('penilaians.id_alternatif')->sortBy('kriterias.id','asc'); // dd($matriksawal); MULAI BENER // $nilaia = Penilaian::all('nilai'); // $newarray = array(); // for ($x = 0; $x <= $alternatifs->count(); $x++) { // for ($z = 0; $z <= $kriterias->count(); $z++) { // $newarray[$x] = $nilaia; // } // } $as = DB::table('alternatifs') ->select('idalter') ->orderBy('idalter','asc') ->get(); // dd($as); $newarray = array(); foreach($alternatifs as $alter){ $nilaia = DB::table('penilaians') ->select('nilai') ->orderBy('id_kriteria','asc') //berarti kriteria wajib urut ->where('id_alternatif', $alter->idalter) ->get(); $newarray[] = $nilaia; } // dd($newarray[2][2]); // $items = array(); // foreach($alternatifs as $alter) { // foreach($kriterias as $krite) { // $nilaia = Penilaian::all('nilai')->where('id_alternatif', $alter->id); // $items[] = $; // } // } // dd($items); // return view('dashboards.admins.perhitungan.index', compact('newarray','kriterias')); return view ('dashboards.admins.perhitungan.index', [ 'kriterias' => $kriterias, 'alternatifs' => $alternatifs, 'newarray' => $newarray, // 'matriksawal' => $matriksawal, // 'NamaKriteria'=>$NamaKriteria, // 'BobotKriteria'=>$BobotKriteria, ]); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // } /** * Display the specified resource. * * @param \App\Models\Perhitungan $perhitungan * @return \Illuminate\Http\Response */ public function show(Perhitungan $perhitungan) { // } /** * Show the form for editing the specified resource. * * @param \App\Models\Perhitungan $perhitungan * @return \Illuminate\Http\Response */ public function edit(Perhitungan $perhitungan) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Models\Perhitungan $perhitungan * @return \Illuminate\Http\Response */ public function update(Request $request, Perhitungan $perhitungan) { // } /** * Remove the specified resource from storage. * * @param \App\Models\Perhitungan $perhitungan * @return \Illuminate\Http\Response */ public function destroy(Perhitungan $perhitungan) { // } }