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

// Formdan veri gelmediyse ana sayfaya yolla
if ($_SERVER['REQUEST_METHOD'] != 'POST' || empty($_FILES['csv_file']['name'])) {
    echo "<script>window.location.href='sonuc-ekle.php';</script>";
    exit;
}

$product_id = $_POST['secilen_product_id'];

// Sistemdeki mevcut konuları 'konular' tablosundan çekelim
$dbTopicsQuery = $db->query("SELECT id, brans, ders, konu FROM konular ORDER BY ders ASC, konu ASC")->fetchAll(PDO::FETCH_ASSOC);

$dbTopics = [];
$dersListesi = []; 
foreach ($dbTopicsQuery as $row) {
    $ders_adi_kucuk = mb_strtolower(trim($row['ders']), 'UTF-8');
    $konu_adi_kucuk = mb_strtolower(trim($row['konu']), 'UTF-8');
    
    $dbTopics[$ders_adi_kucuk][$konu_adi_kucuk] = $row['id'];
    
    if(!isset($dersListesi[$row['ders']])) {
        $dersListesi[$row['ders']] = [];
    }
    $dersListesi[$row['ders']][$row['id']] = $row['konu'];
}

// ==========================================
// YARDIMCI FONKSİYON: EXCEL TÜRKÇE KARAKTER ÇÖZÜCÜ
// ==========================================
function guvenli_turkce_yap($str) {
    // Excel'in bıraktığı görünmez BOM (Byte Order Mark) karakterini temizle
    $str = preg_replace('/^[\xef\xbb\xbf]+/', '', $str);
    
    // Eğer metin UTF-8 değilse (Excel ANSI kaydettiyse), zorla UTF-8'e çevir
    if (!mb_check_encoding($str, 'UTF-8')) {
        $str = mb_convert_encoding($str, 'UTF-8', 'ISO-8859-9'); // Windows Türkçe (ANSI) to UTF-8
    }
    return trim($str);
}

// ==========================================
// AKILLI CSV OKUMA VE AYIRICI TESPİTİ
// ==========================================
$filename = $_FILES['csv_file']['tmp_name'];
$lines = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

$csv_data = [];
$unique_subjects = []; 

if(!empty($lines)) {
    // Ayırıcıyı tahmin et (; veya , veya Tab)
    $first_line = $lines[0];
    $delimiter = ';'; 
    if (substr_count($first_line, "\t") > substr_count($first_line, ';')) {
        $delimiter = "\t"; 
    } elseif (substr_count($first_line, ',') > substr_count($first_line, ';')) {
        $delimiter = ','; 
    }

    $row_count = 0;
    foreach($lines as $line) {
        $row_count++;
        if ($row_count == 1) continue; // Başlıkları atla

        // ÖNEMLİ: Satırı virgüllere bölmeden ÖNCE Türkçe karakterleri düzeltiyoruz!
        $line = guvenli_turkce_yap($line);
        $data = str_getcsv($line, $delimiter);

        if(count($data) < 4) continue;

        $lesson_name = trim($data[0]);
        $topic_name  = trim($data[1]);
        
        if(empty($lesson_name) || empty($topic_name)) continue;

        $csv_data[] = [
            'lesson' => $lesson_name,
            'topic'  => $topic_name,
            'answer' => strtoupper(trim($data[2])),
            'a_no'   => intval($data[3]),
            'b_no'   => isset($data[4]) && trim($data[4]) !== '' ? intval($data[4]) : null,
            'c_no'   => isset($data[5]) && trim($data[5]) !== '' ? intval($data[5]) : null,
            'd_no'   => isset($data[6]) && trim($data[6]) !== '' ? intval($data[6]) : null,
        ];

        $subject_key = $lesson_name . '|||' . $topic_name;
        if(!isset($unique_subjects[$subject_key])) {
            $unique_subjects[$subject_key] = [
                'lesson' => $lesson_name,
                'topic'  => $topic_name
            ];
        }
    }
}

$_SESSION['temp_csv_data'] = $csv_data;
$_SESSION['temp_product_id'] = $product_id;
?>

<div class="container-fluid mt-4">
    <h2><i class="bi bi-diagram-3"></i> Ders ve Konu Eşleştirme</h2>
    
    <?php if(empty($unique_subjects)): ?>
        <div class="alert alert-danger p-4 text-center">
            <i class="bi bi-exclamation-triangle-fill fs-1 d-block mb-3"></i>
            <h4>Yüklediğiniz Excel'den Geçerli Veri Okunamadı!</h4>
            <p>Lütfen "Örnek Şablonu" indirip formatı bozmadan doldurduğunuza emin olun.</p>
            <a href="sonuc-ekle.php" class="btn btn-primary mt-2">Geri Dön ve Tekrar Dene</a>
        </div>
    <?php else: ?>

        <div class="alert alert-warning">
            <i class="bi bi-info-circle"></i> Excel'deki konular sistemle karşılaştırıldı. <strong>Kırmızı</strong> işaretli olanlar havuzda bulunamadı. Seçimi <strong>"Yeni Konu Olarak Ekle"</strong> bırakırsanız, Excel'deki konu adı havuza kalıcı olarak kaydedilir.
        </div>

        <form action="excel-kaydet.php" method="POST">
            <div class="card shadow-sm mb-4 border-warning">
                <div class="card-body p-0 table-responsive">
                    <table class="table table-hover table-striped align-middle mb-0">
                        <thead class="table-dark">
                            <tr>
                                <th width="5%">Durum</th>
                                <th width="20%">Excel'deki Ders</th>
                                <th width="30%">Excel'deki Konu</th>
                                <th width="45%">Sistemdeki Karşılığı</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php 
                            $index = 0;
                            foreach($unique_subjects as $key => $val): 
                                $csv_lesson = $val['lesson'];
                                $csv_topic = $val['topic'];
                                
                                $csv_lesson_lower = mb_strtolower($csv_lesson, 'UTF-8');
                                $csv_topic_lower = mb_strtolower($csv_topic, 'UTF-8');

                                // Sistemde Tam Eşleşme Ara
                                $matched_topic_id = null;
                                if(isset($dbTopics[$csv_lesson_lower]) && isset($dbTopics[$csv_lesson_lower][$csv_topic_lower])) {
                                    $matched_topic_id = $dbTopics[$csv_lesson_lower][$csv_topic_lower];
                                }
                                
                                // Gelen dersin sistemdeki Orijinal adını bulalım ki dropdown'ı filtreleyebilelim
                                $actual_lesson_name = null;
                                foreach (array_keys($dersListesi) as $db_ders) {
                                    if (mb_strtolower(trim($db_ders), 'UTF-8') == $csv_lesson_lower) {
                                        $actual_lesson_name = $db_ders;
                                        break;
                                    }
                                }

                                $status_icon = $matched_topic_id ? '<i class="bi bi-check-circle-fill text-success fs-4"></i>' : '<i class="bi bi-plus-circle-fill text-primary fs-4"></i>';
                                $row_class = $matched_topic_id ? '' : 'table-primary'; // Kırmızı (danger) yerine mavi (primary) yaptık ki olumlu görünsün
                            ?>
                            <tr class="<?= $row_class ?>">
                                <td class="text-center"><?= $status_icon ?></td>
                                <td class="fw-bold"><?= htmlspecialchars($csv_lesson) ?></td>
                                <td><?= htmlspecialchars($csv_topic) ?></td>
                                <td>
                                    <input type="hidden" name="mapping[<?= $index ?>][csv_lesson]" value="<?= htmlspecialchars($csv_lesson) ?>">
                                    <input type="hidden" name="mapping[<?= $index ?>][csv_topic]" value="<?= htmlspecialchars($csv_topic) ?>">
                                    
                                    <select name="mapping[<?= $index ?>][system_topic_id]" class="form-select form-select-sm fw-bold" <?= $matched_topic_id ? 'style="border-color: #198754;"' : 'style="border-color: #0d6efd; color:#0d6efd;"' ?> required>
                                        
                                        <?php if(!$matched_topic_id): ?>
                                            <option value="YENI" selected>✨ Excel'deki Konuyu Havuza Ekle</option>
                                        <?php endif; ?>
                                        
                                        <?php if ($actual_lesson_name && isset($dersListesi[$actual_lesson_name])): ?>
                                            <optgroup label='Var Olan Konularla Eşleştir'>
                                            <?php foreach($dersListesi[$actual_lesson_name] as $t_id => $t_adi): ?>
                                                <?php $selected = ($t_id == $matched_topic_id) ? 'selected' : ''; ?>
                                                <option value="<?= $t_id ?>" <?= $selected ?>><?= htmlspecialchars($t_adi) ?></option>
                                            <?php endforeach; ?>
                                            </optgroup>
                                        <?php endif; ?>
                                        
                                        <?php if($matched_topic_id): ?>
                                            <option value="YENI" class="text-primary bg-light">++ Yeni Konu Olarak Ekle ++</option>
                                        <?php endif; ?>
                                    </select>
                                </td>
                            </tr>
                            <?php $index++; endforeach; ?>
                        </tbody>
                    </table>
                </div>
            </div>

            <div class="text-end mb-5">
                <a href="sonuc-ekle.php" class="btn btn-secondary btn-lg me-2">İptal Et</a>
                <button type="submit" class="btn btn-success btn-lg"><i class="bi bi-save"></i> Onayla ve Kaydet</button>
            </div>
        </form>
    <?php endif; ?>
</div>

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