<?php
// ajax/instalar_tablas.php
require_once "config/Conexion.php";

echo "<h1>Asistente de Instalación de Firma Digital</h1>";

try {
    // 1. Crear tabla certificados_medicos
    $sql1 = "CREATE TABLE IF NOT EXISTS `certificados_medicos` (
      `idcertificado` int(11) NOT NULL AUTO_INCREMENT,
      `idempleado` int(11) NOT NULL,
      `nombre_certificado` varchar(255) NOT NULL,
      `ruta_certificado` varchar(255) NOT NULL COMMENT 'Ruta al archivo .p12 encriptado',
      `fecha_emision` date DEFAULT NULL,
      `fecha_vencimiento` date NOT NULL,
      `estado` enum('activo','vencido','revocado') DEFAULT 'activo',
      `fecha_registro` datetime DEFAULT CURRENT_TIMESTAMP,
      `ultimo_uso` datetime DEFAULT NULL,
      PRIMARY KEY (`idcertificado`),
      KEY `fk_certificado_empleado` (`idempleado`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";

    if (ejecutarConsulta($sql1)) {
        echo "<p style='color:green'>✅ Tabla 'certificados_medicos' preparada correctamente.</p>";
    } else {
        echo "<p style='color:red'>❌ Error al crear tabla certificados_medicos.</p>";
    }

    // 2. Agregar columnas a la tabla receta
    $columnas = [
        'firmado' => "tinyint(1) DEFAULT 0",
        'fecha_firma' => "datetime DEFAULT NULL",
        'ruta_pdf_firmado' => "varchar(255) DEFAULT NULL",
        'idempleado_firma' => "int(11) DEFAULT NULL"
    ];

    foreach ($columnas as $col => $def) {
        $check = ejecutarConsulta("SHOW COLUMNS FROM receta LIKE '$col'");
        if ($check->num_rows == 0) {
            $sqlAlter = "ALTER TABLE receta ADD COLUMN $col $def";
            if (ejecutarConsulta($sqlAlter)) {
                echo "<p style='color:green'>✅ Columna '$col' añadida a tabla receta.</p>";
            } else {
                echo "<p style='color:red'>❌ Error al añadir columna '$col'.</p>";
            }
        } else {
            echo "<p style='color:blue'>ℹ️ Columna '$col' ya existe en tabla receta.</p>";
        }
    }

    echo "<h3>Escaneando Todo el Servidor en busca de TCPDF</h3>";

    function buscarArchivoRecursivo($directorio, $nombreArchivo)
    {
        if (!is_dir($directorio))
            return false;
        try {
            $ite = new RecursiveDirectoryIterator($directorio, RecursiveDirectoryIterator::SKIP_DOTS);
            $it = new RecursiveIteratorIterator($ite);
            foreach ($it as $archivo) {
                if (basename($archivo) == $nombreArchivo) {
                    return $archivo->getPathname();
                }
            }
        } catch (Exception $e) {
            // Ignorar errores de permisos en carpetas
        }
        return false;
    }

    $directorioABuscar = dirname(__FILE__);
    $directorioPapa = dirname($directorioABuscar);

    echo "<p>Buscando en carpetas del sistema...</p>";

    $rutaEncontrada = buscarArchivoRecursivo($directorioABuscar, 'tcpdf.php');
    if (!$rutaEncontrada) {
        $rutaEncontrada = buscarArchivoRecursivo($directorioPapa, 'tcpdf.php');
    }

    if ($rutaEncontrada) {
        $rutaLimpia = str_replace('\\', '/', $rutaEncontrada);
        echo "<p style='color:green; font-size: 1.1em;'>✨ <b>¡Encontrada!</b> La librería está en:</p>";
        echo "<div style='background: #f8f9fa; padding: 10px; border: 1px solid #ccc; font-family: monospace;'>$rutaLimpia</div>";

        // Calcular ruta relativa
        $scriptDir = str_replace('\\', '/', $directorioABuscar);
        $encontrada_glob = str_replace($scriptDir . '/', '', $rutaLimpia);
        echo "<p>Ruta detectada: <b>$encontrada_glob</b></p>";
    } else {
        echo "<p style='color:red'>❌ No se encontró 'tcpdf.php'.</p>";
        echo "<p>Por favor, confirma que subiste la carpeta descomprimida dentro de 'public'.</p>";
        $encontrada_glob = false;
    }

    echo "<h3>Resumen Final</h3>";
    if ($encontrada_glob) {
        echo "<p style='color:green'>✅ ¡Todo listo! La base de datos y la librería están configuradas.</p>";
        echo "<p><a href='reportes/receta.php?idatencion=1' style='background: #28a745; color: white; padding: 12px 25px; text-decoration: none; border-radius: 5px; font-weight: bold;'>¡IR A FIRMAR AHORA!</a></p>";
    } else {
        echo "<p style='color:orange'>⚠️ Falta instalar o renombrar la carpeta de TCPDF para poder firmar.</p>";
    }

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