<?php
// admin/denemesonuc/manuel-guncelle.php
session_start();
require_once '../../includes/db.php'; 
require_once '../header.php';

// Güvenlik: Post var mı?
if ($_SERVER['REQUEST_METHOD'] != 'POST' || empty($_POST['exam_id'])) {
    echo "<script>window.location.href='girilmis-denemeler.php';</script>";
    exit;
}

$exam_id = intval($_POST['exam_id']);
$sorular = isset($_POST['sorular']) ? $_POST['sorular'] : [];

$mesaj = "";
$mesaj_turu = "";

try {
    $db->beginTransaction();

    // 1. İlgili denemenin exam_type (TYT, AYT, LGS) bilgisini alalım (Yeni konu eklenecekse Brans kısmına lazım)
    $examStmt = $db->prepare("SELECT exam_type, name FROM exam_analysis_exams WHERE id = ?");
    $examStmt->execute([$exam_id]);
    $examInfo = $examStmt->fetch(PDO::FETCH_ASSOC);

    if(!$examInfo) {
        throw new Exception("Sınav kaydı bulunamadı!");
    }
    
    $exam_type = $examInfo['exam_type'];
    $exam_name = $examInfo['name'];

    // 2. Çok Önemli Taktik: Eski soruların Hepsini SİLİYORUZ!
    // Neden? Çünkü admin bazı satırları çöp kutusuna basıp silmiş olabilir,
    // ID takibi yapmak yerine tümünü silip yeni POST edilenleri eklemek %100 garantili ve temiz bir yöntemdir.
    $db->prepare("DELETE FROM exam_analysis_keys WHERE exam_id = ?")->execute([$exam_id]);

    // 3. Soruları Döngüye Al ve Yeniden Ekle
    $insertKeyStmt = $db->prepare("INSERT INTO exam_analysis_keys 
        (exam_id, lesson_name, topic_name, correct_answer, a_question_no, b_question_no, c_question_no, d_question_no, is_canceled) 
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");

    $getKonuStmt = $db->prepare("SELECT konu FROM konular WHERE id = ?");
    $insertKonuStmt = $db->prepare("INSERT INTO konular (brans, ders, konu) VALUES (?, ?, ?)");
    $checkKonuStmt = $db->prepare("SELECT id FROM konular WHERE ders = ? AND konu = ?");

    $insert_count = 0;

    foreach ($sorular as $soru) {
        if (empty($soru['a_no']) || empty($soru['cevap']) || empty($soru['ders'])) continue;

        $ders = trim($soru['ders']);
        $konu_id = trim($soru['konu_id']);
        $konu_adi = "";

        // EĞER "YENİ KONU YAZ" SEÇİLMİŞSE
        if ($konu_id === 'YENI') {
            $yeni_konu_adi = trim($soru['yeni_konu']);
            
            if (!empty($yeni_konu_adi)) {
                $konu_adi = $yeni_konu_adi;
                
                // Bu yeni konu havuzda zaten var mı diye kontrol et
                $checkKonuStmt->execute([$ders, $konu_adi]);
                if (!$checkKonuStmt->fetch()) {
                    // Yoksa havuza ekle!
                    $insertKonuStmt->execute([$exam_type, $ders, $konu_adi]);
                }
            } else {
                $konu_adi = "Belirtilmemiş Konu";
            }
        } 
        // MEVCUT KONU SEÇİLDİYSE
        else {
            $getKonuStmt->execute([$konu_id]);
            $konuDb = $getKonuStmt->fetch(PDO::FETCH_ASSOC);
            $konu_adi = $konuDb ? $konuDb['konu'] : "Bilinmeyen Konu";
        }

        // Opsiyonel veriler ve İptal durumu
        $b_no = !empty($soru['b_no']) ? intval($soru['b_no']) : null;
        $c_no = !empty($soru['c_no']) ? intval($soru['c_no']) : null;
        $d_no = !empty($soru['d_no']) ? intval($soru['d_no']) : null;
        $is_canceled = isset($soru['is_canceled']) ? 1 : 0; // Checkbox işaretliyse 1, değilse 0

        // Soruyu kaydet
        $insertKeyStmt->execute([
            $exam_id,
            $ders,
            $konu_adi,
            strtoupper(trim($soru['cevap'])),
            intval($soru['a_no']),
            $b_no,
            $c_no,
            $d_no,
            $is_canceled
        ]);

        $insert_count++;
    }

    $db->commit();

    $mesaj = "Mükemmel! <strong>" . htmlspecialchars($exam_name) . "</strong> denemesi başarıyla güncellendi. Yeni soru sayısı: <strong>{$insert_count}</strong>.";
    $mesaj_turu = "success";

} catch (Exception $e) {
    $db->rollBack();
    $mesaj = "Güncelleme sırasında bir hata oluştu: " . $e->getMessage();
    $mesaj_turu = "danger";
}
?>

<div class="container-fluid mt-5">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card shadow-lg border-0 rounded-3">
                <div class="card-body text-center p-5">
                    
                    <?php if($mesaj_turu == 'success'): ?>
                        <i class="bi bi-check-circle text-success" style="font-size: 5rem;"></i>
                        <h2 class="mt-4 text-success fw-bold">Güncelleme Başarılı!</h2>
                    <?php else: ?>
                        <i class="bi bi-x-circle text-danger" style="font-size: 5rem;"></i>
                        <h2 class="mt-4 text-danger fw-bold">İşlem Başarısız!</h2>
                    <?php endif; ?>
                    
                    <p class="lead mt-3 text-muted"><?= $mesaj ?></p>
                    
                    <hr class="my-4">
                    
                    <a href="girilmis-denemeler.php" class="btn btn-success btn-lg px-4 rounded-pill shadow-sm">
                        <i class="bi bi-list-check me-2"></i> Listeye Geri Dön
                    </a>
                </div>
            </div>
        </div>
    </div>
</div>

<?php require_once '../footer.php'; ?>