<?php
/**
 * 🔧 CORRECTOR AUTOMÁTICO DE RUTAS API
 * Corrige todas las rutas incorrectas en los archivos de la API
 */

// Headers para mostrar errores
error_reporting(E_ALL);
ini_set('display_errors', 1);

echo "<!DOCTYPE html><html><head><meta charset='UTF-8'>";
echo "<title>🔧 Corrector API</title>";
echo "<style>body{font-family:monospace;margin:20px;background:#000;color:#00ff00}";
echo ".ok{color:#00ff00}.error{color:#ff0040}.warning{color:#ffaa00}";
echo ".section{background:#111;padding:15px;margin:10px 0;border:1px solid #333}";
echo "pre{background:#222;padding:10px;color:#ccc;overflow:auto;max-height:200px}";
echo "</style></head><body>";

echo "<h1>🔧 CORRECTOR AUTOMÁTICO DE RUTAS API</h1>";

// Verificar que existe la carpeta api
if (!is_dir('api')) {
    echo "<div class='error'>❌ CRÍTICO: Carpeta 'api' no encontrada</div>";
    exit;
}

// Obtener todos los archivos PHP de la API
$api_files = glob('api/*.php');
if (empty($api_files)) {
    echo "<div class='error'>❌ No se encontraron archivos PHP en la API</div>";
    exit;
}

echo "<div class='ok'>✅ Encontrados " . count($api_files) . " archivos para corregir</div>";

echo "<div class='section'>";
echo "<h2>🔄 CORRIGIENDO ARCHIVOS...</h2>";

$corrections = [
    // Ruta incorrecta -> Ruta correcta
    "require_once 'config/config.php';" => "require_once '../config/config.php';",
    'require_once "config/config.php";' => 'require_once "../config/config.php";',
    "include_once 'config/config.php';" => "include_once '../config/config.php';",
    'include_once "config/config.php";' => 'include_once "../config/config.php";',
    
    // También corregir rutas a classes si las hay
    "require_once 'classes/" => "require_once '../classes/",
    'require_once "classes/' => 'require_once "../classes/',
    "include_once 'classes/" => "include_once '../classes/",
    'include_once "classes/' => 'include_once "../classes/',
    
    // Servicios
    "require_once 'services/" => "require_once '../services/",
    'require_once "services/' => 'require_once "../services/',
];

$total_files = 0;
$total_corrections = 0;
$errors = [];

foreach ($api_files as $file) {
    $filename = basename($file);
    $total_files++;
    
    echo "<div class='warning'>🔄 Procesando: $filename</div>";
    
    try {
        // Leer contenido del archivo
        $content = file_get_contents($file);
        if ($content === false) {
            $errors[] = "No se pudo leer: $filename";
            continue;
        }
        
        $original_content = $content;
        $file_corrections = 0;
        
        // Aplicar todas las correcciones
        foreach ($corrections as $wrong => $correct) {
            $old_content = $content;
            $content = str_replace($wrong, $correct, $content);
            
            if ($content !== $old_content) {
                $matches = substr_count($old_content, $wrong);
                $file_corrections += $matches;
                echo "<div class='ok'>✅ $matches corrección(es): '$wrong' → '$correct'</div>";
            }
        }
        
        // Si hubo cambios, guardar el archivo
        if ($content !== $original_content) {
            if (file_put_contents($file, $content) === false) {
                $errors[] = "No se pudo escribir: $filename";
                continue;
            }
            
            $total_corrections += $file_corrections;
            echo "<div class='ok'>✅ Archivo guardado: $filename ($file_corrections correcciones)</div>";
        } else {
            echo "<div class='warning'>⚠️ Sin cambios necesarios: $filename</div>";
        }
        
    } catch (Exception $e) {
        $errors[] = "Error procesando $filename: " . $e->getMessage();
    }
    
    echo "<br>";
}

echo "</div>";

// Verificación post-corrección
echo "<div class='section'>";
echo "<h2>✅ VERIFICACIÓN POST-CORRECCIÓN</h2>";

echo "<div class='ok'>📊 Archivos procesados: $total_files</div>";
echo "<div class='ok'>📊 Total correcciones: $total_corrections</div>";

if (!empty($errors)) {
    echo "<div class='error'>❌ Errores encontrados:</div>";
    foreach ($errors as $error) {
        echo "<div class='error'>• $error</div>";
    }
} else {
    echo "<div class='ok'>✅ Sin errores durante la corrección</div>";
}

// Verificar que las rutas sean correctas ahora
echo "<br><div class='warning'><strong>VERIFICANDO RUTAS CORREGIDAS...</strong></div>";

$verification_success = true;

foreach ($api_files as $file) {
    $filename = basename($file);
    $content = file_get_contents($file);
    
    // Verificar que no quedan rutas incorrectas
    if (preg_match('/require_once\s+[\'"]config\/config\.php[\'"]/', $content) ||
        preg_match('/include_once\s+[\'"]config\/config\.php[\'"]/', $content)) {
        echo "<div class='error'>❌ $filename: Aún tiene rutas incorrectas</div>";
        $verification_success = false;
    } else {
        // Verificar que tiene la ruta correcta
        if (preg_match('/require_once\s+[\'"]\.\.\/config\/config\.php[\'"]/', $content) ||
            preg_match('/include_once\s+[\'"]\.\.\/config\/config\.php[\'"]/', $content)) {
            echo "<div class='ok'>✅ $filename: Ruta corregida correctamente</div>";
        } else {
            echo "<div class='warning'>⚠️ $filename: No se encontró require de config</div>";
        }
    }
}

echo "</div>";

// Test final
echo "<div class='section'>";
echo "<h2>🔬 TEST FINAL</h2>";

if ($verification_success && $total_corrections > 0) {
    echo "<div class='ok'>🎉 ¡CORRECCIÓN COMPLETADA CON ÉXITO!</div>";
    echo "<div class='ok'>✅ Todas las rutas de la API han sido corregidas</div>";
    echo "<div class='ok'>✅ Los archivos ahora buscan '../config/config.php'</div>";
    
    echo "<br><div class='warning'><strong>SIGUIENTE PASO:</strong></div>";
    echo "<div class='warning'>• Prueba cualquier endpoint de la API</div>";
    echo "<div class='warning'>• Ejemplo: <a href='api/get_system_config.php' style='color:#ffaa00'>api/get_system_config.php</a></div>";
    echo "<div class='warning'>• O prueba el login: <a href='login.php' style='color:#ffaa00'>login.php</a></div>";
    
} elseif ($total_corrections === 0) {
    echo "<div class='warning'>⚠️ No se encontraron correcciones necesarias</div>";
    echo "<div class='warning'>Puede que las rutas ya estén correctas o hay otro problema</div>";
    
    echo "<br><div class='warning'><strong>VERIFICAR:</strong></div>";
    echo "<div class='warning'>• Ejecuta: <a href='diagnostico_api.php' style='color:#ffaa00'>diagnostico_api.php</a></div>";
    
} else {
    echo "<div class='error'>❌ Corrección incompleta</div>";
    echo "<div class='error'>Hay problemas que requieren revisión manual</div>";
}

echo "</div>";

echo "</body></html>";
?>