<?php
session_start();
header('Content-Type: application/json; charset=utf-8');

if (empty($_SESSION['user_id'])) {
    http_response_code(401);
    echo json_encode(['success' => false, 'message' => 'No autorizado']);
    exit;
}

require_once __DIR__ . '/../models/model_pedido.php';

$id = isset($_POST['id_pedido']) ? (int)$_POST['id_pedido'] : 0;
$estadoPago = isset($_POST['estado_pago']) && $_POST['estado_pago'] !== ''
    ? strtoupper(trim($_POST['estado_pago'])) : null;
$estadoEntrega = isset($_POST['estado_entrega']) && $_POST['estado_entrega'] !== ''
    ? strtoupper(trim($_POST['estado_entrega'])) : null;

if ($id <= 0) {
    echo json_encode(['success' => false, 'message' => 'ID inválido']);
    exit;
}

$pagosValidos = ['PENDIENTE', 'PAGADO', 'RECHAZADO', 'EFECTIVO_PENDIENTE'];
$entregasValidas = ['PENDIENTE', 'EN_PREPARACION', 'EN_CAMINO', 'ENTREGADO', 'CANCELADO'];

if ($estadoPago !== null && !in_array($estadoPago, $pagosValidos, true)) {
    echo json_encode(['success' => false, 'message' => 'Estado de pago no válido']);
    exit;
}
if ($estadoEntrega !== null && !in_array($estadoEntrega, $entregasValidas, true)) {
    echo json_encode(['success' => false, 'message' => 'Estado de entrega no válido']);
    exit;
}

if ($estadoPago === null && $estadoEntrega === null) {
    echo json_encode(['success' => false, 'message' => 'Indica al menos un estado a actualizar']);
    exit;
}

$pedidoModel = new Pedido();
if ($pedidoModel->updateEstados($id, $estadoPago, $estadoEntrega)) {
    $actualizado = $pedidoModel->getPedidoById($id);
    echo json_encode([
        'success' => true,
        'message' => 'Estados actualizados',
        'pedido' => [
            'estado_pago' => $actualizado['estado_pago'],
            'estado_entrega' => $actualizado['estado_entrega'],
            'estado' => $actualizado['estado'],
        ],
    ]);
} else {
    echo json_encode(['success' => false, 'message' => 'No se pudo actualizar']);
}
