<?php
// Script de diagnóstico para certificados médicos
// Ejecutar: https://tudominio.com/diagnostico_certificados.php

error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 1);

echo "<h1>Diagnóstico del Sistema de Certificados</h1>";
echo "<hr>";

// 1. Verificar conexión a base de datos
echo "<h2>1. Verificación de Base de Datos</h2>";
require_once 'config/Conexion.php';

try {
    $sql = "SHOW TABLES LIKE 'documento_medico'";
    $result = ejecutarConsulta($sql);

    if ($result && $result->num_rows > 0) {
        echo "<p style='color: green;'>✓ Tabla 'documento_medico' existe</p>";

        // Verificar estructura
        $sql2 = "DESCRIBE documento_medico";
        $result2 = ejecutarConsulta($sql2);

        echo "<h3>Estructura de la tabla:</h3>";
        echo "<table border='1' cellpadding='5'>";
        echo "<tr><th>Campo</th><th>Tipo</th><th>Null</th><th>Key</th><th>Default</th></tr>";

        while ($row = $result2->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 "<td>{$row['Default']}</td>";
            echo "</tr>";
        }
        echo "</table>";

    } else {
        echo "<p style='color: red;'>✗ Tabla 'documento_medico' NO existe</p>";
        echo "<p><a href='install_certificados_db.php'>Instalar ahora</a></p>";
    }
} catch (Exception $e) {
    echo "<p style='color: red;'>Error: " . $e->getMessage() . "</p>";
}

echo "<hr>";

// 2. Verificar carpetas de archivos
echo "<h2>2. Verificación de Carpetas</h2>";

$carpetas = [
    'files/certificados',
    'files/certificados_firmados',
    'files/certificados_encriptados'
];

foreach ($carpetas as $carpeta) {
    $ruta = __DIR__ . '/' . $carpeta;
    if (file_exists($ruta)) {
        if (is_writable($ruta)) {
            echo "<p style='color: green;'>✓ Carpeta '$carpeta' existe y tiene permisos de escritura</p>";
        } else {
            echo "<p style='color: orange;'>⚠ Carpeta '$carpeta' existe pero NO tiene permisos de escritura</p>";
            echo "<p style='margin-left: 20px;'>Ejecutar: <code>chmod 755 $ruta</code></p>";
        }
    } else {
        echo "<p style='color: red;'>✗ Carpeta '$carpeta' NO existe</p>";
        if (mkdir($ruta, 0755, true)) {
            echo "<p style='color: green; margin-left: 20px;'>✓ Carpeta creada exitosamente</p>";
        } else {
            echo "<p style='color: red; margin-left: 20px;'>✗ No se pudo crear la carpeta</p>";
        }
    }
}

echo "<hr>";

// 3. Verificar archivos PHP necesarios
echo "<h2>3. Verificación de Archivos PHP</h2>";

$archivos = [
    'modelos/Certificado.php',
    'ajax/certificado.php',
    'reportes/generar_certificado.php',
    'reportes/vista_certificado.php',
    'vistas/certificado_generar.php'
];

foreach ($archivos as $archivo) {
    $ruta = __DIR__ . '/' . $archivo;
    if (file_exists($ruta)) {
        echo "<p style='color: green;'>✓ Archivo '$archivo' existe</p>";
    } else {
        echo "<p style='color: red;'>✗ Archivo '$archivo' NO existe</p>";
    }
}

echo "<hr>";

// 4. Probar inserción de prueba
echo "<h2>4. Prueba de Inserción</h2>";

session_start();
if (!isset($_SESSION['idempleado'])) {
    $_SESSION['idempleado'] = 1; // Usar ID de prueba
    echo "<p style='color: orange;'>⚠ Usando idempleado de prueba: 1</p>";
}

require_once 'modelos/Certificado.php';

try {
    $certificado = new Certificado();

    // Datos de prueba
    $idatencion = null;
    $idpersona = 10600; // ID de paciente que existe en tu BD
    $tipo = 'MEDICO';
    $contenido = json_encode(['observaciones' => 'Prueba diagnóstico', 'diagnosticos_texto' => 'Ninguno']);
    $idempleado = $_SESSION['idempleado'];

    echo "<p>Intentando insertar certificado de prueba...</p>";
    $iddocumento = $certificado->insertar($idatencion, $idpersona, $tipo, $contenido, $idempleado);

    if ($iddocumento) {
        echo "<p style='color: green;'>✓ Certificado de prueba insertado exitosamente. ID: $iddocumento</p>";

        // Eliminar el registro de prueba
        $sqlDelete = "DELETE FROM documento_medico WHERE iddocumento='$iddocumento'";
        ejecutarConsulta($sqlDelete);
        echo "<p style='color: blue;'>Registro de prueba eliminado.</p>";
    } else {
        echo "<p style='color: red;'>✗ Error al insertar certificado de prueba</p>";
    }

} catch (Exception $e) {
    echo "<p style='color: red;'>Error: " . $e->getMessage() . "</p>";
}

echo "<hr>";

// 5. Verificar TCPDF
echo "<h2>5. Verificación de TCPDF</h2>";

$tcpdf_paths = [
    '/home/histkjpq/public_html/tcpdf/tcpdf.php',
    __DIR__ . '/public/tcpdf/tcpdf.php',
    dirname(__DIR__) . '/public/tcpdf/tcpdf.php'
];

$tcpdf_found = false;
foreach ($tcpdf_paths as $path) {
    if (file_exists($path)) {
        echo "<p style='color: green;'>✓ TCPDF encontrado en: $path</p>";
        $tcpdf_found = true;
        break;
    }
}

if (!$tcpdf_found) {
    echo "<p style='color: red;'>✗ TCPDF NO encontrado</p>";
    echo "<p>Buscar archivos tcpdf.php:</p>";
    $busqueda = glob(__DIR__ . '/public/*/tcpdf.php');
    if (!empty($busqueda)) {
        echo "<p style='color: green;'>Encontrado en: " . implode(', ', $busqueda) . "</p>";
    }
}

echo "<hr>";
echo "<h2 style='color: green;'>Diagnóstico Completado</h2>";
echo "<p>Si todos los checks están en verde (✓), el sistema debería funcionar correctamente.</p>";
?>