MIF_E31212365/app/Http/Controllers/Admin/KuisController.php

173 lines
4.7 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\DetailJawaban;
use App\Models\DetailRiwayatKuis;
use App\Models\Kuis;
use App\Models\Materi;
use App\Models\RiwayatKuis;
use Inertia\Inertia;
class KuisController extends Controller
{
public function index($id, Request $request)
{
$materi = Materi::with(['kuis'])->where('id', $id)->first();
$soal = Kuis::with(['jawaban'])->where('materi_id', $id)->get();
try {
//code...
$no = $request->query('soal') - 1;
return Inertia::render('Admin/Kuis', [
"materi" => $materi,
"soal" => $soal[$no]
]);
} catch (\Throwable $th) {
//throw $th;
return Inertia::render('Admin/AddKuis', [
"materi" => $materi,
]);
}
}
public function saveQuiz(Request $request)
{
$data = $request->all();
$kuis = Kuis::findOrFail($data['id']);
$gambar_soal = $request->file('gambar_soal');
if ($gambar_soal) {
// random name file berdasarkan waktu
$name = time() . '.' . $gambar_soal->getClientOriginalExtension();
// upload to public
$gambar_soal->move(public_path('uploads/soal'), $name);
$data['gambar_soal'] = $name;
}
$kuis->update([
"pertanyaan" => $data['soal'],
"gambar_soal" => $data['gambar_soal'],
]);
foreach ($data['jawaban'] as $key => $value) {
$jawaban = DetailJawaban::findOrFail($data['id_jawaban'][$key]);
$jawaban->jawaban = $value;
$jawaban->benar = $data['benar'][$key];
try {
//code...
$gambar_jawaban = $request->file('gambar_jawaban')[$key];
$name = time() . '.' . $gambar_jawaban->getClientOriginalExtension();
// upload to public
$gambar_jawaban->move(public_path('uploads/jawaban'), $name);
$jawaban->gambar_jawaban = $name;
} catch (\Throwable $th) {
//throw $th;
}
$jawaban->save();
}
return response()->json([
"status" => "success",
"message" => "Data kuis berhasil diupdate",
], 200);
}
public function addQuiz(Request $request)
{
$data = $request->all();
$kuis = new Kuis;
// dd($request->file('gambar_jawaban'));
$gambar_soal = $request->file('gambar_soal');
if ($gambar_soal) {
// random name file berdasarkan waktu
$name = time() . '.' . $gambar_soal->getClientOriginalExtension();
// upload to public
$gambar_soal->move(public_path('uploads/soal'), $name);
$data['gambar_soal'] = $name;
}
$kuis->materi_id = $data['id'];
$kuis->pertanyaan = $data['soal'];
$kuis->gambar_soal = $data['gambar_soal'];
$kuis->save();
foreach ($data['jawaban'] as $key => $value) {
$jawaban = new DetailJawaban;
$jawaban->kuis_id = $kuis->id;
$jawaban->jawaban = $value;
$jawaban->benar = $data['benar'][$key];
if ($data['gambar_jawaban'][$key] != "undefined") {
$gambar_jawaban = $request->file('gambar_jawaban')[$key];
$name = time() . $key . '.' . $gambar_jawaban->getClientOriginalExtension();
// upload to public
$gambar_jawaban->move(public_path('uploads/jawaban'), $name);
$jawaban->gambar_jawaban = $name;
}
$jawaban->save();
}
return response()->json([
"status" => "success",
"message" => "Data kuis berhasil ditambahkan",
], 200);
}
public function submitQuiz(Request $request)
{
$kuis = RiwayatKuis::create([
"materi_id" => $request->materi_id,
"user_id" => $request->user_id,
"skor" => (int)$request->nilai,
"jumlah_benar" => $request->total_benar,
"jumlah_salah" => $request->total_salah,
"status" => "selesai",
]);
foreach ($request->jawaban as $key => $value) {
$detail = new DetailRiwayatKuis;
$detail->riwayat_kuis_id = $kuis->id;
$detail->kuis_id = $value['kuis_id'];
$detail->jawaban_kuis_id = $value['jawaban_id'];
$detail->save();
}
return response()->json([
"status" => "success",
"data" => $kuis,
], 200);
}
}