<?php
$config = parse_ini_file("config.ini");
try {
    /**
     * Veritabanı işlemleri
     */
    $db = new PDO("mysql:host=localhost;dbname={$config['dbname']}", $config['dbusername'], $config['dbpassword']);
    $db->exec("set names utf8");

    /**
     * Site kontrol işlemleri
     */
    $domain = preg_replace("/www/", "", $_SERVER["HTTP_HOST"]);
    $siteGet = $db->prepare("SELECT * FROM siteler WHERE site_durum=:site_durum AND site_url=:site_url");
    $siteGet->execute(["site_url" => $domain, "site_durum" => 1]);
    $site = $siteGet->fetch();
    if (!$site) {
        $error = "Site tanımlaması bulunamadı.";
        echo $error,
        //require "error.php";
        exit();
    }

    /**
     * Ürün kontrol işlemleri
     */
    $urunGet = $db->prepare("SELECT * FROM urunler WHERE urun_id=:urun_id AND urun_durum=:urun_durum");
    $urunGet->execute(["urun_id" => $site["site_urun"], "urun_durum" => 1]);
    $urun = $urunGet->fetch();
    if (!$urun) {
        $error = "Ürün tanımlaması bulunamadı.";
        require "error.php";
        exit();
    }
    $paketler = json_decode($urun['urun_paketler']);
    $varyasyonlar = json_decode($urun["urun_varyasyonlar"]);
    if (!$paketler) {
        $error = "Ürün paket tanımlaması bulunamadı.";
        require "error.php";
        exit();
    }

    /**
     * Şehir, ilçe, ödeme yöntemleri
     */
    $sehirlerData = array();
    $sehirGet = $db->prepare("SELECT * FROM adres_sehirler WHERE sehir_durum=:sehir_durum AND sehir_ulke_id=:sehir_ulke_id ORDER BY sehir_adi ASC");
    $sehirGet->execute(["sehir_durum" => 1, "sehir_ulke_id" => 1]);
    $sehirler = $sehirGet->fetchAll();
    foreach ($sehirler as $key => $sehir) {
        $sehirIlceler = array();
        $ilcelerGet = $db->prepare("SELECT * FROM adres_ilceler WHERE sehir_id=:sehir_id AND ilce_durum=:ilce_durum ORDER BY ilce_adi ASC");
        $ilcelerGet->execute(["sehir_id" => $sehir["sehir_id"], "ilce_durum" => 1]);
        $ilceler = $ilcelerGet->fetchAll();
        $ilcelerData = array();
        $sehirlerData[$key]["sehir_id"] = $sehir["sehir_id"];
        $sehirlerData[$key]["sehir_adi"] = $sehir["sehir_adi"];
        foreach ($ilceler as $ilce) {
            $ilcelerData[] = array(
                "ilce_id" => $ilce["ilce_id"],
                "ilce_adi" => $ilce["ilce_adi"],
            );
        }
        $sehirlerData[$key]["ilceler"] = json_encode($ilcelerData, JSON_UNESCAPED_UNICODE);
    }

    /**
     * Ödeme yöntemleri
     */

    $odemeYontemleriGet = $db->prepare("SELECT * FROM odeme_yontemleri WHERE od_durum=:od_durum ORDER BY od_siralama ASC");
    $odemeYontemleriGet->execute(["od_durum" => 1]);
    $odemeYontemleri = $odemeYontemleriGet->fetchAll();

    /**
     * Teslim sipariş durumları
     */
    $teslimDurumGet = $db->prepare("SELECT * FROM ayarlar WHERE a_name=:a_name");
    $teslimDurumGet->execute(["a_name" => "teslim_siparis_durumlari"]);
    $teslimDurum = $teslimDurumGet->fetch();
    $teslimDurumlar = implode(",", json_decode($teslimDurum["a_first_value"]));

    /*
     * Tanımlamalar
     */
    $ip = $_SERVER["REMOTE_ADDR"];
    $cihaz = $_SERVER["HTTP_USER_AGENT"];
    
} catch (\PDOException $e) {
    switch ($e->getCode()) {
        case 1045:
            $error = "Veritabanı bilgilerini kontrol edin.";
            echo $e;
            //require "error.php";
            exit();
            break;
        default:
            $error = "Veritabanı bağlantı hatası.";
            echo $e;
            //require "error.php";
            exit();
            break;
    }
}