173 lines
4.7 KiB
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);
|
|
}
|
|
}
|