<?php
// Database configuration (Auto-switch between localhost and webapp69 hosting)
if (isset($_SERVER['HTTP_HOST']) && strpos($_SERVER['HTTP_HOST'], 'webapp69.cm.in.th') !== false) {
    // Production / Hosting Environment
    define('DB_HOST', 'localhost');
    define('DB_USER', 'u69319090030');
    define('DB_PASS', '@6930');
    define('DB_NAME', 'u69319090030');
} else {
    // Localhost / XAMPP Environment
    define('DB_HOST', 'localhost');
    define('DB_USER', 'root');
    define('DB_PASS', '');
    define('DB_NAME', 'cyberpunk_shop');
}

// Cyberpunk Settings
define('INVITE_CODE', 'CYBERADMIN2026');
define('JWT_SECRET', 'cyberpunk-super-secret-key-2026-xyz-glow-red');

try {
    $pdo = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=utf8mb4", DB_USER, DB_PASS, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES => false,
    ]);

    // If connecting with dbname works, check if tables exist; if not, import schema
    try {
        $checkTable = $pdo->query("SHOW TABLES LIKE 'products'");
        if (!$checkTable->fetch()) {
            $schemaFile = dirname(__DIR__) . '/schema.sql';
            if (file_exists($schemaFile)) {
                $sql = file_get_contents($schemaFile);
                $pdo->exec($sql);
            }
        }
    } catch (PDOException $ex) {
        // Ignore table check error if any
    }
} catch (PDOException $e) {
    // If the database does not exist, try to connect to server and create it
    try {
        $tempPdo = new PDO("mysql:host=" . DB_HOST . ";charset=utf8mb4", DB_USER, DB_PASS);
        $tempPdo->exec("CREATE DATABASE IF NOT EXISTS `" . DB_NAME . "` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
        
        // Connect to the newly created database
        $pdo = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=utf8mb4", DB_USER, DB_PASS, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        ]);
        
        // Import schema
        $schemaFile = dirname(__DIR__) . '/schema.sql';
        if (file_exists($schemaFile)) {
            $sql = file_get_contents($schemaFile);
            $pdo->exec($sql);
        }
    } catch (PDOException $ex) {
        die("Database connection failed: " . $ex->getMessage());
    }
}

// ระบบอัปเกรดโครงสร้างตารางอัตโนมัติ (Database Auto-Migration / Self-Healing)
try {
    // 1. ตรวจสอบคอลัมน์ category ในตาราง products
    $checkProductCategory = $pdo->query("SHOW COLUMNS FROM products LIKE 'category'");
    if (!$checkProductCategory->fetch()) {
        $pdo->exec("ALTER TABLE products ADD COLUMN category VARCHAR(30) DEFAULT 'general'");
    }

    // 2. ตรวจสอบคอลัมน์ size ในตาราง order_items
    $checkOrderItemSize = $pdo->query("SHOW COLUMNS FROM order_items LIKE 'size'");
    if (!$checkOrderItemSize->fetch()) {
        $pdo->exec("ALTER TABLE order_items ADD COLUMN size VARCHAR(10) DEFAULT NULL");
    }

    // 3. ตรวจสอบคอลัมน์ color ในตาราง order_items
    $checkOrderItemColor = $pdo->query("SHOW COLUMNS FROM order_items LIKE 'color'");
    if (!$checkOrderItemColor->fetch()) {
        $pdo->exec("ALTER TABLE order_items ADD COLUMN color VARCHAR(20) DEFAULT NULL");
    }
} catch (PDOException $ex) {
    // ข้ามกรณีที่ตารางยังไม่ถูกสร้างในขั้นตอนแรก
}

// รวมระบบยกเลิกออเดอร์หมดอายุอัตโนมัติ (30 นาที)
require_once __DIR__ . '/auto_cancel.php';

