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

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

echo "<h2>Исправление проблем с базой данных</h2>";

try {
    // 1. Проверяем есть ли категории
    $stmt = $db->query("SELECT COUNT(*) FROM categories");
    $cat_count = $stmt->fetchColumn();

    if ($cat_count == 0) {
        echo "<p>Добавляем тестовые категории...</p>";
        $db->exec("
            INSERT INTO categories (name, slug, description) VALUES
            ('Диваны', 'divany', 'Мягкая мебель для гостиной'),
            ('Кресла', 'kresla', 'Кресла для гостиной и офиса'),
            ('Кровати', 'krovati', 'Мебель для спальни')
        ");
        echo "<p style='color: green;'>✓ Категории добавлены</p>";
    }

    // 2. Проверяем товары с некорректными category_id
    $stmt = $db->query("
        SELECT COUNT(*) as bad_count
        FROM products
        WHERE category_id IS NULL OR category_id NOT IN (SELECT category_id FROM categories)
    ");
    $bad_count = $stmt->fetchColumn();

    if ($bad_count > 0) {
        echo "<p>Исправляем товары с некорректными категориями ($bad_count шт)...</p>";

        // Устанавливаем первую доступную категорию
        $stmt = $db->query("SELECT category_id FROM categories LIMIT 1");
        $first_cat = $stmt->fetchColumn();

        if ($first_cat) {
            $db->exec("
                UPDATE products
                SET category_id = $first_cat
                WHERE category_id IS NULL OR category_id NOT IN (SELECT category_id FROM categories)
            ");
            echo "<p style='color: green;'>✓ Товары исправлены (установлена категория ID: $first_cat)</p>";
        }
    }

    // 3. Показываем текущее состояние
    echo "<h3>Текущее состояние:</h3>";

    // Категории
    $stmt = $db->query("SELECT category_id, name FROM categories ORDER BY category_id");
    echo "<p><strong>Категории:</strong></p><ul>";
    while ($row = $stmt->fetch()) {
        echo "<li>ID: {$row['category_id']} - {$row['name']}</li>";
    }
    echo "</ul>";

    // Товары
    $stmt = $db->query("
        SELECT p.product_id, p.name, p.category_id, c.name as cat_name
        FROM products p
        LEFT JOIN categories c ON p.category_id = c.category_id
        ORDER BY p.product_id
    ");

    echo "<p><strong>Товары:</strong></p>";
    echo "<table border='1' cellpadding='5'>";
    echo "<tr><th>ID</th><th>Название</th><th>Категория ID</th><th>Категория</th></tr>";

    while ($row = $stmt->fetch()) {
        echo "<tr>";
        echo "<td>{$row['product_id']}</td>";
        echo "<td>" . htmlspecialchars($row['name']) . "</td>";
        echo "<td>" . ($row['category_id'] ?: 'NULL') . "</td>";
        echo "<td>" . ($row['cat_name'] ?: 'Без категории') . "</td>";
        echo "</tr>";
    }

    echo "</table>";

    echo "<p style='color: green; margin-top: 20px;'>✓ База данных исправлена!</p>";

} catch (PDOException $e) {
    echo "<p style='color: red;'>Ошибка: " . $e->getMessage() . "</p>";
}
?>