get(); $kelass = Kelas::all(); return view('admin.challenge.index', compact('challenges', 'kelass')); } public function create() { return view('admin.challenge.create'); } public function store(Request $request) { $request->validate([ 'judul_challenge' => 'required', 'exp' => 'required|integer|min:1', 'tenggat_waktu' => 'required|date', 'kelas' => 'required|array', 'pertanyaan' => 'required|array|min:1' ]); DB::transaction(function () use ($request) { $challenge = Challenge::create([ 'id_admin' => auth('admin')->id(), 'judul_challenge' => $request->judul_challenge, 'deskripsi' => $request->deskripsi, 'exp' => $request->exp, 'tenggat_waktu' => $request->tenggat_waktu, ]); $challenge->kelas()->attach($request->kelas); $jumlahSoal = count($request->pertanyaan); $expPerSoal = floor($request->exp / $jumlahSoal); foreach ($request->pertanyaan as $i => $pertanyaan) { SoalChallenge::create([ 'id_challenge' => $challenge->id_challenge, 'pertanyaan' => $pertanyaan, 'opsi_a' => $request->opsi_a[$i], 'opsi_b' => $request->opsi_b[$i], 'opsi_c' => $request->opsi_c[$i], 'opsi_d' => $request->opsi_d[$i], 'jawaban_benar' => $request->jawaban_benar[$i], 'exp_per_soal' => $expPerSoal, ]); } }); return redirect()->route('admin.challenge.index') ->with('success', 'Challenge & soal berhasil dibuat!'); } public function edit($id) { $challenge = Challenge::findOrFail($id); return view('admin.challenge.edit', compact('challenge')); } public function update(Request $request, $id) { $challenge = Challenge::findOrFail($id); $challenge->update([ 'judul_challenge' => $request->judul_challenge, 'deskripsi' => $request->deskripsi, 'exp' => $request->exp, 'tenggat_waktu' => $request->tenggat_waktu, ]); return redirect()->route('admin.challenge.index') ->with('success', 'Challenge berhasil diupdate!'); } public function destroy($id) { $challenge = Challenge::findOrFail($id); $challenge->delete(); return redirect()->route('admin.challenge.index') ->with('success', 'Challenge berhasil dihapus!'); } }