<?php

// Configurar la zona horaria a Madrid
date_default_timezone_set("Europe/Madrid");

// Permitir acceso desde cualquier origen
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET");
header("Access-Control-Allow-Headers: Content-Type, Authorization");

// Rutas del servidor
$documentRoot = $_SERVER['DOCUMENT_ROOT'];
$directorio = $documentRoot . "/assets/cstimage/";

// Archivo JSON maestro
$catalogoFile = $documentRoot . "/admin/catalogo.json";

// Cargar JSON existente
$catalogo = [];

if (file_exists($catalogoFile)) {
    $catalogo = json_decode(file_get_contents($catalogoFile), true);

    if (!is_array($catalogo)) {
        $catalogo = [];
    }
}

// Función para generar un ID único
function generarId()
{
    return bin2hex(random_bytes(8));
}

// Convertir catálogo en mapa indexado por código
$mapa = [];

foreach ($catalogo as $item) {
    if (isset($item['codigo'])) {
        $mapa[$item['codigo']] = $item;
    }
}

// Verificar que exista el directorio
if (!is_dir($directorio)) {
    die("❌ No existe el directorio: " . $directorio);
}

// Escanear carpeta
$archivos = scandir($directorio);

foreach ($archivos as $archivo) {

    if ($archivo === "." || $archivo === "..") {
        continue;
    }

    if (str_contains($archivo, "not_found")) {
        continue;
    }

    $ruta = $directorio . "/" . $archivo;

    if (!is_file($ruta)) {
        continue;
    }

    $extension = strtolower(pathinfo($archivo, PATHINFO_EXTENSION));
    $nombreBase = pathinfo($archivo, PATHINFO_FILENAME);

    // Solo imágenes
    if (!in_array($extension, ["jpg", "jpeg", "png"])) {
        continue;
    }

    $partes = explode("_", $nombreBase);

    if (count($partes) < 2) {
        continue;
    }

    $codigo = $partes[0] . "_" . $partes[1];

    // Nombre descriptivo (más robusto)
    $nombre = implode('_', array_slice($partes, 2));

    $texto_limpio = ucwords(
        strtolower(
            str_replace("_", " ", $nombre)
        )
    );

    if (!isset($mapa[$codigo])) {

        $mapa[$codigo] = [
            "id"     => generarId(),
            "codigo" => $codigo,
            "imagen" => null,
            "nombre" => null,
            "cl"     => $codigo,
            "ca"     => $texto_limpio,
            "es"     => $texto_limpio
        ];
    }

    $mapa[$codigo]["imagen"] = $archivo;
    $mapa[$codigo]["nombre"] = $texto_limpio;
}

// Convertir a array indexado
$resultado = array_values($mapa);

// Guardar catálogo actualizado
file_put_contents(
    $catalogoFile,
    json_encode(
        $resultado,
        JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE
    )
);

// Mostrar resultado en navegador
echo "<!DOCTYPE html>";
echo "<html>";
echo "<head>";
echo "<meta charset='utf-8'>";
echo "<title>Catálogo generado</title>";
echo "</head>";
echo "<body>";

echo "<h2>✅ Catálogo actualizado</h2>";
echo "<p><strong>Archivo:</strong> {$catalogoFile}</p>";

echo "<h3>Archivos encontrados</h3>";
echo "<pre>";
print_r($archivos);
echo "</pre>";

echo "<h3>Mapa generado</h3>";
echo "<pre>";
print_r($mapa);
echo "</pre>";

echo "<h3>JSON final</h3>";
echo "<pre>";
echo json_encode(
    $resultado,
    JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE
);
echo "</pre>";

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

exit;
?>