<?php
// Thông tin kết nối cơ sở dữ liệu
$host = 'localhost';
$dbname = 'db_congdongnghethuat';
$username = 'root'; // Mặc định của XAMPP
$password = '';     // Mặc định của XAMPP là để trống

try {
    // Thiết lập kết nối PDO
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password);
    
    // Cài đặt chế độ báo lỗi nghiêm ngặt để dễ xử lý khi lập trình
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // Cài đặt chế độ trả về mảng kết hợp làm mặc định
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

    // Tạo thêm kết nối MySQLi để tương thích với các legacy page đang dùng mysqli
    $conn = new mysqli($host, $username, $password, $dbname);
    if ($conn->connect_error) {
        die("Lỗi kết nối MySQLi: " . $conn->connect_error);
    }
    $conn->set_charset('utf8mb4');

    // --- Auto-update: đánh dấu các sự kiện đã qua ngày là 'hoan_thanh' ---
    try {
        $sql_due = "SELECT id FROM su_kien WHERE trang_thai != 'hoan_thanh' AND (
            (ngay_ket_thuc IS NOT NULL AND ngay_ket_thuc < NOW())
            OR (ngay_ket_thuc IS NULL AND ngay_dien_ra IS NOT NULL AND ngay_dien_ra < NOW())
        )";
        $stmt_due = $pdo->query($sql_due);
        $due_ids = $stmt_due->fetchAll(PDO::FETCH_COLUMN);
        if (!empty($due_ids)) {
            // Bắt transaction để đồng bộ update và ghi lịch sử
            $pdo->beginTransaction();
            // Cập nhật trạng thái
            $in = rtrim(str_repeat('?,', count($due_ids)), ',');
            $sql_up = "UPDATE su_kien SET trang_thai = 'hoan_thanh' WHERE id IN ($in)";
            $stmt_up = $pdo->prepare($sql_up);
            $stmt_up->execute($due_ids);

            // Ghi lịch cho từng sự kiện
            $stmt_hist = $pdo->prepare('INSERT INTO lich_su_ung_tuyen (su_kien_id, hanh_dong, noi_dung, nguoi_thuc_hien) VALUES (?, ?, ?, NULL)');
            foreach ($due_ids as $did) {
                $stmt_hist->execute([(int)$did, 'auto_finish', 'Tự động đánh dấu hoàn thành do sự kiện đã qua ngày diễn ra']);
            }
            $pdo->commit();
        }
    } catch (Throwable $e) {
        if ($pdo->inTransaction()) $pdo->rollBack();
        // Không dừng ứng dụng nếu auto-update lỗi; chỉ ghi log nếu cần
        error_log('Auto-update su_kien failed: ' . $e->getMessage());
    }

} catch (PDOException $e) {
    // Nếu lỗi, dừng hệ thống và báo lỗi bằng tiếng Việt
    die("Lỗi kết nối cơ sở dữ liệu: " . $e->getMessage());
}
?>