TIF_E41201014/app/Http/Controllers/Server/PenilaianController.php

262 lines
8.6 KiB
PHP

<?php
namespace App\Http\Controllers\Server;
use App\Http\Controllers\Controller;
use App\Models\Penilaian;
use Illuminate\Http\Request;
use App\Models\Jurusan;
use App\Models\Guru;
use App\Models\Jawaban;
use App\Models\Siswa;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class PenilaianController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* 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\Penilaian $penilaian
* @return \Illuminate\Http\Response
*/
public function show(Penilaian $penilaian)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Penilaian $penilaian
* @return \Illuminate\Http\Response
*/
public function edit(Penilaian $penilaian)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Penilaian $penilaian
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Penilaian $penilaian)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Penilaian $penilaian
* @return \Illuminate\Http\Response
*/
public function destroy(Penilaian $penilaian)
{
//
}
public function hasilSeleksiJurusan()
{
$nomor = 1;
$jurusans = DB::table('jurusans')
->whereIn('id_jurusan', function ($query) {
$query->select('jurusan_id')
->from('penilaians')
->join('siswas', 'penilaians.siswa_id', '=', 'siswas.id')
->groupBy('jurusan_id');
})->get();
return view('server-side.penilaian.hasil-seleksi-jurusan', compact(['nomor', 'jurusans']));
}
public function hasilSeleksi($jurusan_id)
{
$nomor = 1;
$nomor2 = 1;
$nomor3 = 1;
$nomor4 = 1;
$finalResult = Penilaian::join('siswas', 'penilaians.siswa_id', '=', 'siswas.id')->where('jurusan_id', $jurusan_id)->get();
$nilaiRaport = $finalResult->pluck('nilai_raport')->sum();
$nilaiKeterampilan = $finalResult->pluck('nilai_keterampilan')->sum();
$nilaiUjian = $finalResult->pluck('nilai_ujian')->sum();
return view('server-side.penilaian.hasil-seleksi', compact(['nomor', 'nomor2', 'nomor3', 'nomor4', 'finalResult', 'nilaiRaport','nilaiKeterampilan', 'nilaiUjian']));
}
public function raport()
{
$nomor = 1;
$raport = Penilaian::join('siswas', 'penilaians.siswa_id', '=', 'siswas.id')->select('*')->get();
return view('server-side.penilaian.raport', compact(['nomor', 'raport']));
}
public function editNilaiRaport($siswa_id)
{
$raport = Penilaian::join('siswas', 'penilaians.siswa_id', '=', 'siswas.id')->select('*')->where('siswa_id', $siswa_id)->first();
return view('server-side.penilaian.edit-raport', compact(['raport']));
}
public function updateNilaiRaport(Request $request, $siswa_id)
{
$updateNilaiRaport = Penilaian::where('siswa_id', $siswa_id)->firstOrFail();
$updateNilaiRaport->update([
'nilai_raport' => $request->nilai_raport,
]);
return redirect()->route('penilaian.raport')->with('message', 'Berhasil merubah nilai raport ' . $request->nama_siswa);
}
public function keterampilan()
{
$nomor = 1;
$keterampilan = Penilaian::join('siswas', 'penilaians.siswa_id', '=', 'siswas.id')->select('*')->get();
return view('server-side.penilaian.keterampilan', compact(['nomor', 'keterampilan']));
}
public function editNilaiKeterampilan($siswa_id)
{
$keterampilan = Penilaian::join('siswas', 'penilaians.siswa_id', '=', 'siswas.id')->select('*')->where('siswa_id', $siswa_id)->first();
return view('server-side.penilaian.edit-keterampilan', compact(['keterampilan']));
}
public function updateNilaiKeterampilan(Request $request, $siswa_id)
{
$updateNilaiKeterampilan = Penilaian::where('siswa_id', $siswa_id)->firstOrFail();
$updateNilaiKeterampilan->update([
'nilai_keterampilan' => $request->nilai_keterampilan,
]);
return redirect()->route('penilaian.keterampilan')->with('message', 'Berhasil merubah nilai keterampilan ' . $request->nama_siswa);
}
public function ujian()
{
$nomor = 1;
$jurusanLogin = auth()->user()->user_id;
$jurusan = Guru::where('user_id', $jurusanLogin)
->join('jurusans', 'gurus.jurusan_id', '=', 'jurusans.id_jurusan')
->select('jurusans.nama_jurusan')
->first();
$jawaban = Jawaban::where('status', 1)->pluck('siswa_id'); // Mengambil semua siswa_id dengan status 1
if ($jurusan) {
$namaJurusan = $jurusan->nama_jurusan;
$ujian = Penilaian::join('siswas', 'penilaians.siswa_id', '=', 'siswas.id')
->join('jawabans', 'siswas.id', '=', 'jawabans.siswa_id')
->whereIn('siswas.id', function($query) use ($namaJurusan, $jawaban) {
$query->select('siswa_id')
->from('jawabans')
->whereIn('siswa_id', $jawaban) // Hanya siswa dengan status 1
->where('jurusan_id', function($subquery) use ($namaJurusan) {
$subquery->select('id_jurusan')
->from('jurusans')
->where('nama_jurusan', $namaJurusan);
});
})
->select('penilaians.*', 'siswas.*', 'jawabans.*')
->get();
}
return view('server-side.penilaian.ujian', compact(['nomor', 'ujian']));
}
public function editNilaiUjian($siswa_id)
{
$juriId = Guru::where('user_id', Auth::user()->user_id)->first();
$ujian = Penilaian::join('siswas', 'penilaians.siswa_id', '=', 'siswas.id')->select('*')->where('siswa_id', $siswa_id)->first();
return view('server-side.penilaian.edit-ujian', compact(['ujian', 'juriId']));
}
public function updateNilaiUjian(Request $request, $siswa_id)
{
$juriId = Guru::where('user_id', Auth::user()->user_id)->first();
$updateNilaiUjian = Penilaian::where('siswa_id', $siswa_id)->firstOrFail();
if ($juriId->status_juri == "Juri 1") {
$updateNilaiUjian->update([
'nilai_ujian_juri_1' => $request->nilai_ujian,
'nilai_ujian' => ($request->nilai_ujian + $updateNilaiUjian->nilai_ujian_juri_2) / 2,
]);
} else {
$updateNilaiUjian->update([
'nilai_ujian_juri_2' => $request->nilai_ujian,
'nilai_ujian' => ($request->nilai_ujian + $updateNilaiUjian->nilai_ujian_juri_1) / 2,
]);
}
return redirect()->route('penilaian.ujian')->with('message', 'Berhasil merubah nilai ujian ' . $request->nama_siswa);
}
public function downloadJawaban($siswa_id)
{
$jawaban = Jawaban::where('siswa_id', $siswa_id)->first();
$filePath = public_path('jawaban/' . $jawaban->file);
return response()->download($filePath);
}
public function validasiNilai()
{
$numb = 1;
$data = Siswa::join('penilaians', 'siswas.id', '=', 'penilaians.siswa_id')
->select('siswas.*', 'penilaians.*')
->get();
return view('server-side.validasi-nilai.index', compact(['numb', 'data']));
}
public function feedbackNilaiUjian($siswa_id)
{
$jawaban = Jawaban::join('siswas', 'siswas.id', '=', 'jawabans.siswa_id')->where('jawabans.siswa_id', $siswa_id)->first();
return view('server-side.penilaian.feedback', compact(['jawaban']));
}
public function updateFeedbackNilaiUjian(Request $request, $jawaban_id)
{
$request->validate([
'feedback' => ['required']
]);
Jawaban::find($jawaban_id)->update([
'feedback' => $request->feedback,
]);
return redirect()->route('penilaian.ujian')->with('message', 'Berhasil megirim feedback');
}
}