<?php
require_once 'config/database.php';

$db = Database::getInstance()->getConnection();

// Создаем таблицы, если они не существуют
$tables = [
    'users' => "
        CREATE TABLE IF NOT EXISTS users (
            user_id SERIAL PRIMARY KEY,
            email VARCHAR(255) UNIQUE NOT NULL,
            password_hash VARCHAR(255) NOT NULL,
            full_name VARCHAR(100) NOT NULL,
            phone VARCHAR(20),
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            is_active BOOLEAN DEFAULT TRUE,
            is_admin BOOLEAN DEFAULT FALSE
        )
    ",

    'categories' => "
        CREATE TABLE IF NOT EXISTS categories (
            category_id SERIAL PRIMARY KEY,
            name VARCHAR(100) NOT NULL,
            slug VARCHAR(100) UNIQUE NOT NULL,
            parent_id INTEGER REFERENCES categories(category_id),
            description TEXT,
            sort_order INTEGER DEFAULT 0,
            is_active BOOLEAN DEFAULT TRUE
        )
    ",

    'products' => "
        CREATE TABLE IF NOT EXISTS products (
            product_id SERIAL PRIMARY KEY,
            category_id INTEGER REFERENCES categories(category_id),
            name VARCHAR(200) NOT NULL,
            slug VARCHAR(200) UNIQUE NOT NULL,
            description TEXT,
            price DECIMAL(10, 2) NOT NULL,
            old_price DECIMAL(10, 2),
            sku VARCHAR(50) UNIQUE,
            stock_quantity INTEGER DEFAULT 0,
            is_available BOOLEAN DEFAULT TRUE,
            is_featured BOOLEAN DEFAULT FALSE,
            rating DECIMAL(3, 2) DEFAULT 0,
            review_count INTEGER DEFAULT 0,
            image_url VARCHAR(500),
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )
    "
];

foreach ($tables_to_create as $table_name => $sql) {
    try {
        $db->exec($sql);
        echo "Таблица '$table_name' создана/проверена<br>";
    } catch (PDOException $e) {
        echo "Ошибка создания таблицы '$table_name': " . $e->getMessage() . "<br>";
    }
}

// Добавляем тестовые данные
// Проверяем, есть ли уже категории
$check_categories = $db->query("SELECT COUNT(*) FROM categories")->fetchColumn();

if ($check_categories == 0) {
    // Добавляем категории
    $categories = [
        ['Мягкая мебель', 'myagkaya-mebel', NULL, 'Диваны, кресла, пуфы'],
        ['Диваны', 'divany', 1, 'Прямые и угловые диваны'],
        ['Кресла', 'kresla', 1, 'Кресла для гостиной и офиса'],
        ['Спальня', 'spalnya', NULL, 'Кровати, тумбы, комоды'],
        ['Кровати', 'krovati', 4, 'Односпальные и двуспальные кровати']
    ];

    foreach ($categories as $category) {
        $stmt = $db->prepare("INSERT INTO categories (name, slug, parent_id, description) VALUES (?, ?, ?, ?)");
        $stmt->execute($category);
    }
    echo "Добавлены категории<br>";
}

// Проверяем, есть ли уже товары
$check_products = $db->query("SELECT COUNT(*) FROM products")->fetchColumn();

if ($check_products == 0) {
    // Добавляем товары
    $products = [
        [2, 'Диван VELVET', 'divan-velvet', 'Прямой диван с тканевой обивкой', 45999, 54999, 'DIV-VEL-001', 10],
        [2, 'Диван MODERN', 'divan-modern', 'Угловой диван с кожаной обивкой', 78999, 89999, 'DIV-MOD-002', 5],
        [3, 'Кресло OPPORTUNITY', 'kreslo-opportunity', 'Кресло с деревянными ножками', 16999, 19999, 'KRES-OPP-001', 15],
        [3, 'Кресло GOLDEN', 'kreslo-golden', 'Золотистое кресло для гостиной', 19999, 23999, 'KRES-GOL-002', 8],
        [5, 'Кровать CLASSIC', 'krovat-classic', 'Двуспальная кровать из массива дуба', 64999, 74999, 'KROV-CLA-001', 3]
    ];

    foreach ($products as $product) {
        $stmt = $db->prepare("INSERT INTO products (category_id, name, slug, description, price, old_price, sku, stock_quantity)
                             VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
        $stmt->execute($product);
    }
    echo "Добавлены товары<br>";
}

// Проверяем, есть ли администратор
$check_admin = $db->prepare("SELECT COUNT(*) FROM users WHERE email = ?");
$check_admin->execute(['admin@aeterna.ru']);

if ($check_admin->fetchColumn() == 0) {
    // Добавляем администратора (пароль: admin123)
    $admin_password = password_hash('admin123', PASSWORD_DEFAULT);
    $stmt = $db->prepare("INSERT INTO users (email, password_hash, full_name, phone, is_admin)
                         VALUES (?, ?, ?, ?, ?)");
    $stmt->execute(['admin@aeterna.ru', $admin_password, 'Администратор AETERNA', '+79129991223', true]);
    echo "Добавлен администратор (email: admin@aeterna.ru, пароль: admin123)<br>";
}

echo "<h3>База данных успешно инициализирована!</h3>";
echo "<a href='catalog.php'>Перейти в каталог</a>";
?>