<?php
session_start();
require_once 'config/database.php';

$errors = [];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $email = $_POST['email'] ?? '';
    $password = $_POST['password'] ?? '';
    $full_name = $_POST['full_name'] ?? '';
    $phone = $_POST['phone'] ?? '';

    // Валидация
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errors[] = 'Неверный формат email';
    }

    if (strlen($password) < 6) {
        $errors[] = 'Пароль должен содержать минимум 6 символов';
    }

    if (empty($full_name)) {
        $errors[] = 'Введите ФИО';
    }

    if (empty($errors)) {
        $db = Database::getInstance()->getConnection();

        try {
            // Проверяем существование email
            $check_stmt = $db->prepare("SELECT user_id FROM users WHERE email = ?");
            $check_stmt->execute([$email]);

            if ($check_stmt->fetch()) {
                $errors[] = 'Пользователь с таким email уже существует';
            } else {
                // Хэшируем пароль
                $password_hash = password_hash($password, PASSWORD_DEFAULT);

                // Создаем пользователя
                $stmt = $db->prepare("
                    INSERT INTO users (email, password_hash, full_name, phone, is_active)
                    VALUES (?, ?, ?, ?, TRUE)
                    RETURNING user_id
                ");

                $stmt->execute([$email, $password_hash, $full_name, $phone]);
                $user_id = $stmt->fetchColumn();

                if ($user_id) {
                    // Автоматически входим
                    $_SESSION['user_id'] = $user_id;
                    $_SESSION['user_email'] = $email;
                    $_SESSION['full_name'] = $full_name;
                    $_SESSION['isLoggedIn'] = true;
                    $_SESSION['isAdmin'] = false; // Обычный пользователь

                    // Успешная регистрация
                    $_SESSION['registration_success'] = true;
                    header('Location: catalog.php');
                    exit();
                } else {
                    $errors[] = 'Ошибка при создании пользователя';
                }
            }
        } catch (PDOException $e) {
            error_log("Ошибка регистрации: " . $e->getMessage());
            $errors[] = 'Ошибка базы данных. Попробуйте позже.';
        }
    }

    // Если есть ошибки, сохраняем их
    if (!empty($errors)) {
        $_SESSION['registration_errors'] = $errors;
        $_SESSION['old_input'] = [
            'email' => $email,
            'full_name' => $full_name,
            'phone' => $phone
        ];
        header('Location: профиль.php');
        exit();
    }
} else {
    header('Location: профиль.php');
    exit();
}
?>