<?php
session_start();

$host = 'localhost';
$dbname = 'metro_db';
$username = 'root';
$password = 'dRZ-ZCd-XEX-7Wc';

try {
    $pdo = new PDO("mysql:host=$host;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // Создаем базу данных если она не существует
    $pdo->exec("CREATE DATABASE IF NOT EXISTS `$dbname`");
    $pdo->exec("USE `$dbname`");
    
    // Создаем таблицу пользователей
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS users (
            id INT PRIMARY KEY AUTO_INCREMENT,
            username VARCHAR(50) UNIQUE NOT NULL,
            password_hash VARCHAR(255) NOT NULL,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )
    ");
    
    // Создаем таблицы если они не существуют
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS metro_lines (
            id INT PRIMARY KEY AUTO_INCREMENT,
            name VARCHAR(255) NOT NULL,
            color VARCHAR(7) DEFAULT '#4CAF50',
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )
    ");
    
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS stations (
            id INT PRIMARY KEY AUTO_INCREMENT,
            line_id INT NOT NULL,
            name VARCHAR(255) NOT NULL,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            FOREIGN KEY (line_id) REFERENCES metro_lines(id) ON DELETE CASCADE
        )
    ");
    
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS station_categories (
            id INT PRIMARY KEY AUTO_INCREMENT,
            station_id INT NOT NULL,
            category_key VARCHAR(100) NOT NULL,
            category_name VARCHAR(255) NOT NULL,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            FOREIGN KEY (station_id) REFERENCES stations(id) ON DELETE CASCADE,
            UNIQUE KEY unique_station_category (station_id, category_key)
        )
    ");
    
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS images (
            id INT PRIMARY KEY AUTO_INCREMENT,
            station_id INT NOT NULL,
            category VARCHAR(100) NOT NULL,
            path VARCHAR(500) NOT NULL,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            FOREIGN KEY (station_id) REFERENCES stations(id) ON DELETE CASCADE
        )
    ");
    
    // Создаем администратора если его нет
    $check_admin = $pdo->prepare("SELECT COUNT(*) as count FROM users WHERE username = 'admin'");
    $check_admin->execute();
    if ($check_admin->fetch()['count'] == 0) {
        // Пароль: MetroScheme-Admin
        $pdo->prepare("INSERT INTO users (username, password_hash) VALUES (?, ?)")
            ->execute(['admin', password_hash('MetroScheme-Admin', PASSWORD_DEFAULT)]);
    }
    
    // Создаем линию для общей галереи если её нет
    $check_gallery = $pdo->prepare("SELECT COUNT(*) as count FROM metro_lines WHERE id = 999");
    $check_gallery->execute();
    if ($check_gallery->fetch()['count'] == 0) {
        $pdo->prepare("INSERT INTO metro_lines (id, name, color) VALUES (999, 'Общая галерея', '#6c757d')")
            ->execute();
        
        // Создаем станцию для общей галереи
        $pdo->prepare("INSERT INTO stations (line_id, name) VALUES (999, 'Общие материалы')")
            ->execute();
    }
    
} catch(PDOException $e) {
    die("Ошибка подключения: " . $e->getMessage());
}

// Функция проверки авторизации
function checkAuth() {
    return isset($_SESSION['user_id']);
}

// Функция получения имени пользователя
function getUsername() {
    return $_SESSION['username'] ?? 'Гость';
}
?>