<?php
session_start();
include '../includes/session_control.php';
require_once '../cotizaciones/api/_node.php';
require_once __DIR__ . '/../includes/user_activity_log.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') exit;
$action = $_POST['action'] ?? '';

$token = cpn_node_token_or_fail();
$base = cpn_node_api_base();

if ($action === 'add') {
    $idProducto = intval($_POST['idProducto'] ?? 0);
    if (!$idProducto) {
        echo json_encode(['status' => 'error', 'msg' => 'ID inválido']);
        exit;
    }
    $r = cpn_node_request('POST', $base . '/api/productos/' . urlencode((string)$idProducto) . '/escala-proveedor/add', $token, []);
    if (!empty($r['ok'])) {
        $newId = $r['data']['id'] ?? 0;
        cpn_activity_log_event(
            'Productos',
            'productos.escala_add',
            'Agregó escala de proveedor al producto #' . $idProducto,
            'producto',
            $idProducto,
            ['idEscala' => (int)$newId]
        );
        echo json_encode(['status' => 'ok', 'id' => $newId]);
        exit;
    }
    echo json_encode(['status' => 'error', 'msg' => ($r['error']['message'] ?? 'Error')]);
} elseif ($action === 'delete') {
    $id = intval($_POST['id'] ?? 0);
    if (!$id) {
        echo json_encode(['status' => 'error', 'msg' => 'ID inválido']);
        exit;
    }
    $r = cpn_node_request('DELETE', $base . '/api/productos/escala-proveedor/' . urlencode((string)$id), $token, null);
    if (!empty($r['ok'])) {
        cpn_activity_log_event(
            'Productos',
            'productos.escala_delete',
            'Eliminó escala de proveedor #' . $id,
            'producto_escala',
            $id
        );
        echo json_encode(['status' => 'ok']);
        exit;
    }
    echo json_encode(['status' => 'error', 'msg' => ($r['error']['message'] ?? 'Error')]);
} else {
    // update field
    $id    = intval($_POST['id']);
    $field = $_POST['field'];
    $val   = $_POST['value'];
    if (!$id || !in_array($field, ['cantDesde', 'precioAntesImpuestos'], true)) {
        echo json_encode(['status' => 'error', 'msg' => 'Parámetros inválidos']);
        exit;
    }

    $r = cpn_node_request('PATCH', $base . '/api/productos/escala-proveedor/' . urlencode((string)$id), $token, [
        'field' => $field,
        'value' => $val,
    ]);

    if (!empty($r['ok'])) {
        cpn_activity_log_event(
            'Productos',
            'productos.escala_update_field',
            'Actualizó escala de proveedor #' . $id . ' (campo: ' . $field . ')',
            'producto_escala',
            $id,
            ['field' => $field]
        );
        echo json_encode(['status' => 'ok']);
        exit;
    }
    echo json_encode(['status' => 'error', 'msg' => ($r['error']['message'] ?? 'Error')]);
}
