<?php
/**
 * VERİTABANI DÜZELTME SCRİPTİ
 *
 * Bu script sunucuya yükledikten sonra BİR KEZ çalıştırılmalıdır!
 * Türkçe karakter problemlerini düzeltir ve veritabanını temizler.
 *
 * KULLANIM: Tarayıcıda http://yourdomain.com/fix_database.php?run=yes adresini ziyaret edin
 * Çalıştırdıktan sonra bu dosyayı GÜVENLİK nedeniyle silin!
 */

// Basit güvenlik kontrolü
if (!isset($_GET['run']) || $_GET['run'] !== 'yes') {
    die("<h1 style='color:red;'>Erişim Reddedildi!</h1><p>Bu scripti çalıştırmak için URL'ye <code>?run=yes</code> parametresini ekleyin.</p><p>Örnek: <code>fix_database.php?run=yes</code></p>");
}

require_once __DIR__ . '/includes/db.php';

echo "<!DOCTYPE html><html><head><meta charset='UTF-8'><title>Veritabanı Düzeltme</title>";
echo "<style>body{font-family:Arial,sans-serif;max-width:800px;margin:50px auto;padding:20px;}";
echo ".success{color:green;} .error{color:red;} .info{color:blue;} h1{border-bottom:2px solid #333;}</style></head><body>";
echo "<h1>Veritabanı Düzeltme İşlemi</h1>";

try {
    // 1. Bozuk "İşe Gidilmedi" kayıtlarını temizle
    echo "<h2>1. 'İşe Gidilmedi' Güzergahı Kontrolü</h2>";

    // Bozuk kayıtları bul
    $stmt = $conn->query("SELECT id, guzergah_adi FROM guzergahlar WHERE guzergah_adi LIKE '%se Gidil%' OR guzergah_adi LIKE '%�%' OR guzergah_adi LIKE '%?%'");
    $bozuk_kayitlar = $stmt->fetchAll(PDO::FETCH_ASSOC);

    if (count($bozuk_kayitlar) > 0) {
        echo "<p class='info'>Bozuk kayıtlar bulundu, temizleniyor...</p>";
        foreach ($bozuk_kayitlar as $kayit) {
            echo "<p class='error'>Siliniyor: ID={$kayit['id']}, Ad={$kayit['guzergah_adi']}</p>";
            $conn->prepare("DELETE FROM guzergahlar WHERE id = ?")->execute([$kayit['id']]);
        }
    } else {
        echo "<p class='success'>✓ Bozuk kayıt bulunamadı.</p>";
    }

    // Doğru "İşe Gidilmedi" kaydını kontrol et ve yoksa ekle
    $stmt = $conn->prepare("SELECT id FROM guzergahlar WHERE guzergah_adi = ?");
    $stmt->execute(['İşe Gidilmedi']);

    if ($stmt->rowCount() == 0) {
        $conn->exec("INSERT INTO guzergahlar (guzergah_adi, varsayilan_ucret) VALUES ('İşe Gidilmedi', 0.00)");
        echo "<p class='success'>✓ 'İşe Gidilmedi' güzergahı eklendi.</p>";
    } else {
        echo "<p class='success'>✓ 'İşe Gidilmedi' güzergahı zaten mevcut.</p>";
    }

    // 2. Resmi tatillerdeki bozuk karakterleri düzelt
    echo "<h2>2. Resmi Tatiller Kontrolü</h2>";

    $stmt = $conn->query("SELECT id, aciklama FROM resmi_tatiller WHERE aciklama LIKE '%�%' OR aciklama LIKE '%?%'");
    $bozuk_tatiller = $stmt->fetchAll(PDO::FETCH_ASSOC);

    if (count($bozuk_tatiller) > 0) {
        echo "<p class='info'>Bozuk tatil kayıtları bulundu, temizleniyor...</p>";

        // Tüm tatilleri sil ve yeniden ekle
        $conn->exec("TRUNCATE TABLE resmi_tatiller");

        // Tatilleri yeniden ekle
        $tatiller = [
            // 2025 Tatilleri
            ['2025-01-01', 'Yılbaşı'],
            ['2025-03-30', 'Ramazan Bayramı 1. Gün'],
            ['2025-03-31', 'Ramazan Bayramı 2. Gün'],
            ['2025-04-01', 'Ramazan Bayramı 3. Gün'],
            ['2025-04-23', 'Ulusal Egemenlik ve Çocuk Bayramı'],
            ['2025-05-01', 'Emek ve Dayanışma Günü'],
            ['2025-05-19', 'Gençlik ve Spor Bayramı'],
            ['2025-06-06', 'Kurban Bayramı 1. Gün'],
            ['2025-06-07', 'Kurban Bayramı 2. Gün'],
            ['2025-06-08', 'Kurban Bayramı 3. Gün'],
            ['2025-06-09', 'Kurban Bayramı 4. Gün'],
            ['2025-07-15', 'Demokrasi ve Milli Birlik Günü'],
            ['2025-08-30', 'Zafer Bayramı'],
            ['2025-10-29', 'Cumhuriyet Bayramı'],

            // 2026 Tatilleri
            ['2026-01-01', 'Yılbaşı'],
            ['2026-03-20', 'Ramazan Bayramı 1. Gün'],
            ['2026-03-21', 'Ramazan Bayramı 2. Gün'],
            ['2026-03-22', 'Ramazan Bayramı 3. Gün'],
            ['2026-04-23', 'Ulusal Egemenlik ve Çocuk Bayramı'],
            ['2026-05-01', 'Emek ve Dayanışma Günü'],
            ['2026-05-19', 'Gençlik ve Spor Bayramı'],
            ['2026-05-27', 'Kurban Bayramı 1. Gün'],
            ['2026-05-28', 'Kurban Bayramı 2. Gün'],
            ['2026-05-29', 'Kurban Bayramı 3. Gün'],
            ['2026-05-30', 'Kurban Bayramı 4. Gün'],
            ['2026-07-15', 'Demokrasi ve Milli Birlik Günü'],
            ['2026-08-30', 'Zafer Bayramı'],
            ['2026-10-29', 'Cumhuriyet Bayramı']
        ];

        $stmt_insert = $conn->prepare("INSERT IGNORE INTO resmi_tatiller (tarih, aciklama) VALUES (?, ?)");
        foreach ($tatiller as $tatil) {
            $stmt_insert->execute($tatil);
        }

        echo "<p class='success'>✓ Resmi tatiller düzeltildi ve yeniden eklendi.</p>";
    } else {
        echo "<p class='success'>✓ Tatil kayıtlarında sorun yok.</p>";
    }

    // 3. Güzergahlar tablosunu kontrol et
    echo "<h2>3. Güzergahlar Listesi</h2>";
    $stmt = $conn->query("SELECT id, guzergah_adi, varsayilan_ucret FROM guzergahlar ORDER BY id ASC");
    $guzergahlar = $stmt->fetchAll(PDO::FETCH_ASSOC);

    echo "<table border='1' cellpadding='10' style='border-collapse:collapse;width:100%;'>";
    echo "<tr><th>ID</th><th>Güzergah Adı</th><th>Varsayılan Ücret</th></tr>";
    foreach ($guzergahlar as $g) {
        $class = (strpos($g['guzergah_adi'], '�') !== false || strpos($g['guzergah_adi'], '?') !== false) ? 'error' : 'success';
        echo "<tr class='$class'><td>{$g['id']}</td><td>{$g['guzergah_adi']}</td><td>{$g['varsayilan_ucret']} TL</td></tr>";
    }
    echo "</table>";

    // 4. Veritabanı karakter seti kontrolü
    echo "<h2>4. Veritabanı Karakter Seti</h2>";
    $stmt = $conn->query("SHOW VARIABLES LIKE 'character_set_database'");
    $charset = $stmt->fetch(PDO::FETCH_ASSOC);
    echo "<p>Veritabanı Karakter Seti: <strong>{$charset['Value']}</strong></p>";

    if ($charset['Value'] !== 'utf8mb4') {
        $conn->exec("ALTER DATABASE `{$GLOBALS['dbname']}` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
        echo "<p class='success'>✓ Veritabanı karakter seti utf8mb4'e güncellendi.</p>";
    } else {
        echo "<p class='success'>✓ Karakter seti doğru (utf8mb4).</p>";
    }

    echo "<h2 style='color:green;'>✓ TÜM DÜZELTMELER TAMAMLANDI!</h2>";
    echo "<p class='error'><strong>ÖNEMLİ:</strong> Şimdi bu dosyayı (fix_database.php) güvenlik nedeniyle SILIN!</p>";
    echo "<p><a href='dashboard.php' style='background:#4CAF50;color:white;padding:10px 20px;text-decoration:none;border-radius:5px;'>Dashboard'a Git</a></p>";

} catch (Exception $e) {
    echo "<p class='error'>HATA: " . $e->getMessage() . "</p>";
}

echo "</body></html>";
?>
