<?php
// Tắt hoàn toàn error reporting và output
error_reporting(0);
ini_set('display_errors', 0);
ini_set('log_errors', 1);

// Xóa mọi output buffer
while (ob_get_level()) ob_end_clean();
ob_start();

// Hàm trả về JSON an toàn
function send_json_response($data) {
    while (ob_get_level()) ob_end_clean();
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode($data, JSON_UNESCAPED_UNICODE);
    exit();
}

try {
    require_once('ketnoi.php');
    
    // KIỂM TRA VÀ TẠO BẢNG TỰ ĐỘNG
    $table_check = $ketnoi->query("SHOW TABLES LIKE 'history_subdomain'");
    if($table_check->num_rows == 0) {
        // Tạo bảng mới
        $sql_create = "CREATE TABLE `history_subdomain` (
            `id` int(11) NOT NULL AUTO_INCREMENT,
            `username` varchar(100) NOT NULL,
            `user_id` int(11) NOT NULL,
            `subdomain` varchar(200) NOT NULL,
            `purpose` varchar(50) DEFAULT 'website',
            `note` text DEFAULT NULL,
            `status` enum('pending','active','rejected') DEFAULT 'pending',
            `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
            `approved_at` datetime DEFAULT NULL,
            `rejected_at` datetime DEFAULT NULL,
            PRIMARY KEY (`id`),
            UNIQUE KEY `subdomain` (`subdomain`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";
        $ketnoi->query($sql_create);
    } else {
        // Kiểm tra và thêm cột nếu thiếu
        $columns = $ketnoi->query("SHOW COLUMNS FROM `history_subdomain`");
        $col_names = [];
        while($col = $columns->fetch_assoc()) {
            $col_names[] = $col['Field'];
        }
        
        // Thêm cột subdomain nếu thiếu
        if(!in_array('subdomain', $col_names)) {
            $ketnoi->query("ALTER TABLE `history_subdomain` ADD `subdomain` varchar(200) NOT NULL");
        }
        // Thêm cột purpose nếu thiếu
        if(!in_array('purpose', $col_names)) {
            $ketnoi->query("ALTER TABLE `history_subdomain` ADD `purpose` varchar(50) DEFAULT 'website'");
        }
        // Thêm cột note nếu thiếu
        if(!in_array('note', $col_names)) {
            $ketnoi->query("ALTER TABLE `history_subdomain` ADD `note` text DEFAULT NULL");
        }
        // Thêm cột status nếu thiếu
        if(!in_array('status', $col_names)) {
            $ketnoi->query("ALTER TABLE `history_subdomain` ADD `status` enum('pending','active','rejected') DEFAULT 'pending'");
        }
        // Thêm cột created_at nếu thiếu
        if(!in_array('created_at', $col_names)) {
            $ketnoi->query("ALTER TABLE `history_subdomain` ADD `created_at` datetime DEFAULT CURRENT_TIMESTAMP");
        }
        // Thêm cột approved_at nếu thiếu
        if(!in_array('approved_at', $col_names)) {
            $ketnoi->query("ALTER TABLE `history_subdomain` ADD `approved_at` datetime DEFAULT NULL");
        }
        // Thêm cột rejected_at nếu thiếu
        if(!in_array('rejected_at', $col_names)) {
            $ketnoi->query("ALTER TABLE `history_subdomain` ADD `rejected_at` datetime DEFAULT NULL");
        }
        // Thêm cột username nếu thiếu
        if(!in_array('username', $col_names)) {
            $ketnoi->query("ALTER TABLE `history_subdomain` ADD `username` varchar(100) NOT NULL");
        }
        // Thêm cột user_id nếu thiếu
        if(!in_array('user_id', $col_names)) {
            $ketnoi->query("ALTER TABLE `history_subdomain` ADD `user_id` int(11) NOT NULL");
        }
    }
    
    // Kiểm tra session
    if(!isset($_SESSION['session'])) {
        send_json_response(['status' => 'error', 'message' => 'Vui lòng đăng nhập.']);
    }
    
    $session = $_SESSION['session'];
    $check_user = $ketnoi->query("SELECT * FROM `users` WHERE `session` = '$session' ")->fetch_array();
    if(empty($check_user['id'])) {
        send_json_response(['status' => 'error', 'message' => 'Không tìm thấy người dùng.']);
    }
    $user = $check_user;
    
    // Lấy dữ liệu từ POST
    $name = isset($_POST['name']) ? trim(strtolower($_POST['name'])) : '';
    $purpose = isset($_POST['purpose']) ? trim($_POST['purpose']) : 'website';
    $note = isset($_POST['note']) ? trim($_POST['note']) : '';
    
    // Validate
    if(empty($name)){
        send_json_response(['status' => 'error', 'message' => 'Vui lòng nhập tên subdomain.']);
    }
    
    if(!preg_match('/^[a-z0-9\-]+$/', $name)){
        send_json_response(['status' => 'error', 'message' => 'Tên subdomain chỉ được chứa chữ thường, số và dấu gạch ngang.']);
    }
    
    $full_sub = $name . '.khanhcoder.site';
    
    // Kiểm tra trùng lặp
    $check = $ketnoi->query("SELECT id FROM `history_subdomain` WHERE `subdomain` = '$full_sub'");
    if($check && $check->num_rows > 0){
        send_json_response(['status' => 'error', 'message' => 'Subdomain này đã được đăng ký. Vui lòng chọn tên khác.']);
    }
    
    // Lưu vào database
    $username = $user['username'];
    $user_id = $user['id'];
    $created_at = date('Y-m-d H:i:s');
    
    $sql = "INSERT INTO `history_subdomain` 
            (`username`, `user_id`, `subdomain`, `purpose`, `note`, `created_at`, `status`) 
            VALUES 
            ('$username', '$user_id', '$full_sub', '$purpose', '$note', '$created_at', 'pending')";
    
    if($ketnoi->query($sql)){
        send_json_response([
            'status' => 'success',
            'subdomain' => $full_sub,
            'message' => 'Gửi yêu cầu thành công. Vui lòng chờ duyệt.'
        ]);
    } else {
        send_json_response([
            'status' => 'error', 
            'message' => 'Lỗi khi lưu dữ liệu: ' . $ketnoi->error
        ]);
    }
} catch (Exception $e) {
    send_json_response([
        'status' => 'error',
        'message' => 'Lỗi hệ thống: ' . $e->getMessage()
    ]);
}
?>