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

if (empty($_SESSION['teacher_setup_csrf'])) {
    $_SESSION['teacher_setup_csrf'] = bin2hex(random_bytes(32));
}

$error = '';
$success = false;
$hasAccount = false;

try {
    $pdo = getDbConnection();
    $pdo->exec("CREATE TABLE IF NOT EXISTS users (
        id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
        role ENUM('admin','teacher','student') NOT NULL,
        username VARCHAR(50) NOT NULL,
        email VARCHAR(190) NULL,
        password_hash VARCHAR(255) NOT NULL,
        full_name VARCHAR(150) NOT NULL,
        status ENUM('active','locked') NOT NULL DEFAULT 'active',
        last_login_at DATETIME NULL,
        created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
        updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        PRIMARY KEY (id), UNIQUE KEY uq_users_username (username), UNIQUE KEY uq_users_email (email),
        KEY idx_users_role_status (role, status)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci");

    $hasAccount = (bool) $pdo->query("SELECT 1 FROM users WHERE role IN ('teacher','admin') LIMIT 1")->fetchColumn();

    if ($_SERVER['REQUEST_METHOD'] === 'POST' && !$hasAccount) {
        if (!hash_equals($_SESSION['teacher_setup_csrf'], $_POST['csrf_token'] ?? '')) {
            $error = 'Phiên thiết lập không hợp lệ.';
        } else {
            $fullName = trim($_POST['full_name'] ?? '');
            $username = strtolower(trim($_POST['username'] ?? ''));
            $email = trim($_POST['email'] ?? '');
            $password = $_POST['password'] ?? '';
            $confirm = $_POST['password_confirm'] ?? '';

            if ($fullName === '') {
                $error = 'Vui lòng nhập họ và tên.';
            } elseif (!preg_match('/^[a-z0-9._]{4,30}$/', $username)) {
                $error = 'Tên đăng nhập cần 4–30 ký tự: chữ thường, số, dấu chấm hoặc gạch dưới.';
            } elseif ($email !== '' && !filter_var($email, FILTER_VALIDATE_EMAIL)) {
                $error = 'Email không hợp lệ.';
            } elseif (strlen($password) < 8) {
                $error = 'Mật khẩu phải có ít nhất 8 ký tự.';
            } elseif ($password !== $confirm) {
                $error = 'Xác nhận mật khẩu không khớp.';
            } else {
                $stmt = $pdo->prepare("INSERT INTO users (role, username, email, password_hash, full_name, status) VALUES ('teacher', :username, :email, :password_hash, :full_name, 'active')");
                $stmt->execute([
                    'username' => $username,
                    'email' => $email !== '' ? $email : null,
                    'password_hash' => password_hash($password, PASSWORD_DEFAULT),
                    'full_name' => $fullName,
                ]);
                $success = true;
                $hasAccount = true;
            }
        }
    }
} catch (Throwable $e) {
    error_log('Teacher setup error: ' . $e->getMessage());
    $error = 'Không thể thiết lập tài khoản: ' . $e->getMessage();
}
?>
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Thiết lập giáo viên | EnglishSpeak</title>
<link rel="stylesheet" href="../assets/css/login.css">
</head>
<body>
<main class="auth-shell"><section class="auth-card">
<a class="brand" href="../login.php"><span class="brand-mark">ES</span><span><strong>English<span>Speak</span></strong><small>Thiết lập lần đầu</small></span></a>
<div class="auth-heading"><p class="eyebrow">Bước khởi tạo</p><h1>Tài khoản giáo viên đầu tiên</h1><p>Trang này tự khóa sau khi đã tạo tài khoản đầu tiên.</p></div>
<?php if ($success): ?><div class="alert success">Tạo tài khoản thành công. <a href="../login.php">Đăng nhập ngay</a>.</div><?php elseif ($hasAccount): ?><div class="alert success">Hệ thống đã có tài khoản giáo viên. <a href="../login.php">Quay lại đăng nhập</a>.</div><?php else: ?>
<?php if ($error !== ''): ?><div class="alert" role="alert"><?= htmlspecialchars($error, ENT_QUOTES, 'UTF-8') ?></div><?php endif; ?>
<form method="post">
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['teacher_setup_csrf'], ENT_QUOTES, 'UTF-8') ?>">
<label for="full_name">Họ và tên</label><input id="full_name" name="full_name" required>
<label for="username">Tên đăng nhập</label><input id="username" name="username" placeholder="giaovien01" required>
<label for="email">Email (không bắt buộc)</label><input id="email" name="email" type="email">
<label for="password">Mật khẩu</label><input id="password" name="password" type="password" required>
<label for="password_confirm">Nhập lại mật khẩu</label><input id="password_confirm" name="password_confirm" type="password" required>
<button class="submit-button" type="submit">Tạo tài khoản</button>
</form>
<?php endif; ?>
</section></main>
</body></html>
