SPKNETLAB / app / Http / Controllers / PenilaianController.php
PenilaianController.php
Raw
<?php

namespace App\Http\Controllers;

use App\Models\Laporan;
use App\Models\Kriteria;
use App\Models\Keaktifan;
use App\Models\Kehadiran;
use App\Models\Penilaian;
use App\Models\Alternatif;
use App\Models\Tugas;
use Illuminate\Http\Request;
use PhpParser\Node\Stmt\Catch_;
use Illuminate\Support\Facades\DB;

class PenilaianController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $penilaians = Penilaian::all();
        $alternatifs = Alternatif::all()->sortBy('kodealternatif', SORT_NATURAL);
        $kriterias = Kriteria::all();
        return view('dashboards.penilaian.index', [
            'penilaians' => $penilaians,
            'alternatifs' => $alternatifs,
            'kriterias' => $kriterias,
        ]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('dashboards.penilaian.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function storeauto(Request $request)
    {
        $request->validate([
            'id_alternatif' => 'required',
            'id_kriteria' => 'required',
        ]);

        $kodepr = $request->id_alternatif;
        $kodekr = $request->id_kriteria;

        $totalsiswa = Kehadiran::where('kodeprak', $kodepr)->count();
        // dd($totalsiswa);

        $reratatugas = Tugas::where('kodeprak', $kodepr)->avg('rerata');
        // dd($reratatugas);
        $kesimpulankehadiran = Kehadiran::where('kodeprak', $kodepr)
            ->select(DB::raw('count(*) as col_count, kesimpulan'))
            ->groupBy('kesimpulan')
            ->get();
            // dd($kesimpulankehadiran);
        $kesimpulankeaktifan = Keaktifan::where('kodeprak', $kodepr)
            ->select(DB::raw('count(*) as col_count, kesimpulan'))
            ->groupBy('kesimpulan')
            ->get();
        $kesimpulanlaporan = Laporan::where('kodeprak', $kodepr)
            ->select(DB::raw('count(*) as col_count, penglap'))
            ->groupBy('penglap')
            ->get();
        // dd($kesimpulanlaporan);

        switch ($kodekr) {
            case "C1":
                try {
                    $rerataround = round($reratatugas,2);

                    $altid = Alternatif::where('namaalternatif', $kodepr)->get('idalter');
                    $kriid = Kriteria::where('kodekriteria', $kodekr)->get('idkrit');

                    $data[] = [
                        'id_alternatif' => $altid[0]['idalter'],
                        'id_kriteria' => $kriid[0]['idkrit'],
                        'nilai' => $rerataround,
                    ];

                    Penilaian::insert($data);
                } catch (\Illuminate\Database\QueryException $ex) {
                    return redirect()->route('adminIndexPenilaian')
                        ->with('ERROR', 'Ditemukan data terduplikasi, Data Tidak Boleh Sama.');
                }
                break;
            case "C2":
                try {
                    if($kesimpulankehadiran[0]['kesimpulan'] == "RAJIN"){
                        $rajin = $kesimpulankehadiran[0]['col_count'];
                    }else{
                        $rajin = $kesimpulankehadiran[1]['col_count'];
                    }
                    
                    $rajinpersen = round($rajin / $totalsiswa, 2);

                    $altid = Alternatif::where('namaalternatif', $kodepr)->get('idalter');
                    $kriid = Kriteria::where('kodekriteria', $kodekr)->get('idkrit');

                    $data[] = [
                        'id_alternatif' => $altid[0]['idalter'],
                        'id_kriteria' => $kriid[0]['idkrit'],
                        'nilai' => $rajinpersen,
                    ];

                    Penilaian::insert($data);
                } catch (\Illuminate\Database\QueryException $ex) {
                    return redirect()->route('adminIndexPenilaian')
                        ->with('ERROR', 'Ditemukan data terduplikasi, Data Tidak Boleh Sama.');
                }
                break;
            case "C3":
                try {
                    if($kesimpulankehadiran[1]['kesimpulan'] == "TIDAK RAJIN"){
                        $takrajin = $kesimpulankehadiran[1]['col_count'];
                    }else{
                        $takrajin = $kesimpulankehadiran[0]['col_count'];
                    }
                    
                    $takrajinpersen = round($takrajin / $totalsiswa, 2);

                    $altid = Alternatif::where('namaalternatif', $kodepr)->get('idalter');
                    $kriid = Kriteria::where('kodekriteria', $kodekr)->get('idkrit');

                    $data[] = [
                        'id_alternatif' => $altid[0]['idalter'],
                        'id_kriteria' => $kriid[0]['idkrit'],
                        'nilai' => $takrajinpersen,
                    ];

                    Penilaian::insert($data);
                } catch (\Illuminate\Database\QueryException $ex) {
                    return redirect()->route('adminIndexPenilaian')
                        ->with('ERROR', 'Ditemukan data terduplikasi, Data Tidak Boleh Sama.');
                }
                break;
            case "C4":
                try {
                    if($kesimpulankeaktifan[0]['kesimpulan'] == "AKTIF"){
                        $aktif = $kesimpulankeaktifan[0]['col_count'];
                    }else{
                        $aktif = $kesimpulankeaktifan[1]['col_count'];
                    }
                    
                    $aktifpersen = round($aktif / $totalsiswa, 2);

                    $altid = Alternatif::where('namaalternatif', $kodepr)->get('idalter');
                    $kriid = Kriteria::where('kodekriteria', $kodekr)->get('idkrit');

                    $data[] = [
                        'id_alternatif' => $altid[0]['idalter'],
                        'id_kriteria' => $kriid[0]['idkrit'],
                        'nilai' => $aktifpersen,
                    ];

                    Penilaian::insert($data);
                } catch (\Illuminate\Database\QueryException $ex) {
                    return redirect()->route('adminIndexPenilaian')
                        ->with('ERROR', 'Ditemukan data terduplikasi, Data Tidak Boleh Sama.');
                }
                break;
            case "C5":
                try {
                    if($kesimpulankeaktifan[1]['kesimpulan'] == "TIDAK AKTIF"){
                        $takaktif = $kesimpulankeaktifan[1]['col_count'];
                    }else{
                        $takaktif = $kesimpulankeaktifan[0]['col_count'];
                    }

                    $takaktifpersen = round($takaktif / $totalsiswa, 2);

                    $altid = Alternatif::where('namaalternatif', $kodepr)->get('idalter');
                    $kriid = Kriteria::where('kodekriteria', $kodekr)->get('idkrit');

                    $data[] = [
                        'id_alternatif' => $altid[0]['idalter'],
                        'id_kriteria' => $kriid[0]['idkrit'],
                        'nilai' => $takaktifpersen,
                    ];

                    Penilaian::insert($data);
                } catch (\Illuminate\Database\QueryException $ex) {
                    return redirect()->route('adminIndexPenilaian')
                        ->with('ERROR', 'Ditemukan data terduplikasi, Data Tidak Boleh Sama.');
                }
                break;
            case "C6":
                try {
                    if($kesimpulanlaporan[0]['penglap'] == "Ya"){
                        $laporan = $kesimpulanlaporan[0]['col_count'];
                    }else{
                        $laporan = $kesimpulanlaporan[1]['col_count'];
                    }
                    
                    $kumpullappersen = round($laporan / $totalsiswa, 2);

                    $altid = Alternatif::where('namaalternatif', $kodepr)->get('idalter');
                    $kriid = Kriteria::where('kodekriteria', $kodekr)->get('idkrit');

                    $data[] = [
                        'id_alternatif' => $altid[0]['idalter'],
                        'id_kriteria' => $kriid[0]['idkrit'],
                        'nilai' => $kumpullappersen,
                    ];

                    Penilaian::insert($data);
                } catch (\Illuminate\Database\QueryException $ex) {
                    return redirect()->route('adminIndexPenilaian')
                        ->with('ERROR', 'Ditemukan data terduplikasi, Data Tidak Boleh Sama.');
                }
                break;
            case "C7":
                try {
                    if($kesimpulanlaporan[1]['penglap'] == "Tidak"){
                        $taklaporan = $kesimpulanlaporan[1]['col_count'];
                    }else{
                        $taklaporan = $kesimpulanlaporan[0]['col_count'];
                    }

                    $kumpullappersen = round($taklaporan / $totalsiswa, 2);

                    $altid = Alternatif::where('namaalternatif', $kodepr)->get('idalter');
                    $kriid = Kriteria::where('kodekriteria', $kodekr)->get('idkrit');

                    $data[] = [
                        'id_alternatif' => $altid[0]['idalter'],
                        'id_kriteria' => $kriid[0]['idkrit'],
                        'nilai' => $kumpullappersen,
                    ];

                    Penilaian::insert($data);
                } catch (\Illuminate\Database\QueryException $ex) {
                    return redirect()->route('adminIndexPenilaian')
                        ->with('ERROR', 'Ditemukan data terduplikasi, Data Tidak Boleh Sama.');
                }
                break;
            case "C8":
                return redirect()->route('adminIndexPenilaian')
                    ->with('ERROR', 'Untuk Kriteria Ini Harus Diisi Manual!');
            case "C9":
                return redirect()->route('adminIndexPenilaian')
                    ->with('ERROR', 'Untuk Kriteria Ini Harus Diisi Manual!');
            case "C10":
                return redirect()->route('adminIndexPenilaian')
                    ->with('ERROR', 'Untuk Kriteria Ini Harus Diisi Manual!');
            case "C11":
                return redirect()->route('adminIndexPenilaian')
                    ->with('ERROR', 'Untuk Kriteria Ini Harus Diisi Manual!');
            case "C12":
                return redirect()->route('adminIndexPenilaian')
                    ->with('ERROR', 'Untuk Kriteria Ini Harus Diisi Manual!');
            case "C13":
                return redirect()->route('adminIndexPenilaian')
                    ->with('ERROR', 'Untuk Kriteria Ini Harus Diisi Manual!');
            default:
        }

        // try{
        //     Penilaian::create($request->all());
        // } catch(\Illuminate\Database\QueryException $ex){ 
        //     return redirect()->route('adminIndexPenilaian')
        //             ->with('ERROR','Ditemukan data terduplikasi, Data Tidak Boleh Sama.');
        // }

        return redirect()->route('adminIndexPenilaian')
            ->with('success', 'Data Telah Ditambahkan.');
    }


    public function store(Request $request)
    {
        $request->validate([
            'id_alternatif' => 'required',
            'id_kriteria' => 'required',
            'nilai' => 'required'
        ]);

        try {
            Penilaian::create($request->all());
        } catch (\Illuminate\Database\QueryException $ex) {
            return redirect()->route('adminIndexPenilaian')
                ->with('ERROR', 'Ditemukan data terduplikasi, Data Tidak Boleh Sama.');
        }

        return redirect()->route('adminIndexPenilaian')
            ->with('success', 'Data Telah Ditambahkan.');
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Alternatif  $Penilaian
     * @return \Illuminate\Http\Response
     */
    public function show(Penilaian $penilaian)
    {
        // return view('Penilaians.show',compact('Penilaian'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Alternatif  $Penilaian
     * @return \Illuminate\Http\Response
     */
    public function edit(Penilaian $datapenilaian)
    {
        return view('dashboards.penilaian.edit', ['datapenilaian' => $datapenilaian]);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Alternatif  $Penilaian
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Penilaian $datapenilaian)
    {

        $request->validate([
            'nilai' => 'required',
        ]);

        Penilaian::where('id', $request->idpenilaian)
            ->update([
                'nilai' => $request->nilai,
            ]);
        return redirect()->route('adminIndexPenilaian')
            ->with('success', 'Data Telah Diperbaharui');

        // $datapenilaian->update($request->all());

        // return redirect()->route('adminIndexPenilaian')
        //                 ->with('success','Data Telah Diperbaharui');
    }

    /**
     * Remove the specified resource from storage .
     *
     * @param  \App\Alternatif  $Penilaian
     * @return \Illuminate\Http\Response
     */
    public function destroy(Penilaian $datapenilaian)
    {
        $datapenilaian->delete();

        return redirect()->route('adminIndexPenilaian')
            ->with('success', 'Data Telah Dihapus');
    }
}