<?php
session_start();
include '../includes/session_control.php';
require_once __DIR__ . '/../cotizaciones/api/_node.php';

header('Content-Type: application/json; charset=utf-8');

function rrmdir_safe($dir)
{
    if (!is_dir($dir)) return true;
    $it = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS),
        RecursiveIteratorIterator::CHILD_FIRST
    );
    foreach ($it as $file) {
        /** @var SplFileInfo $file */
        if ($file->isDir()) {
            @rmdir($file->getPathname());
        } else {
            @unlink($file->getPathname());
        }
    }
    return @rmdir($dir);
}

$idGasto = intval($_POST['idGasto'] ?? $_GET['idGasto'] ?? 0);
$idPago = intval($_POST['idPago'] ?? $_GET['idPago'] ?? 0);
$idOrigen = intval($_POST['idOrigen'] ?? $_GET['idOrigen'] ?? 4);
$deleteFiles = intval($_POST['deleteFiles'] ?? $_GET['deleteFiles'] ?? 0) ? 1 : 0;

if (!$idGasto || !$idPago) {
    http_response_code(400);
    echo json_encode(['ok' => false, 'error' => ['message' => 'Parámetros inválidos']]);
    exit;
}

$token = cpn_node_token_or_fail();
$base = cpn_node_api_base();

$payload = [
    'idGasto' => $idGasto,
    'idPago' => $idPago,
    'idOrigen' => $idOrigen,
];

$resp = cpn_node_request('POST', $base . '/api/gastos/pagos/delete', $token, $payload);

if (!($resp['ok'] ?? false)) {
    $msg = $resp['error']['message'] ?? 'No se pudo eliminar el pago';
    http_response_code(intval($resp['status'] ?? 500));
    echo json_encode(['ok' => false, 'error' => ['message' => $msg]]);
    exit;
}

$deletedPago = (bool)($resp['meta']['deletedPago'] ?? false);
$meta = [
    'deletedPago' => $deletedPago,
    'idPago' => $idPago,
    'deletedFiles' => false,
    'warnings' => [],
];

if ($deleteFiles) {
    if (!$deletedPago) {
        $meta['warnings'][] = 'No se borraron soportes porque el pago aún tiene cruces.';
    } else {
        $baseDir = realpath(__DIR__ . '/../archivoDigital/soportePagos');
        $targetDir = __DIR__ . '/../archivoDigital/soportePagos/' . $idPago;
        $realTarget = realpath($targetDir);

        // Si no existe, lo consideramos "borrado".
        if ($realTarget === false) {
            $meta['deletedFiles'] = true;
        } else {
            // Asegurar que el target esté dentro de soportePagos.
            if ($baseDir && strpos($realTarget, $baseDir) === 0) {
                $meta['deletedFiles'] = rrmdir_safe($realTarget);
                if (!$meta['deletedFiles']) {
                    $meta['warnings'][] = 'No se pudieron borrar los soportes del pago del disco.';
                }
            } else {
                $meta['warnings'][] = 'Ruta de soportes inválida; no se borraron archivos.';
            }
        }
    }
}

echo json_encode(['ok' => true, 'data' => $resp['data'] ?? null, 'meta' => $meta]);
exit;
