<?php
// login_and_send_code.php  ✅ LIONS DESIGN + OBJETIVO QUESTIA ONLINE (Lions Quest)

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");
header("Access-Control-Allow-Methods: POST, OPTIONS");
header("Content-Type: application/json; charset=utf-8");

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit;
}

while (ob_get_level()) ob_end_clean();

// CONFIGURACIÓN DE RUTAS
$base_path = __DIR__;
$configPath = $base_path . '/config.php';
$mailConfigPath = $base_path . '/mail_config.php';
$autoloaderPath = $base_path . '/vendor/autoload.php';

// VERIFICAR ARCHIVOS
if (!file_exists($configPath) || !file_exists($mailConfigPath) || !file_exists($autoloaderPath)) {
    http_response_code(500);
    echo json_encode(['success' => false, 'message' => 'Error de configuración del servidor.']);
    exit;
}

require_once($configPath);
require_once($mailConfigPath);
require_once($autoloaderPath);

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

$response = ['success' => false, 'message' => 'Error desconocido.'];

try {
    $mysqli->set_charset("utf8mb4");

    $input = json_decode(file_get_contents('php://input'), true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        throw new Exception('JSON inválido.');
    }

    $email = trim($input['email'] ?? '');
    $password = $input['password'] ?? '';

    if (empty($email) || empty($password)) {
        throw new Exception('El correo y la contraseña son obligatorios.');
    }

    $stmt = $mysqli->prepare("SELECT ID_USUARIO, CORREO_USUARIO, NOMBRE_USUARIO, PASSWORD_USUARIO FROM USUARIOS_SISTEMA WHERE CORREO_USUARIO = ?");
    if (!$stmt) throw new Exception('Error en la consulta: ' . $mysqli->error);

    $stmt->bind_param("s", $email);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($row = $result->fetch_assoc()) {
        if (password_verify($password, $row['PASSWORD_USUARIO'])) {
            $codigo = str_pad(random_int(0, 999999), 6, '0', STR_PAD_LEFT);
            $hashed_codigo = password_hash($codigo, PASSWORD_DEFAULT);

            $stmt_update = $mysqli->prepare("UPDATE USUARIOS_SISTEMA SET CODIGO_VERIFICACION = ? WHERE ID_USUARIO = ?");
            if (!$stmt_update) throw new Exception('Error en update: ' . $mysqli->error);

            $stmt_update->bind_param("si", $hashed_codigo, $row['ID_USUARIO']);

            if ($stmt_update->execute()) {
                $mail = new PHPMailer(true);

                // SMTP desde mail_config.php (recomendado)
                $mail->isSMTP();
                $mail->Host = defined('MAIL_HOST') ? MAIL_HOST : 'mail.spacemail.com';
                $mail->SMTPAuth = true;
                $mail->Username = defined('MAIL_USERNAME') ? MAIL_USERNAME : 'notificaciones@devsoul.co';
                $mail->Password = defined('MAIL_PASSWORD') ? MAIL_PASSWORD : '';
                $mail->SMTPSecure = defined('MAIL_ENCRYPTION') ? MAIL_ENCRYPTION : 'ssl';
                $mail->Port = defined('MAIL_PORT') ? MAIL_PORT : 465;

                $mail->SMTPOptions = array(
                    'ssl' => array(
                        'verify_peer' => false,
                        'verify_peer_name' => false,
                        'allow_self_signed' => true
                    )
                );

                $mail->CharSet = 'UTF-8';
                $mail->setFrom(defined('MAIL_FROM_EMAIL') ? MAIL_FROM_EMAIL : 'notificaciones@devsoul.co',
                               defined('MAIL_FROM_NAME') ? MAIL_FROM_NAME : 'Sistema de Verificación');

                $mail->addAddress($row['CORREO_USUARIO'], $row['NOMBRE_USUARIO']);
                $mail->isHTML(true);

                // ✅ Asunto alineado a la app
                $mail->Subject = 'Código de verificación - Questia Online (Lions Quest)';

                // ✅ Template Lions
                $mail->Body = crearTemplateCorreoLionsQuestia($row['NOMBRE_USUARIO'], $codigo);

                // ✅ Texto plano
                $mail->AltBody = "Hola {$row['NOMBRE_USUARIO']}, tu código de verificación para Questia Online (Lions Quest) es: {$codigo}. Válido por 10 minutos. No compartas este código con nadie.";

                if ($mail->send()) {
                    $response = [
                        "success" => true,
                        "message" => "Se ha enviado un código de verificación a tu correo."
                    ];
                } else {
                    throw new Exception('Error SMTP: ' . $mail->ErrorInfo);
                }
            }

            $stmt_update->close();
        } else {
            $response = ["success" => false, "message" => "Credenciales incorrectas."];
        }
    } else {
        $response = ["success" => false, "message" => "Credenciales incorrectas."];
    }

    $stmt->close();
} catch (Exception $e) {
    $response = ["success" => false, "message" => "Error: " . $e->getMessage()];
}

if (isset($mysqli)) $mysqli->close();
echo json_encode($response);
exit;


// ===============================
// ✅ TEMPLATE CORREO (LIONS + QUESTIA)
// ===============================
function crearTemplateCorreoLionsQuestia($nombreUsuario, $codigo) {
    $firstName = htmlspecialchars(explode(' ', trim((string)$nombreUsuario))[0] ?? 'Hola');
    $fullName  = htmlspecialchars((string)$nombreUsuario);

    // 🎨 Lions colors
    $navy   = '#0B2E6B';
    $royal  = '#0F4AA5';
    $blue   = '#1E66D0';
    $gold   = '#FFC400';
    $bg     = '#F5F7FB';
    $card   = '#FFFFFF';
    $muted  = '#64748B';
    $text   = '#0B1B3A';
    $border = 'rgba(11,46,107,0.14)';

    // Logos (ajusta si quieres)
    $logoMain  = 'https://devsoul.co/api_corp/logo.png'; // Questia
    $logoLions = 'https://devsoul.co/api_corp/logo.png';

    return '
<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>Código de verificación</title>
</head>
<body style="margin:0;padding:0;background:'.$bg.';font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:'.$text.';line-height:1.5;">
  <div style="display:none;max-height:0;overflow:hidden;opacity:0;color:transparent;">
    Tu código de verificación para Questia Online (Lions Quest) es '.$codigo.'. Válido por 10 minutos.
  </div>

  <table role="presentation" cellpadding="0" cellspacing="0" width="100%" style="background:'.$bg.';padding:28px 12px;">
    <tr>
      <td align="center">
        <table role="presentation" cellpadding="0" cellspacing="0" width="680" style="max-width:680px;width:100%;background:'.$card.';border:1px solid '.$border.';border-radius:18px;overflow:hidden;box-shadow:0 18px 60px rgba(2,6,23,0.10);">

          <tr>
            <td style="height:8px;background:linear-gradient(90deg, '.$navy.' 0%, '.$royal.' 45%, '.$gold.' 100%);"></td>
          </tr>

          <tr>
            <td style="padding:26px 28px 18px;background:linear-gradient(180deg, #ffffff 0%, rgba(15,74,165,0.04) 100%);border-bottom:1px solid '.$border.';">
              <table role="presentation" cellpadding="0" cellspacing="0" width="100%">
                <tr>
                  <td valign="middle">
                    <div style="display:flex;gap:12px;align-items:center;">
                      <div style="display:inline-block;width:44px;height:44px;border-radius:12px;border:1px solid '.$border.';background:#fff;overflow:hidden;">
                        <img src="'.$logoLions.'" alt="Lions" width="44" height="44" style="display:block;width:44px;height:44px;object-fit:contain;" />
                      </div>
                      <div>
                        <div style="font-size:11px;letter-spacing:0.18em;text-transform:uppercase;color:'.$muted.';font-weight:700;">
                          Questia Online · Lions Quest
                        </div>
                        <div style="font-size:14px;color:'.$text.';font-weight:800;margin-top:2px;">
                          Verificación de acceso (2 pasos)
                        </div>
                      </div>
                    </div>
                  </td>
                  <td align="right" valign="middle">
                    <div style="display:inline-block;padding:7px 10px;border:1px solid '.$border.';border-radius:999px;background:rgba(255,196,0,0.12);color:'.$navy.';font-size:11px;font-weight:800;">
                      Código válido 10 min
                    </div>
                  </td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td style="padding:26px 28px;">
              <h1 style="margin:0 0 10px;font-size:22px;line-height:1.25;color:'.$text.';font-weight:900;">
                Confirma tu acceso a la plataforma educativa
              </h1>

              <p style="margin:0 0 14px;font-size:15px;color:'.$text.';">
                Hola, <strong>'.$firstName.'</strong>.
              </p>

              <p style="margin:0 0 18px;font-size:15px;color:'.$muted.';">
                Recibimos una solicitud para iniciar sesión en <strong>Questia Online</strong> (Lions Quest).
                Ingresa el siguiente código para completar tu acceso:
              </p>

              <div style="border:1px solid '.$border.';border-radius:14px;background:rgba(15,74,165,0.05);padding:18px;text-align:center;">
                <div style="font-size:12px;color:'.$muted.';font-weight:700;letter-spacing:0.08em;text-transform:uppercase;">
                  Código de verificación
                </div>
                <div style="margin:10px 0 6px;font-size:40px;line-height:1;color:'.$navy.';font-weight:900;letter-spacing:8px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;">
                  '.$codigo.'
                </div>
                <div style="font-size:12px;color:'.$muted.';">
                  Válido por <strong>10 minutos</strong>
                </div>
              </div>

              <div style="margin:18px 0 0;">
                <p style="margin:0;font-size:13px;color:'.$muted.';">
                  Si estás en la pantalla de verificación, escribe el código exactamente como aparece (6 dígitos).
                </p>
              </div>

              <div style="margin:20px 0 0;border:1px solid rgba(255,196,0,0.55);background:rgba(255,196,0,0.14);border-radius:14px;padding:14px 14px;">
                <div style="font-size:14px;font-weight:900;color:'.$text.';margin-bottom:6px;">
                  No compartas este código con nadie
                </div>
                <div style="font-size:13px;color:'.$muted.';">
                  El equipo de Questia Online / Lions Quest <strong>nunca</strong> te pedirá este código por chat, llamada o correo.
                </div>
              </div>

              <div style="margin:18px 0 0;border-left:4px solid '.$royal.';background:rgba(30,102,208,0.06);border-radius:12px;padding:14px 14px;">
                <div style="font-size:14px;font-weight:900;color:'.$text.';margin-bottom:6px;">
                  Sobre la plataforma
                </div>
                <div style="font-size:13px;color:'.$muted.';">
                  Questia Online apoya la implementación del programa <strong>Lions Quest</strong> con recursos y seguimiento del proyecto educativo
                  (cátedra emocional), desde un aplicativo web responsive.
                </div>
              </div>

              <p style="margin:18px 0 0;font-size:13px;color:'.$muted.';">
                ¿No solicitaste este código? Puedes ignorar este correo. Mientras no compartas el código, tu cuenta permanece protegida.
              </p>
            </td>
          </tr>

          <tr>
            <td style="padding:18px 28px;background:rgba(11,46,107,0.04);border-top:1px solid '.$border.';">
              <table role="presentation" cellpadding="0" cellspacing="0" width="100%">
                <tr>
                  <td valign="middle">
                    <div style="font-size:13px;color:'.$text.';">
                      Saludos,<br/>
                      <strong>Equipo de Seguridad — Questia</strong>
                    </div>
                    <div style="margin-top:10px;font-size:12px;color:'.$muted.';">
                      Este mensaje fue enviado a <strong>'.$fullName.'</strong>.
                      Por seguridad, no reenvíes este correo.
                    </div>
                  </td>
                  <td align="right" valign="middle">
                    <img src="'.$logoMain.'" alt="Questia" height="30" style="display:block;height:30px;max-width:140px;object-fit:contain;opacity:0.95;" />
                  </td>
                </tr>
              </table>

              <div style="margin-top:14px;padding-top:12px;border-top:1px solid '.$border.';font-size:11px;color:#94A3B8;">
                Lions — Questia · Bogotá, Colombia
              </div>
            </td>
          </tr>

        </table>

        <div style="max-width:680px;width:100%;margin-top:10px;font-size:11px;color:#94A3B8;text-align:center;">
          Si tienes dudas sobre este correo, comunícate con el administrador de tu institución.
        </div>
      </td>
    </tr>
  </table>
</body>
</html>';
}
