<?php
/**
 * SAC 2026 - DIGITAL VAULT ENGINE v1.0
 * Arquitecto: Andres Mathison
 * Objetivo: Escanear y servir archivos del expediente digital categorizados por mes.
 */
require_once 'config.php';

if (!isset($_SESSION['user_id'])) response(["error" => "No autorizado"], 401);

$vaultRoot = dirname(__DIR__) . '/facturas';
$baseUrl = DOMAIN . BASE_PATH . 'facturas';

// Crear directorio raíz si no existe
if (!is_dir($vaultRoot)) {
    mkdir($vaultRoot, 0755, true);
}

$requestedFolder = $_GET['folder'] ?? null;

try {
    if ($requestedFolder) {
        // --- ESCANEAR CONTENIDO DE UNA CARPETA MENSUAL ---
        $folderPath = $vaultRoot . '/' . basename($requestedFolder);
        if (!is_dir($folderPath)) response(["error" => "Carpeta no encontrada"], 404);

        $files = [];
        $items = array_diff(scandir($folderPath), array('.', '..'));

        foreach ($items as $item) {
            $ext = strtolower(pathinfo($item, PATHINFO_EXTENSION));
            if (!in_array($ext, ['jpg', 'jpeg', 'png', 'pdf'])) continue;

            $filePath = $folderPath . '/' . $item;
            $size = round(filesize($filePath) / 1024, 2) . ' KB';
            
            // --- MOTOR DE PARSEO DE NOMENCLATURA SAC 2026 ---
            // Formato esperado: ID_REF_PROVIDER_AMOUNT.ext
            $parts = explode('_', pathinfo($item, PATHINFO_FILENAME));
            
            $files[] = [
                "name" => $item,
                "path" => DOMAIN . BASE_PATH . 'facturas/' . $requestedFolder . '/' . $item,
                "size" => $size,
                "id" => $parts[0] ?? null,
                "ref" => $parts[1] ?? null,
                "provider" => $parts[2] ?? null,
                "amount" => $parts[3] ?? null
            ];
        }

        response(["success" => true, "files" => $files]);
    } else {
        // --- LISTAR CARPETAS MENSUALES ---
        $folders = [];
        $items = array_diff(scandir($vaultRoot), array('.', '..'));

        foreach ($items as $item) {
            if (is_dir($vaultRoot . '/' . $item)) {
                $folders[] = $item;
            }
        }

        // Ordenar carpetas (Cronológico invertido sugerido)
        rsort($folders);

        response(["success" => true, "folders" => $folders]);
    }
} catch (Exception $e) {
    response(["error" => $e->getMessage()], 500);
}
?>