<?php
// admin/denemesonuc/girilmis-denemeler.php
require_once '../../includes/db.php'; 
require_once '../header.php';

// 1. CEVAP ANAHTARI GİRİLMİŞ (Tamamlanmış) DENEMELERİ ÇEK
$sql_girilmis = "SELECT e.id as exam_id, p.id as product_id, p.name, p.exam_type, b.name as brand_name,
                 (SELECT COUNT(*) FROM exam_analysis_keys k WHERE k.exam_id = e.id) as soru_sayisi
                 FROM exam_analysis_exams e
                 JOIN products p ON e.product_id = p.id
                 LEFT JOIN brands b ON p.brand_id = b.id
                 ORDER BY e.id DESC";
$girilmisler = $db->query($sql_girilmis)->fetchAll(PDO::FETCH_ASSOC);

// 2. YENİ SATIR EKLENME İHTİMALİNE KARŞI DERS/KONU HAVUZUNU ÇEK VE JSON YAP
$konular_query = $db->query("SELECT id, ders, konu FROM konular ORDER BY ders ASC, konu ASC")->fetchAll(PDO::FETCH_ASSOC);
$ders_konu_haritasi = [];
foreach($konular_query as $row) {
    if(!isset($ders_konu_haritasi[$row['ders']])) {
        $ders_konu_haritasi[$row['ders']] = [];
    }
    $ders_konu_haritasi[$row['ders']][] = ['id' => $row['id'], 'konu' => $row['konu']];
}
$json_ders_konu = json_encode($ders_konu_haritasi, JSON_UNESCAPED_UNICODE);
?>

<div class="container-fluid mt-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h2><i class="bi bi-list-check text-success"></i> Girilmiş Denemeler ve Düzenleme</h2>
        <div>
            <a href="sonuc-ekle.php" class="btn btn-outline-primary"><i class="bi bi-plus-circle"></i> Yeni Anahtar Ekle</a>
            <a href="index.php" class="btn btn-secondary"><i class="bi bi-arrow-left"></i> Geri Dön</a>
        </div>
    </div>
    <hr>

    <div class="card shadow-sm border-success mb-4">
        <div class="card-header bg-success text-white">
            <h5 class="mb-0">Sisteme Kayıtlı Cevap Anahtarları</h5>
        </div>
        <div class="card-body p-0">
            <div class="table-responsive" style="max-height: 400px; overflow-y: auto;">
                <table class="table table-hover table-striped align-middle mb-0">
                    <thead class="table-light position-sticky top-0 shadow-sm">
                        <tr>
                            <th width="10%" class="text-center">Sınav Türü</th>
                            <th width="45%">Deneme Adı / Markası</th>
                            <th width="15%" class="text-center">Kayıtlı Soru Sayısı</th>
                            <th width="30%" class="text-center">İşlemler</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php if(empty($girilmisler)): ?>
                            <tr><td colspan="4" class="text-center py-4 text-muted">Sistemde cevap anahtarı girilmiş hiçbir deneme bulunmuyor.</td></tr>
                        <?php else: ?>
                            <?php foreach($girilmisler as $gr): ?>
                            <tr>
                                <td class="text-center"><span class="badge bg-secondary fs-6"><?= $gr['exam_type'] ?></span></td>
                                <td>
                                    <small class="text-muted"><?= $gr['brand_name'] ? $gr['brand_name'] : 'Markasız' ?></small><br>
                                    <strong class="fs-5"><?= htmlspecialchars($gr['name']) ?></strong>
                                </td>
                                <td class="text-center">
                                    <span class="badge bg-info text-dark rounded-pill px-3 py-2 fs-6"><?= $gr['soru_sayisi'] ?> Soru</span>
                                </td>
                                <td class="text-center">
                                    <button type="button" class="btn btn-primary btn-duzenle" data-exam-id="<?= $gr['exam_id'] ?>" data-exam-name="<?= htmlspecialchars($gr['name']) ?>">
                                        <i class="bi bi-pencil-square"></i> Düzenle
                                    </button>
                                    <a href="sil-islemi.php?exam_id=<?= $gr['exam_id'] ?>" class="btn btn-outline-danger" onclick="return confirm('Bu denemenin TÜM cevap anahtarını silmek istediğinize emin misiniz?');">
                                        <i class="bi bi-trash"></i> Sil
                                    </a>
                                </td>
                            </tr>
                            <?php endforeach; ?>
                        <?php endif; ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>

    <div id="duzenlemeAlani" style="display:none;" class="mb-5">
        <div class="card shadow border-warning">
            <div class="card-header bg-warning text-dark d-flex justify-content-between align-items-center">
                <h5 class="mb-0" id="duzenlemeBaslik"><i class="bi bi-tools"></i> Düzenleniyor...</h5>
                <button type="button" class="btn btn-sm btn-dark" id="btnSatirEkle"><i class="bi bi-plus-circle"></i> Yeni Soru Satırı Ekle</button>
            </div>
            <div class="card-body p-0">
                <form id="manuelGuncelleForm" action="manuel-guncelle.php" method="POST">
                    <input type="hidden" name="exam_id" id="edit_exam_id">
                    
                    <div class="alert alert-light m-3 border">
                        <i class="bi bi-info-circle text-primary"></i> <strong>Bilgi:</strong> Mevcut soruları silebilir, değiştirebilir veya yeni satır ekleyerek yeni sorular girebilirsiniz. Eksik bir konu varsa "++ Listede Yok (Yeni Konu Yaz)" seçeneğini kullanabilirsiniz. İptal edilen soruları listeden silmek yerine işlem sütunundan "İptal" seçeneği eklenecektir (İlerleyen aşamada).
                    </div>

                    <div class="table-responsive">
                        <table class="table table-bordered table-hover table-sm text-center align-middle mb-0" id="manuelTable">
                            <thead class="table-dark">
                                <tr>
                                    <th width="15%">Ders</th>
                                    <th width="25%">Konu</th>
                                    <th width="8%">Cvp</th>
                                    <th width="8%">A Soru</th>
                                    <th width="8%">B Soru</th>
                                    <th width="8%">C Soru</th>
                                    <th width="8%">D Soru</th>
                                    <th width="10%">İşlem</th>
                                </tr>
                            </thead>
                            <tbody id="duzenleTbody">
                                </tbody>
                        </table>
                    </div>
                    <div class="card-footer text-end bg-light">
                        <button type="button" class="btn btn-secondary btn-lg" onclick="document.getElementById('duzenlemeAlani').style.display='none';">Vazgeç</button>
                        <button type="submit" class="btn btn-success btn-lg"><i class="bi bi-save"></i> Değişiklikleri Güncelle</button>
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>

<script>
    const veriHavuzu = <?= $json_ders_konu ?>;
</script>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const duzenlemeAlani = document.getElementById('duzenlemeAlani');
    const duzenlemeBaslik = document.getElementById('duzenlemeBaslik');
    const inputExamId = document.getElementById('edit_exam_id');
    const tbody = document.getElementById('duzenleTbody');

    // 1. "Düzenle" Butonuna Basıldığında AJAX İle Veri Çek
    document.querySelectorAll('.btn-duzenle').forEach(btn => {
        btn.addEventListener('click', function() {
            let examId = this.getAttribute('data-exam-id');
            let examName = this.getAttribute('data-exam-name');
            
            duzenlemeBaslik.innerHTML = `<i class="bi bi-tools"></i> Düzenleniyor: <strong>${examName}</strong>`;
            inputExamId.value = examId;
            duzenlemeAlani.style.display = 'block';
            
            // Ekranı aşağı kaydır
            duzenlemeAlani.scrollIntoView({ behavior: 'smooth' });

            // AJAX Loading
            tbody.innerHTML = '<tr><td colspan="8" class="py-5"><div class="spinner-border text-primary" role="status"></div> <span class="ms-2">Mevcut sorular getiriliyor...</span></td></tr>';
            
            // Veriyi çek
            fetch('ajax-sorulari-getir.php?exam_id=' + examId)
            .then(response => response.text())
            .then(data => {
                tbody.innerHTML = data;
            })
            .catch(error => {
                tbody.innerHTML = '<tr><td colspan="8" class="text-danger py-4">Veriler çekilirken bir hata oluştu!</td></tr>';
            });
        });
    });

    // 2. Yeni Satır Ekleme (Dinamik Konu Seçimi)
    let rowCount = 9000; // Çakışmaması için yüksek bir ID
    document.getElementById('btnSatirEkle').addEventListener('click', function() {
        if(tbody.querySelector('.text-muted')) tbody.innerHTML = ''; 
        
        let dersOptions = '<option value="">-- Seç --</option>';
        for (let ders in veriHavuzu) {
            dersOptions += `<option value="${ders}">${ders}</option>`;
        }

        let tr = document.createElement('tr');
        // Yeni eklenen satırlar olduğunu belirtmek için arkaplanı hafif yeşil yapıyoruz
        tr.className = "table-success bg-opacity-25"; 
        tr.innerHTML = `
            <td>
                <select name="sorular[${rowCount}][ders]" class="form-select form-select-sm select-ders" required>
                    ${dersOptions}
                </select>
            </td>
            <td>
                <select name="sorular[${rowCount}][konu_id]" class="form-select form-select-sm select-konu" required>
                    <option value="">Önce Ders Seçin</option>
                </select>
                <input type="text" name="sorular[${rowCount}][yeni_konu]" class="form-control form-control-sm mt-1 input-yeni-konu" placeholder="Yeni Konu Adı" style="display:none;" disabled>
            </td>
            <td>
                <select name="sorular[${rowCount}][cevap]" class="form-select form-select-sm fw-bold text-success" required>
                    <option value="A">A</option><option value="B">B</option><option value="C">C</option><option value="D">D</option><option value="E">E</option>
                </select>
            </td>
            <td><input type="number" name="sorular[${rowCount}][a_no]" class="form-control form-control-sm text-center" required></td>
            <td><input type="number" name="sorular[${rowCount}][b_no]" class="form-control form-control-sm text-center"></td>
            <td><input type="number" name="sorular[${rowCount}][c_no]" class="form-control form-control-sm text-center"></td>
            <td><input type="number" name="sorular[${rowCount}][d_no]" class="form-control form-control-sm text-center"></td>
            <td><button type="button" class="btn btn-sm btn-outline-danger btn-sil"><i class="bi bi-trash"></i> Sil</button></td>
        `;
        tbody.appendChild(tr);
        rowCount++;
    });

    // 3. Tablo İçi Dinamik Olaylar (Ders seçince konu getirme vs.)
    tbody.addEventListener('change', function(e) {
        
        // --- DERS DEĞİŞTİRME İŞLEMİ ---
        if(e.target.classList.contains('select-ders')) {
            let tr = e.target.closest('tr');
            let secilenDers = e.target.value;
            let konuSelect = tr.querySelector('.select-konu');
            let inputYeni = tr.querySelector('.input-yeni-konu');
            
            // GÜVENLİK: Eğer AJAX'tan gelen satırlarda select-konu yoksa kodu durdur, çökmesin.
            if(!konuSelect) return; 

            // 1. Dersi değiştirmeden önceki seçili konuyu güvenli şekilde alıyoruz
            let eskiKonuId = konuSelect.value;
            let eskiKonuMetin = (konuSelect.selectedIndex >= 0 && konuSelect.options[konuSelect.selectedIndex]) 
                                ? konuSelect.options[konuSelect.selectedIndex].text 
                                : '';
            
            // Eğer daha önceden manuel yeni konu yazılmışsa onu yakala
            if (eskiKonuId === 'YENI' && inputYeni) {
                eskiKonuMetin = inputYeni.value;
            }
            
            // 2. Konu listesini sıfırla
            konuSelect.innerHTML = '<option value="">-- Konu Seç --</option>';
            let eslesmeBulundu = false;

            // 3. Yeni dersin konularını dök ve eski konu listeye uyuyor mu kontrol et
            if(secilenDers && veriHavuzu[secilenDers]) {
                veriHavuzu[secilenDers].forEach(function(k) {
                    let isSelected = "";
                    if (k.id == eskiKonuId || k.konu === eskiKonuMetin) {
                        isSelected = "selected";
                        eslesmeBulundu = true;
                    }
                    konuSelect.innerHTML += `<option value="${k.id}" ${isSelected}>${k.konu}</option>`;
                });
            }
            konuSelect.innerHTML += `<option value="YENI" class="fw-bold text-primary bg-light">++ Listede Yok (Yeni Konu Yaz) ++</option>`;
            
            // 4. Eşleşme durumu ve input kutusunun ayarlanması
            if (inputYeni) {
                let gecersizMetinler = ['', '-- Konu Seç --', 'Önce Ders Seçin', '++ Listede Yok (Yeni Konu Yaz) ++'];
                
                if (!eslesmeBulundu && eskiKonuMetin && !gecersizMetinler.includes(eskiKonuMetin)) {
                    konuSelect.value = 'YENI';
                    inputYeni.style.display = 'block';
                    inputYeni.disabled = false;
                    inputYeni.value = eskiKonuMetin;
                } else {
                    if (!eslesmeBulundu) {
                        konuSelect.value = "";
                    }
                    inputYeni.style.display = 'none';
                    inputYeni.disabled = true;
                }
            }
        }

        // --- YENİ KONU SEÇENEĞİ İŞLEMİ ---
        if(e.target.classList.contains('select-konu')) {
            let tr = e.target.closest('tr');
            let inputYeni = tr.querySelector('.input-yeni-konu');
            
            if(inputYeni) {
                if(e.target.value === 'YENI') {
                    inputYeni.style.display = 'block';
                    inputYeni.disabled = false;
                    inputYeni.focus();
                } else {
                    inputYeni.style.display = 'none';
                    inputYeni.disabled = true;
                }
            }
        }
    });

    // Satır Silme
    tbody.addEventListener('click', function(e) {
        if(e.target.closest('.btn-sil')) {
            e.target.closest('tr').remove();
        }
    });
});
</script>

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