<?php
/**
 * EnglishSpeak — Student Login Page
 */

session_start();

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

// Nếu đã đăng nhập thì chuyển về trang học sinh
if (!empty($_SESSION['student_id'])) {
    header('Location: student-home.php');
    exit;
}

// Tạo CSRF token
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

$error = '';
$identifier = '';

// Xử lý đăng nhập
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $identifier = trim($_POST['identifier'] ?? '');
    $password = $_POST['password'] ?? '';
    $csrfToken = $_POST['csrf_token'] ?? '';

    if (
        $csrfToken === '' ||
        !hash_equals($_SESSION['csrf_token'], $csrfToken)
    ) {
        $error = 'Phiên đăng nhập không hợp lệ. Vui lòng tải lại trang.';
    } elseif ($identifier === '' || $password === '') {
        $error = 'Vui lòng nhập đầy đủ thông tin đăng nhập.';
    } else {
        try {
            $pdo = getDbConnection();

            $stmt = $pdo->prepare(
                "SELECT
                    id,
                    full_name,
                    phone,
                    email,
                    password_hash,
                    status,
                    current_level_id,
                    current_book_level_id,
                    lifetime_xp
                 FROM students
                 WHERE phone = :phone_identifier
                    OR email = :email_identifier
                 LIMIT 1"
            );

            $stmt->execute([
                'phone_identifier' => $identifier,
                'email_identifier' => $identifier,
            ]);

            $student = $stmt->fetch();

            if (!$student) {
                $error = 'Số điện thoại hoặc Gmail không tồn tại.';
            } elseif (!password_verify($password, $student['password_hash'])) {
                $error = 'Mật khẩu không đúng.';
            } elseif ($student['status'] !== 'active') {
                $error = 'Tài khoản hiện không hoạt động. Vui lòng liên hệ quản trị viên.';
            } else {
                session_regenerate_id(true);

                $_SESSION['student_id'] = (int) $student['id'];
                $_SESSION['student_name'] = $student['full_name'];
                $_SESSION['student_phone'] = $student['phone'];
                $_SESSION['student_email'] = $student['email'];
                $_SESSION['student_level_id'] = $student['current_level_id'];
                $_SESSION['student_book_level_id'] = $student['current_book_level_id'];
                $_SESSION['student_lifetime_xp'] = (int) $student['lifetime_xp'];

                $updateStmt = $pdo->prepare(
                    "UPDATE students
                     SET last_login_at = NOW()
                     WHERE id = :student_id"
                );

                $updateStmt->execute([
                    'student_id' => $student['id'],
                ]);

                $_SESSION['csrf_token'] = bin2hex(random_bytes(32));

                header('Location: student-home.php');
                exit;
            }
        } catch (Throwable $e) {
            error_log('Student login error: ' . $e->getMessage());
            $error = 'Lỗi hệ thống: ' . $e->getMessage();
        }
    }
}

$registered = isset($_GET['registered']) && $_GET['registered'] === '1';
?>
<!DOCTYPE html>
<html lang="vi">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>Đăng nhập — EnglishSpeak</title>

  <link rel="stylesheet" href="/EnglishSpeak/assets/css/student-auth.css">
  <style>
    .auth-header {
      transform: translateY(-28px);
      margin-bottom: -18px;
    }
    .auth-logo-image {
      display: block;
      width: 165px;
      height: 165px;
      object-fit: contain;
      margin: 0 auto 2px;
    }
    .auth-subtitle {
      font-size: 13px;
      font-weight: 500;
    }
    @media (max-width: 600px) {
      .auth-header { transform: translateY(-22px); margin-bottom: -12px; }
      .auth-logo-image { width: 145px; height: 145px; }
      .auth-subtitle { font-size: 13px; }
    }
  </style>
</head>

<body>

  <div class="auth-container">

    <div class="auth-header">
      <div class="auth-logo">
        <img src="/EnglishSpeak/assets/images/englishspeak-logo.png" alt="EnglishSpeak" class="auth-logo-image">
      </div>

      <p class="auth-subtitle">
        Learn, play and grow together!
      </p>
    </div>

    <div class="auth-body">
      <div class="auth-form">

        <?php if ($registered): ?>
          <div class="alert alert-success">
            Đăng ký thành công. Vui lòng đăng nhập.
          </div>
        <?php endif; ?>

        <?php if ($error !== ''): ?>
          <div class="alert alert-error">
            <?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?>
          </div>
        <?php endif; ?>

        <form method="post" novalidate>

          <input
            type="hidden"
            name="csrf_token"
            value="<?php echo htmlspecialchars(
                $_SESSION['csrf_token'],
                ENT_QUOTES,
                'UTF-8'
            ); ?>"
          >

          <div class="form-group">
            <label for="identifier">
              Số điện thoại hoặc Gmail
            </label>

            <input
              type="text"
              id="identifier"
              name="identifier"
              placeholder="Nhập số điện thoại hoặc Gmail"
              autocomplete="username"
              value="<?php echo htmlspecialchars(
                  $identifier,
                  ENT_QUOTES,
                  'UTF-8'
              ); ?>"
              required
            >
          </div>

          <div class="form-group">
            <label for="password">
              Mật khẩu
            </label>

            <div class="password-wrapper">

              <input
                type="password"
                id="password"
                name="password"
                placeholder="Nhập mật khẩu"
                autocomplete="current-password"
                required
              >

              <button
                type="button"
                class="toggle-password"
                id="toggle-password"
                aria-label="Hiện mật khẩu"
              >
                <svg
                  class="eye-icon"
                  viewBox="0 0 24 24"
                  width="20"
                  height="20"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="2"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                >
                  <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/>
                  <circle cx="12" cy="12" r="3"/>
                </svg>
              </button>

            </div>
          </div>

          <a
            href="student-forgot-password.php"
            class="forgot-link"
          >
            Quên mật khẩu?
          </a>

          <button
            type="submit"
            class="btn btn-primary"
          >
            Đăng nhập
          </button>

          <div class="form-divider">
            hoặc
          </div>

          <a
            href="student-register.php"
            class="btn btn-secondary"
          >
            Đăng ký
          </a>

        </form>
      </div>
    </div>

    <div class="auth-illustration">
      <div class="illustration-scene">

        <div class="scene-cloud cloud-1"></div>
        <div class="scene-cloud cloud-2"></div>
        <div class="scene-cloud cloud-3"></div>

        <div class="scene-mountain mountain-1"></div>
        <div class="scene-mountain mountain-2"></div>

        <div class="scene-ground"></div>

        <div class="scene-tree tree-1"></div>
        <div class="scene-tree tree-2"></div>
        <div class="scene-tree tree-3"></div>

        <div class="mascot-bird">
          <div class="bird-body">
            <div class="bird-eye left"></div>
            <div class="bird-eye right"></div>
            <div class="bird-beak"></div>
            <div class="bird-wing left"></div>
            <div class="bird-wing right"></div>
          </div>
        </div>

      </div>
    </div>

  </div>

  <script src="/EnglishSpeak/assets/js/login.js"></script>
  <script>
    (() => {
      const passwordInput = document.getElementById('password');
      const toggleButton = document.getElementById('toggle-password');

      if (!passwordInput || !toggleButton) return;

      toggleButton.addEventListener('click', () => {
        const isHidden = passwordInput.type === 'password';
        passwordInput.type = isHidden ? 'text' : 'password';
        toggleButton.setAttribute('aria-label', isHidden ? 'Ẩn mật khẩu' : 'Hiện mật khẩu');
      });
    })();
  </script>
</body>
</html>