<?php
/**
 * verificar_formulario.php — Verificación pública de integridad de documentos
 * Público, sin autenticación.
 * URL: verificar_formulario.php?h=HASH_SHA256
 */
require_once 'config/config.php';

$hash   = trim($_GET['h'] ?? '');
$valido = false;
$envio  = null;
$error  = '';

if ($hash && preg_match('/^[a-f0-9]{64}$/i', $hash)) {
    $db    = Database::getInstance();
    $envio = $db->fetch(
        "SELECT e.id, e.estado, e.completado_en, e.ip_cliente,
                f.nombre AS form_nombre, f.categoria,
                p.nombre_completo AS paciente_nombre, p.numero_documento
         FROM   lab_form_envios e
         JOIN   lab_formularios f ON f.id = e.formulario_id
         LEFT   JOIN lab_pacientes p ON p.id = e.paciente_id
         WHERE  e.hash_verificacion = ?",
        [$hash]
    );
    if ($envio) {
        $valido = in_array($envio['estado'], ['firmado', 'completado']);
    } else {
        $error = 'El código de verificación no corresponde a ningún documento registrado.';
    }
} elseif ($hash) {
    $error = 'El código de verificación no tiene el formato correcto.';
}

function esc3(mixed $v): string {
    return htmlspecialchars((string)($v ?? ''), ENT_QUOTES);
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Verificación de documento — Lab</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <style>
        body { background: #f0f4ff; min-height: 100vh; display: flex; flex-direction: column;
               align-items: center; justify-content: flex-start; padding: 40px 16px; }
        .verify-card { max-width: 560px; width: 100%; background: #fff;
                       border-radius: 12px; overflow: hidden;
                       box-shadow: 0 4px 24px rgba(0,0,0,.12); }
        .card-header-bar { padding: 22px 28px; color: #fff; }
        .card-header-bar.valid   { background: linear-gradient(135deg, #1b5e20, #2e7d32); }
        .card-header-bar.invalid { background: linear-gradient(135deg, #b71c1c, #c62828); }
        .card-header-bar.neutral { background: linear-gradient(135deg, #1565c0, #0288d1); }
        .card-body-p { padding: 24px 28px; }

        .result-icon { font-size: 3.5rem; margin-bottom: 12px; }
        .field-row { display: flex; gap: 12px; padding: 7px 0; border-bottom: 1px solid #f0f0f0; }
        .field-row:last-child { border: none; }
        .field-label { flex: 0 0 44%; font-size: 12px; color: #6c757d; }
        .field-val   { flex: 1; font-size: 13px; font-weight: 600; }

        .hash-display { font-family: monospace; font-size: 11px; word-break: break-all;
                        background: #f0f5ff; border: 1px solid #c3d3f7; border-radius: 6px;
                        padding: 10px 12px; color: #1e3a6e; margin-top: 12px; }
        .search-form input { font-size: 13px; font-family: monospace; }
    </style>
</head>
<body>

<div class="verify-card">

    <!-- Header -->
    <div class="card-header-bar <?= $hash ? ($valido ? 'valid' : 'invalid') : 'neutral' ?>">
        <h5 class="fw-bold mb-0 text-center">
            <i class="fas fa-shield-alt me-2"></i>Verificación de integridad de documentos
        </h5>
    </div>

    <div class="card-body-p">

        <?php if (!$hash): ?>
        <!-- Formulario de búsqueda -->
        <p class="text-muted small mb-4 text-center">
            Ingresa el código SHA-256 que aparece en el documento para verificar su autenticidad.
        </p>
        <form method="get" class="search-form">
            <div class="mb-3">
                <label class="form-label fw-semibold small">Código de verificación (SHA-256)</label>
                <input type="text" name="h" class="form-control" maxlength="64"
                       placeholder="Ej: a3f4b8c1d2e..." required>
                <div class="form-text">Código de 64 caracteres que aparece en el pie del documento.</div>
            </div>
            <button class="btn btn-primary w-100 fw-semibold">
                <i class="fas fa-search me-1"></i>Verificar documento
            </button>
        </form>

        <?php elseif ($valido && $envio): ?>
        <!-- Documento válido -->
        <div class="text-center mb-4">
            <div class="result-icon">✅</div>
            <h5 class="fw-bold text-success">Documento válido y auténtico</h5>
            <p class="text-muted small">
                Este documento fue registrado en nuestro sistema y no ha sido modificado.
            </p>
        </div>

        <div class="field-row">
            <div class="field-label">Formulario</div>
            <div class="field-val"><?= esc3($envio['form_nombre']) ?></div>
        </div>
        <?php if ($envio['paciente_nombre']): ?>
        <div class="field-row">
            <div class="field-label">Paciente</div>
            <div class="field-val"><?= esc3($envio['paciente_nombre']) ?></div>
        </div>
        <?php endif; ?>
        <?php if ($envio['numero_documento']): ?>
        <div class="field-row">
            <div class="field-label">Documento</div>
            <div class="field-val"><?= esc3($envio['numero_documento']) ?></div>
        </div>
        <?php endif; ?>
        <div class="field-row">
            <div class="field-label">Estado</div>
            <div class="field-val">
                <?= $envio['estado'] === 'firmado'
                    ? '<span class="badge" style="background:#198754">✍️ Firmado digitalmente</span>'
                    : '<span class="badge" style="background:#0d6efd">✅ Completado</span>' ?>
            </div>
        </div>
        <?php if ($envio['completado_en']): ?>
        <div class="field-row">
            <div class="field-label">Fecha de registro</div>
            <div class="field-val"><?= esc3(date('d/m/Y H:i', strtotime($envio['completado_en']))) ?> UTC</div>
        </div>
        <?php endif; ?>
        <div class="field-row">
            <div class="field-label">ID de registro</div>
            <div class="field-val text-muted">#<?= (int)$envio['id'] ?></div>
        </div>

        <div class="hash-display"><?= esc3($hash) ?></div>

        <form method="get" class="search-form mt-4">
            <input type="text" name="h" class="form-control form-control-sm"
                   placeholder="Verificar otro código…">
            <button class="btn btn-outline-secondary btn-sm w-100 mt-2">
                <i class="fas fa-search me-1"></i>Verificar otro
            </button>
        </form>

        <?php else: ?>
        <!-- Inválido / no encontrado -->
        <div class="text-center mb-4">
            <div class="result-icon">❌</div>
            <h5 class="fw-bold text-danger">Documento no verificado</h5>
            <p class="text-muted small"><?= esc3($error ?: 'El código no corresponde a ningún documento.') ?></p>
        </div>

        <?php if ($hash): ?>
        <div class="hash-display"><?= esc3($hash) ?></div>
        <?php endif; ?>

        <form method="get" class="search-form mt-4">
            <input type="text" name="h" value="<?= esc3($hash) ?>"
                   class="form-control form-control-sm" placeholder="Código de verificación…">
            <button class="btn btn-primary btn-sm w-100 mt-2">
                <i class="fas fa-search me-1"></i>Intentar de nuevo
            </button>
        </form>
        <?php endif; ?>

    </div><!-- /card-body-p -->

    <div style="padding: 12px 28px; background: #f8faff; border-top: 1px solid #e9ecef;
                font-size: 11px; color: #6c757d; text-align: center;">
        Sistema de verificación de documentos &mdash; Generado el <?= date('d/m/Y') ?>
    </div>
</div>

</body>
</html>
