<?php
// recuperar_pdfs_perdidos.php
// Script de recuperación de archivos "fantasma" (registrados en DB pero no existen físicamente)
// EJECUTAR UNA SOLA VEZ para recuperar todos los documentos perdidos

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

require_once "../config/Conexion.php";
require_once "../modelos/AtencionFormato.php";
require_once "generar_pdf_msp.php";

echo "<h1>🔧 Recuperación de PDFs Perdidos</h1>";
echo "<p>Buscando archivos registrados en base de datos que no existen físicamente...</p>";

// Obtener TODOS los formatos guardados
$sql = "SELECT af.id_atencion_formato, af.idatencion, af.tipo_formato, af.datos_json, af.ruta_pdf 
        FROM atencion_formatos af 
        WHERE af.ruta_pdf IS NOT NULL 
        AND af.ruta_pdf != ''
        ORDER BY af.idatencion DESC";

$result = ejecutarConsulta($sql);

$total = 0;
$perdidos = 0;
$recuperados = 0;
$fallidos = 0;

while ($row = $result->fetch_object()) {
    $total++;
    $rutaRelativa = $row->ruta_pdf;
    $rutaAbsoluta = __DIR__ . '/../' . $rutaRelativa;

    // Normalizar ruta
    $rutaAbsoluta = str_replace('\\', '/', $rutaAbsoluta);

    echo "<div style='margin: 10px 0; padding: 10px; border: 1px solid #ccc;'>";
    echo "<strong>Atención #{$row->idatencion}</strong> - Formato: {$row->tipo_formato}<br>";
    echo "Ruta DB: {$rutaRelativa}<br>";

    if (!file_exists($rutaAbsoluta)) {
        $perdidos++;
        echo "<span style='color: red;'>❌ ARCHIVO PERDIDO - Regenerando...</span><br>";

        // REGENERAR EL PDF
        try {
            $nuevaRuta = generarPDFMspWrapper(
                $row->idatencion,
                $row->tipo_formato,
                $row->id_atencion_formato,
                $row->datos_json
            );

            if ($nuevaRuta) {
                // Actualizar la ruta en la base de datos
                $sqlUpdate = "UPDATE atencion_formatos 
                              SET ruta_pdf = '$nuevaRuta' 
                              WHERE id_atencion_formato = {$row->id_atencion_formato}";
                ejecutarConsulta($sqlUpdate);

                $recuperados++;
                echo "<span style='color: green;'>✅ RECUPERADO: {$nuevaRuta}</span><br>";
            } else {
                $fallidos++;
                echo "<span style='color: orange;'>⚠️ No se pudo regenerar</span><br>";
            }
        } catch (Exception $e) {
            $fallidos++;
            echo "<span style='color: orange;'>⚠️ Error: {$e->getMessage()}</span><br>";
        }
    } else {
        echo "<span style='color: green;'>✅ Archivo existe</span><br>";
    }

    echo "</div>";
}

echo "<hr>";
echo "<h2>📊 Resumen de Recuperación</h2>";
echo "<ul>";
echo "<li><strong>Total de registros:</strong> $total</li>";
echo "<li><strong>Archivos perdidos encontrados:</strong> $perdidos</li>";
echo "<li><strong>Archivos recuperados exitosamente:</strong> $recuperados</li>";
echo "<li><strong>Archivos que no se pudieron recuperar:</strong> $fallidos</li>";
echo "</ul>";

if ($recuperados > 0) {
    echo "<p style='color: green; font-weight: bold;'>✅ ¡Recuperación completada! Todos los documentos históricos han sido restaurados.</p>";
}
?>