<?php
// debug_firma_persistencia.php
session_start();
require_once "config/Conexion.php";

echo "<h1>Diagnóstico de Persistencia de Firma</h1>";

// 1. Verificar sesión
echo "<h2>1. Información de Sesión</h2>";
echo "<pre>";
echo "Session ID: " . session_id() . "\n";
echo "Usuario en sesión: " . (isset($_SESSION['nombre']) ? $_SESSION['nombre'] : 'NO HAY SESIÓN') . "\n";
echo "ID Usuario: " . (isset($_SESSION['idusuario']) ? $_SESSION['idusuario'] : 'NO DEFINIDO') . "\n";
echo "ID Empleado: " . (isset($_SESSION['idempleado']) ? $_SESSION['idempleado'] : 'NO DEFINIDO') . "\n";
echo "</pre>";

// 2. Determinar idusuario
$idusuario = isset($_SESSION['idusuario']) ? $_SESSION['idusuario'] : (isset($_SESSION['idempleado']) ? $_SESSION['idempleado'] : 0);
echo "<h3>ID Usuario Efectivo: <strong>$idusuario</strong></h3>";

// 3. Verificar tabla sri_emisor
echo "<h2>2. Verificar Tabla sri_emisor</h2>";
$sqlCheck = "SHOW TABLES LIKE 'sri_emisor'";
$result = ejecutarConsulta($sqlCheck);
if ($result->num_rows > 0) {
    echo "<p style='color:green;'>✓ Tabla sri_emisor existe</p>";

    // Mostrar estructura
    echo "<h3>Estructura de la tabla:</h3>";
    $sqlDesc = "DESCRIBE sri_emisor";
    $desc = ejecutarConsulta($sqlDesc);
    echo "<table border='1' cellpadding='5'>";
    echo "<tr><th>Campo</th><th>Tipo</th><th>Null</th><th>Key</th></tr>";
    while ($row = $desc->fetch_assoc()) {
        echo "<tr>";
        echo "<td>{$row['Field']}</td>";
        echo "<td>{$row['Type']}</td>";
        echo "<td>{$row['Null']}</td>";
        echo "<td>{$row['Key']}</td>";
        echo "</tr>";
    }
    echo "</table>";
} else {
    echo "<p style='color:red;'>✗ Tabla sri_emisor NO existe</p>";
}

// 4. Buscar registros
echo "<h2>3. Registros en sri_emisor</h2>";
$sqlAll = "SELECT * FROM sri_emisor";
$registros = ejecutarConsulta($sqlAll);

if ($registros->num_rows > 0) {
    echo "<p>Total de registros: <strong>{$registros->num_rows}</strong></p>";
    echo "<table border='1' cellpadding='5'>";
    echo "<tr><th>ID</th><th>ID Usuario</th><th>RUC</th><th>Ruta Certificado</th><th>Archivo Existe</th><th>Ambiente</th></tr>";
    while ($reg = $registros->fetch_assoc()) {
        $archivoExiste = file_exists($reg['ruta_certificado']) ? '✓ SÍ' : '✗ NO';
        $estiloExiste = file_exists($reg['ruta_certificado']) ? 'color:green;' : 'color:red;';
        echo "<tr>";
        echo "<td>{$reg['idsri_emisor']}</td>";
        echo "<td>{$reg['idusuario']}</td>";
        echo "<td>{$reg['ruc']}</td>";
        echo "<td>{$reg['ruta_certificado']}</td>";
        echo "<td style='$estiloExiste'><strong>$archivoExiste</strong></td>";
        echo "<td>{$reg['ambiente']}</td>";
        echo "</tr>";
    }
    echo "</table>";
} else {
    echo "<p style='color:orange;'>⚠ No hay registros en la tabla sri_emisor</p>";
}

// 5. Buscar registro específico del usuario actual
echo "<h2>4. Registro del Usuario Actual (ID: $idusuario)</h2>";
$sqlUser = "SELECT * FROM sri_emisor WHERE idusuario='$idusuario'";
$userReg = ejecutarConsultaSimpleFila($sqlUser);

if ($userReg) {
    echo "<p style='color:green;'>✓ Registro encontrado para el usuario actual</p>";
    echo "<table border='1' cellpadding='5'>";
    echo "<tr><th>Campo</th><th>Valor</th></tr>";
    foreach ($userReg as $campo => $valor) {
        if ($campo == 'clave_certificado') {
            $valor = '[ENCRIPTADO]';
        }
        echo "<tr><td><strong>$campo</strong></td><td>$valor</td></tr>";
    }
    echo "</table>";

    // Verificar archivo
    $rutaCert = $userReg['ruta_certificado'];
    echo "<h3>Verificación del Archivo:</h3>";
    echo "<p>Ruta: <code>$rutaCert</code></p>";
    if (file_exists($rutaCert)) {
        echo "<p style='color:green;'>✓ El archivo existe físicamente</p>";
        echo "<p>Tamaño: " . filesize($rutaCert) . " bytes</p>";
    } else {
        echo "<p style='color:red;'>✗ El archivo NO existe en el sistema de archivos</p>";
    }
} else {
    echo "<p style='color:red;'>✗ NO hay registro para el usuario actual (ID: $idusuario)</p>";
}

// 6. Simular la consulta del endpoint
echo "<h2>5. Simulación del Endpoint verificar_estado_firma</h2>";
$sqlConfig = "SELECT ruc, razon_social, ruta_certificado FROM sri_emisor WHERE idusuario='$idusuario'";
$config = ejecutarConsultaSimpleFila($sqlConfig);

echo "<p>Query ejecutado: <code>$sqlConfig</code></p>";

if ($config && !empty($config['ruta_certificado']) && file_exists($config['ruta_certificado'])) {
    echo "<p style='color:green;'>✓ Resultado: EXISTE = TRUE</p>";
    echo "<pre>" . json_encode(['success' => true, 'existe' => true, 'ruc' => $config['ruc']], JSON_PRETTY_PRINT) . "</pre>";
} else {
    echo "<p style='color:red;'>✗ Resultado: EXISTE = FALSE</p>";
    echo "<p>Razón:</p>";
    echo "<ul>";
    if (!$config) {
        echo "<li>No se encontró registro en la BD</li>";
    } elseif (empty($config['ruta_certificado'])) {
        echo "<li>La ruta del certificado está vacía</li>";
    } elseif (!file_exists($config['ruta_certificado'])) {
        echo "<li>El archivo no existe en: {$config['ruta_certificado']}</li>";
    }
    echo "</ul>";
    echo "<pre>" . json_encode(['success' => true, 'existe' => false], JSON_PRETTY_PRINT) . "</pre>";
}

echo "<hr>";
echo "<h2>6. Acciones Sugeridas</h2>";
echo "<ul>";
echo "<li>Si no hay registros: Guarda un certificado desde la pantalla de facturación</li>";
echo "<li>Si el archivo no existe: Vuelve a subir el certificado</li>";
echo "<li>Si el ID de usuario no coincide: Verifica la sesión</li>";
echo "</ul>";
?>