<?php
/**
 * Script para mover archivos de evidencia/fotos subidos al path incorrecto.
 * Subir a public_html/ y ejecutar desde el navegador.
 * ¡ELIMINAR DESPUÉS DE USAR!
 */

$docRoot = __DIR__;
$parentDir = dirname($docRoot);

// Todas las posibles rutas incorrectas donde el código viejo pudo guardar archivos
// El bug original: dirname(dirname(__DIR__)) desde Controllers/ → private/public/uploads/
$wrongBases = [
    $parentDir . '/private',
    $parentDir . '/ganadera_private',
    $parentDir . '/private/public',        // <-- El bug principal: private/public/uploads/
    $parentDir . '/ganadera_private/public',
];

$folders = ['uploads/photos', 'uploads/evidence', 'uploads/documents'];
$moved = [];
$errors = [];
$scanned = [];

foreach ($wrongBases as $wrongBase) {
    foreach ($folders as $folder) {
        $wrongDir = $wrongBase . '/' . $folder;
        $correctDir = $docRoot . '/' . $folder;

        $scanned[] = $wrongDir . ' → ' . (is_dir($wrongDir) ? 'EXISTE (' . count(glob($wrongDir . '/*')) . ' archivos)' : 'no existe');

        if (!is_dir($wrongDir)) continue;

        // Crear destino si no existe
        if (!is_dir($correctDir)) {
            @mkdir($correctDir, 0775, true);
        }

        $files = glob($wrongDir . '/*');
        foreach ($files as $file) {
            if (is_file($file)) {
                $filename = basename($file);
                $dest = $correctDir . '/' . $filename;
                if (!file_exists($dest)) {
                    if (copy($file, $dest)) {
                        @chmod($dest, 0644);
                        $moved[] = "$folder/$filename ✓ copiado";
                    } else {
                        $errors[] = "No se pudo copiar: $folder/$filename";
                    }
                } else {
                    $moved[] = "$folder/$filename (ya existía)";
                }
            }
        }
    }
}

// También buscar recursivamente en todo private/ por si hay uploads en algún nivel inesperado
foreach (['private', 'ganadera_private'] as $privName) {
    $privDir = $parentDir . '/' . $privName;
    if (!is_dir($privDir)) continue;
    
    try {
        $iterator = new RecursiveIteratorIterator(
            new RecursiveDirectoryIterator($privDir, RecursiveDirectoryIterator::SKIP_DOTS),
            RecursiveIteratorIterator::LEAVES_ONLY
        );
        foreach ($iterator as $fileInfo) {
            $path = str_replace('\\', '/', $fileInfo->getPathname());
            // Buscar archivos que sean fotos de animales, evidencias o documentos
            if (preg_match('#/(uploads/(photos|evidence|documents))/([^/]+\.(jpg|jpeg|png|gif|webp|pdf))$#i', $path, $m)) {
                $folder = $m[1];
                $filename = $m[3];
                $correctDir = $docRoot . '/' . $folder;
                $dest = $correctDir . '/' . $filename;
                
                if (!is_dir($correctDir)) {
                    @mkdir($correctDir, 0775, true);
                }
                
                if (!file_exists($dest)) {
                    if (copy($fileInfo->getPathname(), $dest)) {
                        @chmod($dest, 0644);
                        $moved[] = "$folder/$filename ✓ (encontrado en: " . basename(dirname(dirname($path))) . ")";
                    } else {
                        $errors[] = "No se pudo copiar: $folder/$filename desde $path";
                    }
                }
            }
        }
    } catch (Exception $e) {
        $errors[] = "Error escaneando $privName/: " . $e->getMessage();
    }
}

// Verificar que el directorio correcto tiene archivos
$correctCounts = [];
foreach ($folders as $folder) {
    $dir = $docRoot . '/' . $folder;
    $count = is_dir($dir) ? count(glob($dir . '/*')) : 0;
    $correctCounts[$folder] = $count;
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Fix Archivos</title>
    <style>
        body { font-family: system-ui, sans-serif; max-width: 700px; margin: 40px auto; padding: 20px; background: #f5f0eb; }
        .card { background: white; border-radius: 12px; padding: 24px; box-shadow: 0 4px 20px rgba(0,0,0,0.08); margin-bottom: 16px; }
        h1 { font-size: 1.3rem; color: #2E7D32; margin-bottom: 16px; }
        h2 { font-size: 1rem; color: #5D4E37; margin: 16px 0 8px; }
        .ok { color: #2E7D32; background: #e8f5e9; padding: 8px 12px; border-radius: 8px; margin: 4px 0; font-size: 0.85rem; word-break: break-all; }
        .err { color: #c62828; background: #fff0f0; padding: 8px 12px; border-radius: 8px; margin: 4px 0; font-size: 0.85rem; }
        .info { color: #555; background: #f5f5f5; padding: 6px 10px; border-radius: 6px; margin: 3px 0; font-size: 0.78rem; font-family: monospace; word-break: break-all; }
        .warn { color: #795548; background: #fff8e1; padding: 12px; border-radius: 8px; margin-top: 16px; font-size: 0.85rem; }
        .empty { color: #888; font-style: italic; }
        .stat { display: inline-block; background: #e3f2fd; color: #1565c0; padding: 4px 10px; border-radius: 6px; font-size: 0.82rem; margin: 2px; }
    </style>
</head>
<body>
<div class="card">
    <h1>🔧 Fix de archivos (fotos, evidencias, documentos)</h1>

    <h2>📂 Rutas escaneadas:</h2>
    <?php foreach ($scanned as $s): ?>
        <div class="info"><?= htmlspecialchars($s) ?></div>
    <?php endforeach; ?>

    <h2>📋 Resultados:</h2>
    <?php if (empty($moved) && empty($errors)): ?>
        <p class="empty">No se encontraron archivos en rutas incorrectas.</p>
    <?php else: ?>
        <?php foreach ($moved as $f): ?>
            <div class="ok">✅ <?= htmlspecialchars($f) ?></div>
        <?php endforeach; ?>
        <?php foreach ($errors as $e): ?>
            <div class="err">❌ <?= htmlspecialchars($e) ?></div>
        <?php endforeach; ?>
    <?php endif; ?>

    <h2>📊 Archivos en destino correcto (public_html/):</h2>
    <?php foreach ($correctCounts as $folder => $count): ?>
        <span class="stat"><?= $folder ?>: <?= $count ?> archivos</span>
    <?php endforeach; ?>

    <div class="warn">
        <strong>⚠️ IMPORTANTE:</strong> Elimina este archivo (<code>fix-evidence.php</code>) del servidor después de usarlo.
    </div>
</div>
</body>
</html>
    <h1>🔧 Fix de archivos de evidencia</h1>

    <?php if (empty($moved) && empty($errors)): ?>
        <p class="empty">No se encontraron archivos en rutas incorrectas. Todo está bien.</p>
    <?php else: ?>
        <?php foreach ($moved as $f): ?>
            <div class="ok">✅ <?= htmlspecialchars($f) ?></div>
        <?php endforeach; ?>
        <?php foreach ($errors as $e): ?>
            <div class="err">❌ <?= htmlspecialchars($e) ?></div>
        <?php endforeach; ?>
    <?php endif; ?>

    <div class="warn">
        <strong>⚠️ IMPORTANTE:</strong> Elimina este archivo (<code>fix-evidence.php</code>) del servidor después de usarlo.
    </div>
</div>
</body>
</html>
