109 lines
3.0 KiB
PHP
109 lines
3.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Challenge;
|
|
use App\Models\Kelas;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class ChallengeController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$challenges = Challenge::latest()->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'
|
|
]);
|
|
|
|
$challenge = Challenge::create([
|
|
'id_admin' => auth('admin')->id(),
|
|
'judul_challenge' => $request->judul_challenge,
|
|
'deskripsi' => $request->deskripsi,
|
|
'exp' => $request->exp,
|
|
'tenggat_waktu' => $request->tenggat_waktu,
|
|
]);
|
|
|
|
// attach kelas
|
|
$challenge->kelas()->attach($request->kelas);
|
|
|
|
return redirect()->route('admin.challenge.soal.create', $challenge->id_challenge);
|
|
}
|
|
|
|
public function createSoal($id)
|
|
{
|
|
$challenge = Challenge::findOrFail($id);
|
|
return view('admin.challenge.soal', compact('challenge'));
|
|
}
|
|
|
|
public function storeSoal(Request $request, $id)
|
|
{
|
|
$challenge = Challenge::findOrFail($id);
|
|
|
|
$jumlahSoal = count($request->pertanyaan);
|
|
$expPerSoal = floor($challenge->exp / $jumlahSoal);
|
|
|
|
foreach ($request->pertanyaan as $key => $pertanyaan) {
|
|
SoalChallenge::create([
|
|
'id_challenge' => $id,
|
|
'pertanyaan' => $pertanyaan,
|
|
'opsi_a' => $request->opsi_a[$key],
|
|
'opsi_b' => $request->opsi_b[$key],
|
|
'opsi_c' => $request->opsi_c[$key],
|
|
'opsi_d' => $request->opsi_d[$key],
|
|
'jawaban_benar' => $request->jawaban_benar[$key],
|
|
'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!');
|
|
}
|
|
}
|