MIF_E31211891/app/Http/Controllers/PenilaianController.php

128 lines
3.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Kriteria;
use App\Models\Penilaian;
use App\Models\Alternatif;
use App\Models\Subkriteria;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class PenilaianController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
$no = 1;
$kriteria = Kriteria::where('status', 'Aktif')->with('SubKriteria')->get();
$subkriteria = Subkriteria::all();
$subkriteria = Subkriteria::whereHas('kriteria', function($query) {
$query->where('status', 'Aktif');
})->get();
$alternatif = Alternatif::where('id_mahasiswa', Auth::user()->id)->orderBy('id')->get();
$nilai = Penilaian::all();
for ($i = 0; $i < count($alternatif); $i++) {
$penilaian = Penilaian::where('id_alternatif', $alternatif[$i]->id)->orderby('id_kriteria')->get();
if (count($penilaian) != 0) {
$alternatif[$i]->penilaian = $penilaian;
} else {
$alternatif[$i]->penilaian = "null";
}
}
return view('penilaian', compact('no', 'kriteria', 'subkriteria', 'alternatif', 'penilaian'));
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request, $id)
{
$kriteria = Kriteria::where('status', 'Aktif')->orderby('id')->get();
// Cek apakah request memiliki data untuk setiap kriteria
$dataExist = false;
foreach ($kriteria as $k) {
$idk = $k->id;
if ($request->has($idk) && $request->filled($idk)) {
$dataExist = true;
break;
}
}
if (!$dataExist) {
// Jika tidak ada data, tampilkan toast_error
return redirect('penilaian')->with('toast_error', 'Penilaian Alternatif Gagal Ditambahkan');
}
$cek = Penilaian::where('id_alternatif', $id)->get();
if (count($cek) == 0) {
foreach ($kriteria as $k) {
$idk = $k->id;
Penilaian::create([
'id_alternatif' => $id,
'id_kriteria' => $k->id,
'nilai' => $request->$idk,
]);
}
return redirect('penilaian')->with('toast_success', 'Penilaian Alternatif Berhasil Ditambahkan.');
} else {
return back();
}
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
$kriteria = Kriteria::where('status', 'Aktif')->orderby('id')->get();
// Cek apakah request memiliki data untuk setiap kriteria
$dataExist = false;
foreach ($kriteria as $k) {
$idk = $k->id;
if ($request->has($idk) && $request->filled($idk)) {
$dataExist = true;
break;
}
}
if (!$dataExist) {
// Jika tidak ada data, tampilkan toast_error
return redirect('penilaian')->with('toast_error', 'Tidak Ada Perubahan Data');
}
foreach ($kriteria as $k) {
$idk = $k->id;
Penilaian::where('id_alternatif', $id)->where('id_kriteria', $k->id)->update([
'nilai' => $request->$idk
]);
}
return redirect('penilaian')->with('toast_success', 'Perubahan Berhasil Disimpan.');
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
//
}
}