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

190 lines
5.8 KiB
PHP

<?php
namespace App\Http\Controllers\Server;
use App\Http\Controllers\Controller;
use App\Models\Guru;
use App\Models\Jawaban;
use App\Models\Jurusan;
use App\Models\Siswa;
use App\Models\Ujian;
use DateTime;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class UjianController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$nomor = 1;
$ujians = Ujian::join('jurusans', 'ujians.jurusan_id', '=', 'jurusans.id_jurusan')->select('*')->get();
return view('server-side.ujian.index', compact(['nomor', 'ujians']));
}
public function feedbackUjianSiswa()
{
$nomor = 1;
$siswa = Siswa::where('user_id', Auth::user()->user_id)->first();
$jawaban = Jawaban::join('siswas', 'siswas.id', '=', 'jawabans.siswa_id')->where('jawabans.siswa_id', $siswa->id)->get();
return view('server-side.penilaian.feedback-ujian', compact(['nomor', 'jawaban']));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$jurusan = Jurusan::all();
$jurusanLogin = auth()->user()->user_id;
$jurusanGuru = Guru::where('user_id', $jurusanLogin)
->join('jurusans', 'gurus.jurusan_id', '=', 'jurusans.id_jurusan')
->select('gurus.jurusan_id', 'jurusans.nama_jurusan')
->first();
return view('server-side.ujian.create', compact(['jurusan', 'jurusanGuru']));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'soal' => 'required|string',
'keterangan' => 'required|string',
'level' => 'required|string',
'jurusan_id' => 'required',
'tanggal_mulai' => 'required',
'tanggal_mulai' => 'required',
'jam_mulai' => 'required',
'tanggal_berakhir' => 'required',
'jam_berakhir' => 'required'
]);
$ujian = new Ujian();
$ujian->soal = $request->soal;
$ujian->keterangan = $request->keterangan;
$ujian->level = $request->level;
$ujian->jurusan_id = $request->jurusan_id;
$ujian->tanggal_mulai = $request->tanggal_mulai;
$ujian->jam_mulai = $request->jam_mulai;
$ujian->tanggal_berakhir = $request->tanggal_berakhir;
$ujian->jam_berakhir = $request->jam_berakhir;
$ujian->save();
return redirect()->route('ujian.index')->with('success', 'Berhasil menambah soal ujian baru');
}
/**
* Display the specified resource.
*
* @param \App\Models\Ujian $ujian
* @return \Illuminate\Http\Response
*/
public function show(Ujian $ujian)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Ujian $ujian
* @return \Illuminate\Http\Response
*/
public function edit(Ujian $ujian)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Ujian $ujian
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Ujian $ujian)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Ujian $ujian
* @return \Illuminate\Http\Response
*/
public function destroy(Ujian $ujian)
{
//
}
public function ujianSiswa() {
$selectIdSiswa = Siswa::where('user_id', Auth::user()->user_id)->value('id');
$userIdLog = Siswa::where('user_id', Auth::user()->user_id)->first();
$ujians = Ujian::where('jurusan_id', $userIdLog->jurusan_id)->get();
return view('server-side.ujian.ujian-siswa', compact(['ujians', 'selectIdSiswa']));
}
public function mulaiUjian($ujian_id)
{
$ujian = Ujian::join('jurusans', 'ujians.jurusan_id', '=', 'jurusans.id_jurusan')->select('*')->where('ujian_id', $ujian_id)->first();
return view('server-side.ujian.mulai-ujian', compact(['ujian']));
}
public function selesaiUjian(Request $request)
{
$request->validate([
'file' => 'required|file|mimes:zip,rar|max:2048',
]);
$file = $request->file('file');
$fileName = time() . '_' . $file->getClientOriginalName();
$file->move(public_path('jawaban'), $fileName);
$selectIdSiswa = Siswa::where('user_id', Auth::user()->user_id)->first();
$statusPengumpulan = '';
$selectUjian = Ujian::where('ujian_id', $request->ujian_id)->first();
$tanggalMulaiUjian = $selectUjian->tanggal_mulai;
$tanggalSelesaiUjian = $selectUjian->tanggal_berakhir;
$jamMulaiUjian = $selectUjian->jam_mulai;
$jamSelesaiUjian = $selectUjian->jam_berakhir;
$dateTimeMulaiUjian = new DateTime($tanggalMulaiUjian . ' ' . $jamMulaiUjian);
$dateTimeSelesaiUjian = new DateTime($tanggalSelesaiUjian . ' ' . $jamSelesaiUjian);
$currentTime = new DateTime();
if ($currentTime >= $dateTimeMulaiUjian && $currentTime <= $dateTimeSelesaiUjian) {
$statusPengumpulan = 'Tepat Waktu';
} else {
$statusPengumpulan = 'Telat Mengumpulkan';
}
$jawaban = new Jawaban();
$jawaban->siswa_id = $selectIdSiswa->id;
$jawaban->file = $fileName;
$jawaban->ujian_id = $request->ujian_id;
$jawaban->status = true;
$jawaban->status_pengumpulan = $statusPengumpulan;
$jawaban->save();
return redirect()->route('daftar.ujian')->with('success', 'Berhasil mengumpulkan jawaban');
}
}