<?php
declare(strict_types=1);

/**
 * EnglishSpeak — Student Forgot Password
 * Học sinh gửi yêu cầu; giáo viên xử lý và gọi lại số điện thoại đã đăng ký.
 */

session_start();

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

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

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

if (($_SERVER['REQUEST_METHOD'] ?? 'GET') === 'POST') {
    $identifier = trim((string)($_POST['identifier'] ?? ''));
    $csrfToken = (string)($_POST['csrf_token'] ?? '');

    if (
        $csrfToken === ''
        || !hash_equals((string)$_SESSION['csrf_token'], $csrfToken)
    ) {
        $error = 'Yêu cầu không hợp lệ. Vui lòng tải lại trang.';
    } elseif ($identifier === '') {
        $error = 'Vui lòng nhập số điện thoại hoặc Gmail.';
    } else {
        try {
            $pdo = getDbConnection();

            $stmt = $pdo->prepare(
                "SELECT id, full_name, phone, email, status
                 FROM students
                 WHERE phone = :phone_identifier
                    OR email = :email_identifier
                 LIMIT 1"
            );
            $stmt->execute([
                'phone_identifier' => $identifier,
                'email_identifier' => $identifier,
            ]);

            $student = $stmt->fetch(PDO::FETCH_ASSOC);

            /*
             * Không tiết lộ chi tiết tài khoản nếu không tìm thấy.
             * Nếu tìm thấy tài khoản active, tạo/cập nhật 1 yêu cầu đang chờ.
             */
            if ($student && ($student['status'] ?? '') === 'active') {
                $studentId = (int)$student['id'];

                $pendingStmt = $pdo->prepare(
                    "SELECT id
                     FROM password_reset_requests
                     WHERE student_id = :student_id
                       AND status = 'pending'
                     ORDER BY id DESC
                     LIMIT 1"
                );
                $pendingStmt->execute(['student_id' => $studentId]);
                $pendingId = $pendingStmt->fetchColumn();

                if ($pendingId) {
                    $updateStmt = $pdo->prepare(
                        "UPDATE password_reset_requests
                         SET requested_identifier = :identifier,
                             requested_at = NOW(),
                             updated_at = NOW()
                         WHERE id = :id"
                    );
                    $updateStmt->execute([
                        'identifier' => $identifier,
                        'id' => (int)$pendingId,
                    ]);
                } else {
                    $insertStmt = $pdo->prepare(
                        "INSERT INTO password_reset_requests
                            (student_id, requested_identifier, status, requested_at, created_at, updated_at)
                         VALUES
                            (:student_id, :identifier, 'pending', NOW(), NOW(), NOW())"
                    );
                    $insertStmt->execute([
                        'student_id' => $studentId,
                        'identifier' => $identifier,
                    ]);
                }
            }

            $success = 'Đã gửi yêu cầu. Admin sẽ kiểm tra và liên hệ số điện thoại đã đăng ký để cấp mật khẩu tạm.';
            $identifier = '';
            $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
        } catch (Throwable $e) {
            error_log('Forgot password request error: ' . $e->getMessage());
            $error = 'Chưa gửi được yêu cầu. Vui lòng thử lại sau.';
        }
    }
}
?>
<!DOCTYPE html>
<html lang="vi">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Quên mật khẩu — EnglishSpeak</title>
  <link rel="stylesheet" href="/EnglishSpeak/assets/css/student-auth.css">
</head>
<body>

  <div class="auth-container">
    <!-- Header -->
    <div class="auth-header">
      <div class="auth-logo">English<span class="accent">Speak</span></div>
      <p class="auth-subtitle">Learn, play and grow together!</p>
      <h1 class="auth-title">Quên mật khẩu</h1>
      <p class="auth-description">Nhập số điện thoại hoặc Gmail đã đăng ký. Admin sẽ kiểm tra yêu cầu và liên hệ để cấp mật khẩu tạm.</p>
    </div>

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

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

        <form id="forgot-form" method="post" novalidate>
          <input type="hidden" name="csrf_token" value="<?= htmlspecialchars((string)$_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="<?= htmlspecialchars($identifier, ENT_QUOTES, 'UTF-8') ?>"
              required
            >
          </div>

          <button type="submit" class="btn btn-primary" id="forgot-submit">
            Gửi yêu cầu
          </button>

          <a href="student-login.php" class="back-link">← Quay lại Đăng nhập</a>
        </form>
      </div>
    </div>

    <!-- Illustration -->
    <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>
</body>
</html>