<?php
/**
 * Быстрый скрипт для назначения прав администратора пользователю admin@mail.ru
 * Запуск: php migrations/grant_admin.php
 */

require_once __DIR__ . '/../config/database.php';

echo "===========================================\n";
echo "  Назначение прав администратора\n";
echo "===========================================\n\n";

try {
    $db = Database::getInstance()->getConnection();
    echo "[OK] Подключение к базе данных успешно\n\n";

    $email = 'admin@mail.ru';

    // Проверяем, существует ли пользователь
    $checkStmt = $db->prepare("SELECT user_id, email, full_name, is_admin, is_active FROM users WHERE email = ?");
    $checkStmt->execute([$email]);
    $user = $checkStmt->fetch(PDO::FETCH_ASSOC);

    if ($user) {
        echo "[INFO] Найден пользователь:\n";
        echo "       Email: {$user['email']}\n";
        echo "       ФИО: {$user['full_name']}\n";
        echo "       Админ: " . ($user['is_admin'] ? 'ДА' : 'НЕТ') . "\n";
        echo "       Активен: " . ($user['is_active'] ? 'ДА' : 'НЕТ') . "\n\n";

        if ($user['is_admin']) {
            echo "[INFO] Пользователь уже имеет права администратора\n";
        } else {
            // Обновляем права
            $updateStmt = $db->prepare("
                UPDATE users 
                SET is_admin = TRUE,
                    is_active = TRUE,
                    updated_at = CURRENT_TIMESTAMP
                WHERE email = ?
            ");
            $updateStmt->execute([$email]);

            echo "[SUCCESS] Права администратора успешно назначены!\n";
        }
    } else {
        echo "[WARN] Пользователь с email $email не найден\n";
        echo "[INFO] Создаю нового пользователя с правами администратора...\n";

        // Создаем пользователя с правами админа
        // Пароль по умолчанию: admin123
        $password_hash = password_hash('admin123', PASSWORD_DEFAULT);

        $insertStmt = $db->prepare("
            INSERT INTO users (email, password_hash, full_name, phone, city, is_admin, is_active)
            VALUES (?, ?, ?, ?, ?, CAST(? AS boolean), TRUE)
            RETURNING user_id
        ");

        $insertStmt->execute([
            $email,
            $password_hash,
            'Администратор',
            '+79129991223',
            'Москва',
            'true'
        ]);

        $user_id = $insertStmt->fetchColumn();
        echo "[SUCCESS] Пользователь создан с ID: $user_id\n";
        echo "[INFO] Email: $email\n";
        echo "[INFO] Пароль по умолчанию: admin123\n";
        echo "[WARN] Рекомендуется сменить пароль после первого входа!\n";
    }

    // Проверяем результат
    $verifyStmt = $db->prepare("SELECT user_id, email, full_name, is_admin, is_active FROM users WHERE email = ?");
    $verifyStmt->execute([$email]);
    $finalUser = $verifyStmt->fetch(PDO::FETCH_ASSOC);

    echo "\n===========================================\n";
    echo "  Итоговый статус:\n";
    echo "===========================================\n";
    echo "  Email: {$finalUser['email']}\n";
    echo "  ФИО: {$finalUser['full_name']}\n";
    echo "  Админ: " . ($finalUser['is_admin'] ? 'ДА ✓' : 'НЕТ ✗') . "\n";
    echo "  Активен: " . ($finalUser['is_active'] ? 'ДА ✓' : 'НЕТ ✗') . "\n";
    echo "===========================================\n";

} catch (PDOException $e) {
    echo "[ERROR] Ошибка: " . $e->getMessage() . "\n";
    exit(1);
}

