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

// Güvenlik Kontrolü: Forma doğrudan erişimi engelle
if ($_SERVER['REQUEST_METHOD'] != 'POST' || empty($_POST['product_id']) || empty($_POST['sorular'])) {
    echo "<script>window.location.href='sonuc-ekle.php';</script>";
    exit;
}

$product_id = $_POST['product_id'];
$sorular    = $_POST['sorular'];

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

try {
    // İşlemleri güvene alıyoruz (Hata çıkarsa hiçbir şey kaydedilmez)
    $db->beginTransaction();

    // 1. Ürün ve Deneme Bilgilerini Getir
    $prodStmt = $db->prepare("SELECT name, exam_type FROM products WHERE id = ?");
    $prodStmt->execute([$product_id]);
    $product = $prodStmt->fetch(PDO::FETCH_ASSOC);

    if(!$product) {
        throw new Exception("Sistemde böyle bir deneme bulunamadı!");
    }

    $exam_name = $product['name'];
    $exam_type = $product['exam_type']; // TYT, AYT, LGS

    // exam_analysis_exams tablosunda bu denemeye ait kayıt var mı?
    $examStmt = $db->prepare("SELECT id FROM exam_analysis_exams WHERE product_id = ?");
    $examStmt->execute([$product_id]);
    $exam = $examStmt->fetch(PDO::FETCH_ASSOC);

    if ($exam) {
        $exam_id = $exam['id'];
        // Varsa, eski soruları temizliyoruz (Üzerine yazma mantığı)
        $db->prepare("DELETE FROM exam_analysis_keys WHERE exam_id = ?")->execute([$exam_id]);
    } else {
        // Yoksa ilk kez oluşturuyoruz
        $insertExam = $db->prepare("INSERT INTO exam_analysis_exams (product_id, name, exam_type) VALUES (?, ?, ?)");
        $insertExam->execute([$product_id, $exam_name, $exam_type]);
        $exam_id = $db->lastInsertId();
    }

    // 2. Soruları Döngüye Al ve Veritabanına Kaydet
    $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) 
        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) {
        // A kitapçığı numarası veya Cevap boşsa o satırı atla (Güvenlik)
        if (empty($soru['a_no']) || empty($soru['cevap'])) 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 (konular tablosunda) zaten var mı diye kontrol et
                $checkKonuStmt->execute([$ders, $konu_adi]);
                if (!$checkKonuStmt->fetch()) {
                    // Yoksa havuza ekle! (brans sütununa TYT, AYT, LGS bilgisini yazıyoruz)
                    $insertKonuStmt->execute([$exam_type, $ders, $konu_adi]);
                }
            } else {
                $konu_adi = "Belirtilmemiş Konu"; // Form hatasına karşı önlem
            }
        } 
        // EĞER LİSTEDEN MEVCUT BİR KONU SEÇİLMİŞSE
        else {
            $getKonuStmt->execute([$konu_id]);
            $konuDb = $getKonuStmt->fetch(PDO::FETCH_ASSOC);
            $konu_adi = $konuDb ? $konuDb['konu'] : "Bilinmeyen Konu";
        }

        // Opsiyonel kitapçık (B, C, D) verilerini kontrol et
        $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;

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

        $insert_count++;
    }

    // Her şey sorunsuzsa veritabanına kalıcı olarak yaz
    $db->commit();

    $mesaj = "Tebrikler! <strong>" . htmlspecialchars($exam_name) . "</strong> denemesine ait toplam <strong>{$insert_count}</strong> soru başarıyla kaydedildi.";
    $mesaj_turu = "success";

} catch (Exception $e) {
    // Hata varsa işlemleri iptal et
    $db->rollBack();
    $mesaj = "Kayıt 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">İşlem Tamamlandı!</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 me-2">
                        <i class="bi bi-list-check me-1"></i> Girilmiş Denemeler
                    </a>
                    <a href="sonuc-ekle.php" class="btn btn-outline-primary btn-lg px-4 rounded-pill shadow-sm">
                        <i class="bi bi-plus-circle me-1"></i> Yeni Ekle
                    </a>
                </div>
            </div>
        </div>
    </div>
</div>

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