<?php
header('Content-Type: application/json');

if (session_status() !== PHP_SESSION_ACTIVE) {
    session_start();
}

require_once __DIR__ . '/../../includes/session_control.php';
require_once __DIR__ . '/../../cotizaciones/api/_node.php';

$action = (string)($_REQUEST['action'] ?? '');
$provider = (string)($_REQUEST['provider'] ?? '');

if ($provider !== 'marpico') {
    echo json_encode(['ok' => false, 'error' => ['message' => 'Proveedor no soportado']]);
    exit;
}

$token = cpn_node_token_or_fail();
$base = cpn_node_api_base();

if ($action === 'status') {
    $r = cpn_node_request('GET', $base . '/api/integrations/marpico/status', $token);
    if (!isset($r['ok']) || $r['ok'] !== true) {
        $msg = $r['error']['message'] ?? 'Error consultando estado en Node';
        echo json_encode(['ok' => false, 'error' => ['message' => $msg]]);
        exit;
    }

    echo json_encode(['ok' => true, 'data' => $r['data'] ?? null]);
    exit;
}

if ($action === 'progress') {
    $r = cpn_node_request('GET', $base . '/api/integrations/marpico/progress', $token);
    if (!isset($r['ok']) || $r['ok'] !== true) {
        $msg = $r['error']['message'] ?? 'Error consultando progreso en Node';
        echo json_encode(['ok' => false, 'error' => ['message' => $msg]]);
        exit;
    }

    echo json_encode(['ok' => true, 'data' => $r['data'] ?? null]);
    exit;
}

if ($action === 'run') {
    $r = cpn_node_request('POST', $base . '/api/integrations/marpico/sync?async=1', $token, []);
    if (!isset($r['ok']) || $r['ok'] !== true) {
        $msg = $r['error']['message'] ?? 'Error ejecutando sync en Node';
        echo json_encode(['ok' => false, 'error' => ['message' => $msg]]);
        exit;
    }

    echo json_encode(['ok' => true, 'data' => $r['data'] ?? null]);
    exit;
}

echo json_encode(['ok' => false, 'error' => ['message' => 'Acción no válida']]);
