<?php
session_start();
include 'koneksi.php'; // pastikan koneksi ke $mysqli sudah benar

$user = 'guest'; // ganti dengan sistem login jika ada

// Cek jika mapel dipilih
$mapel = $_GET['mapel'] ?? null;
$no = isset($_GET['no']) ? (int)$_GET['no'] : 1;
$selesai = false;

// Konfigurasi tabel dan filter mapel
$tabel = '';
$filter_mapel = '';
$mapel_list = [
    'matematika' => 'mat',
    'bindo' => 'bind',
    'pancasila' => 'pancasila',
    'ipas' => 'ipas',
    'bing' => 'bing',
    'jawa' => 'jawa',
    'seni' => 'seni',
    'inggris' => 'inggris',
    'akm' => 'akm'
];

if (isset($mapel_list[$mapel])) {
    $tabel = $mapel_list[$mapel];
    $filter_mapel = "mapel='$mapel'";
} else {
    die("Mapel tidak valid.");
}

// Session keys
$session_key = 'soal_ids_' . $mapel;
$session_jawab_key = 'jawaban_user_' . $mapel;
$session_skor = 'skor_' . $mapel;

// Ambil ID soal jika belum ada di session
if (!isset($_SESSION[$session_key])) {
    $result = $mysqli->query("SELECT id FROM $tabel WHERE $filter_mapel ORDER BY id ASC LIMIT 15");
    if (!$result || $result->num_rows === 0) {
        die("Soal untuk mapel <b>$mapel</b> belum tersedia.");
    }
    $ids = [];
    while ($row = $result->fetch_assoc()) {
        $ids[] = $row['id'];
    }
    $_SESSION[$session_key] = $ids;
    $_SESSION[$session_jawab_key] = [];
    $_SESSION[$session_skor] = 0;
}

$soal_ids = $_SESSION[$session_key];
$total = count($soal_ids);

// Proses jawaban jika disubmit
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["jawaban"])) {
    $jawaban_user = $_POST["jawaban"];
    $id_soal = $soal_ids[$no - 1];

    $_SESSION[$session_jawab_key][$no - 1] = $jawaban_user;

    // Ambil jawaban benar
    $stmt = $mysqli->prepare("SELECT jawaban_benar FROM $tabel WHERE id=?");
    $stmt->bind_param("i", $id_soal);
    $stmt->execute();
    $stmt->bind_result($jawaban_benar);
    $stmt->fetch();
    $stmt->close();

    // Simpan ke database
    $stmt = $mysqli->prepare("INSERT INTO jawaban_user (username, mapel, id_soal, jawaban) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE jawaban=?");
    $stmt->bind_param("ssiss", $user, $mapel, $id_soal, $jawaban_user, $jawaban_user);
    $stmt->execute();
    $stmt->close();

    // Redirect ke soal berikutnya
    header("Location: ?mapel=$mapel&no=" . ($no + 1));
    exit();
}

// Tampilkan soal jika belum selesai
if ($no <= $total) {
    $id_soal = $soal_ids[$no - 1];
    $stmt = $mysqli->prepare("SELECT * FROM $tabel WHERE id=?");
    $stmt->bind_param("i", $id_soal);
    $stmt->execute();
    $result = $stmt->get_result();
    $soal = $result->fetch_assoc();
    $stmt->close();
    $jawaban_terpilih = $_SESSION[$session_jawab_key][$no - 1] ?? '';
} else {
    // Hitung skor
    $skor = 0;
    for ($i = 0; $i < $total; $i++) {
        $id_soal = $soal_ids[$i];
        $stmt = $mysqli->prepare("SELECT jawaban_benar FROM $tabel WHERE id=?");
        $stmt->bind_param("i", $id_soal);
        $stmt->execute();
        $stmt->bind_result($jawaban_benar);
        $stmt->fetch();
        $stmt->close();

        $jawaban_peserta = $_SESSION[$session_jawab_key][$i] ?? '';
        if (strtolower(trim($jawaban_peserta)) == strtolower(trim($jawaban_benar))) {
            $skor++;
        }
    }

    // Simpan hasil
    $stmt = $mysqli->prepare("INSERT INTO hasil_user (username, mapel, skor, total_soal) VALUES (?, ?, ?, ?)");
    $stmt->bind_param("ssii", $user, $mapel, $skor, $total);
    $stmt->execute();
    $stmt->close();

    $selesai = true;
}
?>

<!-- Tampilan HTML -->
<!DOCTYPE html>
<html>
<head>
    <title>Soal Mapel <?= ucfirst($mapel) ?></title>
</head>
<body>
    <?php if (!$selesai && isset($soal)): ?>
        <h2>Soal Nomor <?= $no ?></h2>
        <p><?= $soal['pertanyaan'] ?></p>
        <form method="post">
            <label><input type="radio" name="jawaban" value="A" <?= $jawaban_terpilih == 'A' ? 'checked' : '' ?>> <?= $soal['pilihan_a'] ?></label><br>
            <label><input type="radio" name="jawaban" value="B" <?= $jawaban_terpilih == 'B' ? 'checked' : '' ?>> <?= $soal['pilihan_b'] ?></label><br>
            <label><input type="radio" name="jawaban" value="C" <?= $jawaban_terpilih == 'C' ? 'checked' : '' ?>> <?= $soal['pilihan_c'] ?></label><br>
            <label><input type="radio" name="jawaban" value="D" <?= $jawaban_terpilih == 'D' ? 'checked' : '' ?>> <?= $soal['pilihan_d'] ?></label><br>
            <button type="submit">Jawab</button>
        </form>
    <?php elseif ($selesai): ?>
        <h2>✅ Tes Selesai</h2>
        <p>Skor Anda: <strong><?= $skor ?></strong> dari <strong><?= $total ?></strong> soal.</p>
        <a href="index.php">⬅️ Kembali ke Home</a>
        <?php
        // Bersihkan session agar bisa mulai ulang
        unset($_SESSION[$session_key]);
        unset($_SESSION[$session_jawab_key]);
        unset($_SESSION[$session_skor]);
        ?>
    <?php else: ?>
        <p>Soal tidak ditemukan.</p>
    <?php endif; ?>
</body>
</html>
