<?php
ob_start();
session_start();
require_once 'config.php';
require_once 'config_ui.php';

$flash_message = '';
$flash_class = 'bg-red-100 border-red-500 text-red-700';

$requestPlatform = filter_var($_REQUEST['plataforma'] ?? null, FILTER_VALIDATE_INT) ?: 0;
$requestEmail = filter_var($_REQUEST['correo'] ?? null, FILTER_VALIDATE_EMAIL) ?: '';
$requestSubject = filter_var($_REQUEST['asunto'] ?? null, FILTER_VALIDATE_INT) ?: 0;

if ($requestPlatform > 0 && $requestEmail !== '') {
    $_SESSION['consulta_pendiente'] = [
        'plataforma' => $requestPlatform,
        'correo' => strtolower($requestEmail),
        'asunto' => $requestSubject,
        'fecha' => time(),
    ];
}

$pendingConsulta = is_array($_SESSION['consulta_pendiente'] ?? null)
    ? $_SESSION['consulta_pendiente']
    : [];
$plataforma_id_redirect = $requestPlatform > 0 ? $requestPlatform : (int) ($pendingConsulta['plataforma'] ?? 0);
$correo_redirect = $requestEmail !== '' ? strtolower($requestEmail) : strtolower((string) ($pendingConsulta['correo'] ?? ''));
$asunto_redirect = $requestSubject > 0 ? $requestSubject : (int) ($pendingConsulta['asunto'] ?? 0);

function af_consulta_redirect_url(int $platformId, string $email, int $subjectId = 0): string
{
    if ($platformId <= 0 || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return 'consulta.php';
    }
    $query = [
        'plataforma' => $platformId,
        'correo' => strtolower($email),
        'continuar' => '1',
    ];
    if ($subjectId > 0) {
        $query['asunto'] = $subjectId;
    }
    return 'consulta.php?' . http_build_query($query, '', '&', PHP_QUERY_RFC3986);
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $codigo_consulta = strtoupper((string) preg_replace('/\s+/', '', trim($_POST['codigo_consulta'] ?? '')));
    if (preg_match('/^(REV|CLIE)([A-Z0-9]{8})$/', $codigo_consulta, $matches)) {
        $codigo_consulta = $matches[1] . '-' . $matches[2];
    }

    if (empty($codigo_consulta)) {
        $flash_message = 'Por favor, introduce tu ID de consulta o ID de cuenta.';
    } else {
        try {
            // 1. INTENTO A: BUSCAR COMO CLIENTE/REVENDEDOR
            $stmt = $pdo->prepare("
                SELECT u.id, u.nombre_usuario, u.correo, r.nombre_rol, u.id_admin_propietario, u.codigo_consulta 
                FROM usuarios u
                JOIN roles r ON u.id_rol = r.id
                WHERE u.codigo_consulta = ? 
                LIMIT 1
            ");
            $stmt->execute([$codigo_consulta]);
            $user = $stmt->fetch(PDO::FETCH_ASSOC);

            if ($user && in_array($user['nombre_rol'], ['Revendedor', 'Cliente Final'])) {
                $_SESSION['consulta']['uid'] = $user['id'];
                $_SESSION['consulta']['nombre_usuario'] = $user['nombre_usuario'];
                $_SESSION['consulta']['rol'] = $user['nombre_rol'];
                $_SESSION['consulta']['id_admin_propietario'] = $user['id_admin_propietario'];
                $_SESSION['consulta']['codigo_consulta'] = $user['codigo_consulta'];
                $_SESSION['consulta']['tipo_acceso'] = 'cliente';

                $redirect_url = af_consulta_redirect_url($plataforma_id_redirect, $correo_redirect, $asunto_redirect);
                header('Location: ' . $redirect_url);
                exit;
            } 
            
            // 2. INTENTO B: BUSCAR COMO CUENTA ÚNICA
            $stmt_cuenta = $pdo->prepare(
                "SELECT cs.id, cs.correo, cs.id_plataforma, cs.id_admin_propietario,
                        COALESCE(p.nombre, 'Cuenta individual') AS plataforma_nombre
                 FROM correos_servicios cs
                 LEFT JOIN plataformas p ON p.id = cs.id_plataforma
                 WHERE cs.codigo_acceso_cuenta = ?
                 LIMIT 1"
            );
            $stmt_cuenta->execute([$codigo_consulta]);
            $cuenta = $stmt_cuenta->fetch(PDO::FETCH_ASSOC);

            if ($cuenta) {
                $_SESSION['consulta']['uid'] = 0; 
                $_SESSION['consulta']['nombre_usuario'] = 'Invitado (Cuenta)';
                $_SESSION['consulta']['rol'] = 'Cuenta';
                $_SESSION['consulta']['id_admin_propietario'] = $cuenta['id_admin_propietario'];
                $_SESSION['consulta']['codigo_consulta'] = $codigo_consulta;
                $_SESSION['consulta']['tipo_acceso'] = 'cuenta_unica';
                $_SESSION['consulta']['correo_permitido'] = strtolower($cuenta['correo']);
                $_SESSION['consulta']['plataforma_permitida'] = $cuenta['id_plataforma'];
                $_SESSION['consulta']['plataforma_nombre'] = trim((string) ($cuenta['plataforma_nombre'] ?? 'Cuenta individual'));

                $accountSubject = ($plataforma_id_redirect === (int) $cuenta['id_plataforma']
                    && strtolower($correo_redirect) === strtolower((string) $cuenta['correo']))
                    ? $asunto_redirect
                    : 0;
                $_SESSION['consulta_pendiente'] = [
                    'plataforma' => (int) $cuenta['id_plataforma'],
                    'correo' => strtolower((string) $cuenta['correo']),
                    'asunto' => $accountSubject,
                    'fecha' => time(),
                ];
                $redirect_url = af_consulta_redirect_url((int) $cuenta['id_plataforma'], (string) $cuenta['correo'], $accountSubject);
                header('Location: ' . $redirect_url);
                exit;

            } else {
                $flash_message = 'El ID ingresado no es válido.';
            }

        } catch (PDOException $e) {
            error_log("Error en login_consulta.php: " . $e->getMessage());
            $flash_message = 'Error interno del servidor.';
        }
    }
}

$titulo_pagina = $ui_consulta_login_title ?? 'Login con ID';
require_once 'header_publico.php'; 
?>
<style>
.query-private-shell{width:min(1060px,100%);margin:0 auto}.query-private-card{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(420px,1.1fr);overflow:hidden;border:1px solid rgba(255,255,255,.82);border-radius:24px;background:transparent;box-shadow:0 34px 90px rgba(2,6,23,.38)}
.query-private-info{position:relative;padding:38px 34px;overflow:hidden;color:#fff;background:linear-gradient(150deg,rgba(5,11,24,.95),rgba(15,23,42,.90) 52%,color-mix(in srgb,var(--brand-primary) 76%,#0f172a)),url('<?= htmlspecialchars((string)($ui_fondo_login_path ?? 'assets/img/fondo.jpg'), ENT_QUOTES) ?>') center/cover no-repeat}.query-private-info::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 10% 8%,color-mix(in srgb,var(--brand-primary) 58%,transparent),transparent 30%),linear-gradient(180deg,rgba(255,255,255,.04),rgba(2,6,23,.18))}.query-private-info>*{position:relative;z-index:1}.query-private-eyebrow{display:inline-flex;align-items:center;gap:8px;padding:8px 11px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(255,255,255,.1);font-size:10px;font-weight:900;letter-spacing:.13em;text-transform:uppercase}.query-private-info h2{margin:20px 0 12px;font-size:clamp(29px,3vw,40px);line-height:1.08;letter-spacing:-.04em}.query-private-info>p{margin:0;color:#e2e8f0;font-size:14px;line-height:1.65}.query-private-benefits{display:grid;gap:10px;margin-top:24px}.query-private-benefit{display:grid;grid-template-columns:44px 1fr;gap:12px;align-items:center;padding:12px 13px;border:1px solid rgba(255,255,255,.16);border-radius:15px;background:rgba(255,255,255,.09)}.query-private-benefit>i{width:44px;height:44px;display:grid;place-items:center;border-radius:13px;background:color-mix(in srgb,var(--brand-primary) 70%,transparent);font-size:17px}.query-private-benefit strong{display:block;margin-bottom:3px;font-size:13px}.query-private-benefit span{color:#dbe4ef;font-size:11px;line-height:1.45}.query-private-note{margin-top:22px;padding-top:18px;border-top:1px solid rgba(255,255,255,.17);display:flex;gap:9px;color:#e2e8f0;font-size:11px;line-height:1.5}.query-private-note i{color:#86efac;margin-top:2px}
.query-private-form{display:flex;align-items:center;padding:36px 38px;background:#fff}.query-private-form .query-login-card{width:100%;max-width:none;margin:0;padding:0;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;overflow:visible}.query-private-form .query-login-card::before,.query-private-form .query-login-card::after{display:none!important}.query-private-form .query-login-card__accent{display:none}.query-private-back{margin-top:16px;display:flex;justify-content:center}.query-private-back a{display:inline-flex;align-items:center;gap:7px;color:var(--brand-primary);font-size:11px;font-weight:850}.query-private-guide{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.query-private-guide span{display:flex;flex-direction:column;gap:5px;padding:10px;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc;color:#64748b;font-size:9px;line-height:1.35}.query-private-guide i{color:var(--brand-primary);font-size:14px}.query-private-guide strong{color:#0f172a;font-size:10px}
@media(max-width:860px){.query-private-card{grid-template-columns:1fr}.query-private-form{grid-row:1;padding:28px 24px;background:#fff}.query-private-info{grid-row:2;padding:30px 24px}.query-private-benefits{grid-template-columns:1fr}}
@media(max-width:560px){.query-private-card{border-radius:18px}.query-private-form{padding:23px 17px}.query-private-info{padding:26px 18px}.query-private-guide{grid-template-columns:1fr}.query-private-guide span{flex-direction:row;align-items:center}}
</style>
<section class="query-private-shell" aria-labelledby="query-login-title">
    <div class="query-private-card">
        <aside class="query-private-info">
            <span class="query-private-eyebrow"><i class="fas fa-wand-magic-sparkles"></i><?= htmlspecialchars((string)($ui_auth_panel_eyebrow ?? 'PLATAFORMA PROFESIONAL')) ?></span>
            <h2><?= htmlspecialchars((string)($ui_auth_panel_title ?? 'Convierte la entrega de códigos en una operación rápida, ordenada y confiable.')) ?></h2>
            <p><?= htmlspecialchars((string)($ui_auth_panel_description ?? 'Centraliza cuentas, clientes, buzones, renovaciones y consultas en un sistema preparado para trabajar con tu propia marca.')) ?></p>
            <div class="query-private-benefits">
                <article class="query-private-benefit"><i class="fas fa-key"></i><span><strong><?= htmlspecialchars((string)($ui_consulta_login_benefit_1_title ?? 'Acceso por ID de consulta')) ?></strong><?= htmlspecialchars((string)($ui_consulta_login_benefit_1_text ?? 'Ingresa el ID asignado a tu operación para revisar únicamente los mensajes autorizados.')) ?></span></article>
                <article class="query-private-benefit"><i class="fas fa-user-lock"></i><span><strong><?= htmlspecialchars((string)($ui_consulta_login_benefit_2_title ?? 'Acceso por ID de cuenta')) ?></strong><?= htmlspecialchars((string)($ui_consulta_login_benefit_2_text ?? 'Utiliza el código individual de la cuenta para abrir de forma segura el servicio que te corresponde.')) ?></span></article>
            </div>
            <p class="query-private-note"><i class="fas fa-shield-halved"></i><span><?= htmlspecialchars((string)($ui_auth_panel_note ?? 'Acceso protegido y consultas controladas para una operación profesional.')) ?></span></p>
        </aside>

        <div class="query-private-form">
            <div class="query-login-card">
                <div class="query-login-card__header">
                    <span class="query-login-card__icon"><i class="fas fa-key" aria-hidden="true"></i></span>
                    <div>
                        <span class="query-login-card__eyebrow"><?= htmlspecialchars((string) ($ui_consulta_login_eyebrow ?? 'Consulta privada')) ?></span>
                        <h1 id="query-login-title"><?= htmlspecialchars((string) ($ui_consulta_login_title ?? 'Ingresa con tu ID de acceso')) ?></h1>
                        <p><?= htmlspecialchars((string) ($ui_consulta_login_description ?? 'Utiliza el código entregado por tu administrador para consultar los mensajes autorizados.')) ?></p>
                    </div>
                </div>

                <div class="query-private-guide" aria-label="Tipos de acceso permitidos">
                    <span><i class="fas fa-user-tag"></i><strong>Revendedor</strong>ID asignado a su operación</span>
                    <span><i class="fas fa-user"></i><strong>Cliente</strong>Acceso personal autorizado</span>
                    <span><i class="fas fa-envelope-open-text"></i><strong>Cuenta</strong>Código individual del servicio</span>
                </div>

                <?php if ($flash_message): ?>
                    <div class="query-login-alert" role="alert"><i class="fas fa-circle-exclamation" aria-hidden="true"></i><span><?= htmlspecialchars($flash_message) ?></span></div>
                <?php endif; ?>

                <form method="POST" action="login_consulta.php" class="query-login-form" novalidate>
                    <input type="hidden" name="plataforma" value="<?= htmlspecialchars((string)($plataforma_id_redirect ?: '')) ?>">
                    <input type="hidden" name="correo" value="<?= htmlspecialchars((string)($correo_redirect ?: '')) ?>">
                    <input type="hidden" name="asunto" value="<?= htmlspecialchars((string)($asunto_redirect ?: '')) ?>">
                    <input type="hidden" name="continuar" value="1">
                    <label for="codigo_consulta"><?= htmlspecialchars((string) ($ui_consulta_login_label ?? 'ID de consulta o ID de cuenta')) ?></label>
                    <div class="query-login-input"><i class="fas fa-shield-halved" aria-hidden="true"></i><input type="text" id="codigo_consulta" name="codigo_consulta" placeholder="<?= htmlspecialchars((string) ($ui_consulta_login_placeholder ?? 'Ejemplo: REV-K7M2P941'), ENT_QUOTES) ?>" maxlength="24" autocomplete="one-time-code" autocapitalize="characters" spellcheck="false" required autofocus></div>
                    <small>Puedes escribir el código con o sin guion. No incluyas espacios.</small>
                    <button type="submit" class="query-login-submit"><i class="fas fa-arrow-right-to-bracket" aria-hidden="true"></i><span><?= htmlspecialchars((string) ($ui_consulta_login_button ?? 'Ingresar a la consulta')) ?></span></button>
                </form>
                <p class="query-login-card__security"><i class="fas fa-lock" aria-hidden="true"></i><?= htmlspecialchars((string) ($ui_consulta_login_security ?? 'El ID solo habilita los accesos que tu administrador haya asociado.')) ?></p>
                <div class="query-private-back"><a href="<?= htmlspecialchars(af_consulta_redirect_url($plataforma_id_redirect, $correo_redirect, 0), ENT_QUOTES) ?>"><i class="fas fa-arrow-left"></i>Volver a la consulta pública</a></div>
            </div>
        </div>
    </div>
</section>

<script>
(() => {
    const input = document.getElementById('codigo_consulta');
    const form = input?.form;
    input?.addEventListener('input', () => { input.value = input.value.toUpperCase().replace(/\s+/g, ''); });
    form?.addEventListener('submit', () => {
        const button = form.querySelector('button[type="submit"]');
        if (!button || button.disabled) return;
        button.disabled = true;
        button.innerHTML = '<i class="fas fa-circle-notch fa-spin" aria-hidden="true"></i><span>Verificando acceso…</span>';
    });
})();
</script>

<?php
require_once 'footer_publico.php';
ob_end_flush();
?>
