<?php
// Veritabanı bağlantı bilgileri
$servername = "localhost";
$username = "bosopyo_mustafa";
$password = "+ajZhAarF=jx";
$dbname = "bosopyo_yol_masraf";

// PDO ile veritabanı bağlantısını oluşturma
try {
    $conn = new PDO("mysql:host=$servername;charset=utf8mb4", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $conn->exec("SET NAMES utf8mb4");
    $conn->exec("SET CHARACTER SET utf8mb4");

    // Veritabanını oluşturma (eğer mevcut değilse)
    $conn->exec("CREATE DATABASE IF NOT EXISTS `$dbname` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;");
    $conn->exec("USE `$dbname`;");

    // Gerekli tabloları oluşturma
    
    // 1. guzergahlar tablosu
    $sqlGuzergahlar = "
    CREATE TABLE IF NOT EXISTS `guzergahlar` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `guzergah_adi` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
      `varsayilan_ucret` decimal(10,2) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;";
    $conn->exec($sqlGuzergahlar);

    // 2. seyahatler tablosu (UNIQUE KEY ile)
    $sqlSeyahatler = "
    CREATE TABLE IF NOT EXISTS `seyahatler` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `tarih` date NOT NULL,
      `guzergah_id` int(11) NOT NULL,
      `ucret` decimal(10,2) NOT NULL,
      `aciklama` text COLLATE utf8mb4_unicode_ci,
      `olusturma_tarihi` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
      UNIQUE KEY `tarih_guzergah_unique` (`tarih`,`guzergah_id`),
      KEY `guzergah_id` (`guzergah_id`),
      CONSTRAINT `seyahatler_ibfk_1` FOREIGN KEY (`guzergah_id`) REFERENCES `guzergahlar` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;";
    $conn->exec($sqlSeyahatler);

    // 3. aylik_raporlar tablosu
    $sqlAylikRaporlar = "
    CREATE TABLE IF NOT EXISTS `aylik_raporlar` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `yil_ay` varchar(7) COLLATE utf8mb4_unicode_ci NOT NULL,
      `toplam_tutar` decimal(10,2) NOT NULL,
      `odendi_mi` tinyint(1) NOT NULL DEFAULT '0',
      `odeme_tarihi` datetime DEFAULT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `yil_ay` (`yil_ay`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;";
    $conn->exec($sqlAylikRaporlar);

    // 4. resmi_tatiller tablosu
    $sqlResmiTatiller = "
    CREATE TABLE IF NOT EXISTS `resmi_tatiller` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `tarih` date NOT NULL,
      `aciklama` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `tarih` (`tarih`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;";
    $conn->exec($sqlResmiTatiller);

    // Özel "İşe Gidilmedi" güzergahını kontrol et ve yoksa ekle
    $stmt_check_special_route = $conn->prepare("SELECT id FROM guzergahlar WHERE guzergah_adi = 'İşe Gidilmedi'");
    $stmt_check_special_route->execute();
    if ($stmt_check_special_route->rowCount() == 0) {
        $conn->exec("INSERT INTO guzergahlar (guzergah_adi, varsayilan_ucret) VALUES ('İşe Gidilmedi', 0.00)");
    }

    // Resmi tatilleri ekle (2025-2026)
    $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-28', 'Cumhuriyet Bayramı Arefe'],
        ['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-28', 'Cumhuriyet Bayramı Arefe'],
        ['2026-10-29', 'Cumhuriyet Bayramı']
    ];

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

} catch(PDOException $e) {
    // "Access denied" hatasını görmezden gel, diğer hataları göster
    if ($e->getCode() == 1045) {
        // Bu hatayı sessizce geçebiliriz, çünkü veritabanı zaten var olabilir
        // ve bir sonraki adımda `USE` komutuyla seçmeye çalışacağız.
        // Eğer veritabanı yoksa, `USE` komutu hata verecektir.
        try {
            $conn->exec("USE `$dbname`;");
        } catch (PDOException $inner_e) {
             die("Bağlantı veya kurulum hatası: Veritabanı oluşturulamadı veya seçilemedi. Lütfen veritabanı kullanıcı bilgilerinizi kontrol edin. Hata: " . $inner_e->getMessage());
        }
    } else {
         die("Bağlantı veya kurulum hatası: " . $e->getMessage());
    }
}
?>
