<?php
/**
 * pedidos-stock-centros.php
 * GET  → devuelve centros con stock=1 (pueden ser origen de un pedido)
 * GET ?idcd=X → devuelve además el stock disponible del centro X y sus destinos permitidos
 */
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Authorization, Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(204); exit; }

require_once __DIR__ . '/../../config.php';
$db = getDB();

// ── Validar token ─────────────────────────────────────────────────────────────
$headers    = getallheaders();
$authHeader = $headers['Authorization'] ?? $headers['authorization'] ?? '';
if (!preg_match('/Bearer\s+(.+)/i', $authHeader, $m)) {
    http_response_code(401);
    echo json_encode(['ok' => false, 'error' => 'Token requerido']);
    exit;
}
$token = trim($m[1]);
$stmtTok = $db->prepare("SELECT idusuarios_sist FROM admin_sessions WHERE token = ? AND expira > NOW()");
$stmtTok->execute([$token]);
if (!$stmtTok->fetch()) {
    http_response_code(401);
    echo json_encode(['ok' => false, 'error' => 'Sesión inválida o expirada']);
    exit;
}

// ── Centros que pueden ser origen: usuarios_ci con stock = 1 ─────────────────
$centros = $db->query("
    SELECT uc.idusuarios_ci, uc.nombre,
           ce.transferirA
    FROM usuarios_ci uc
    LEFT JOIN centros_entrega ce ON ce.idcd = uc.idusuarios_ci
    WHERE uc.stock = 1
    ORDER BY uc.idusuarios_ci
")->fetchAll(PDO::FETCH_ASSOC);

// Convertir transferirA (CSV) a array de enteros
foreach ($centros as &$c) {
    $raw = trim($c['transferirA'] ?? '');
    $c['destinos_ids'] = $raw !== '' ? array_map('intval', explode(',', $raw)) : [];
    unset($c['transferirA']);
}
unset($c);

// ── Si se pide el stock de un centro específico ───────────────────────────────
$idcd = isset($_GET['idcd']) ? (int)$_GET['idcd'] : null;
$stockCentro     = [];
$destinosDetalle = [];

if ($idcd !== null) {
    // Stock disponible del centro
    $stmtStock = $db->prepare("
        SELECT s.idprod, p.nombreProd, p.presentacion, s.cantidad
        FROM stock s
        JOIN productos p ON p.id_prod = s.idprod
        WHERE s.idcd = ? AND s.cantidad > 0 AND p.activo = 'SI'
        ORDER BY p.nombreProd
    ");
    $stmtStock->execute([$idcd]);
    $stockCentro = $stmtStock->fetchAll(PDO::FETCH_ASSOC);

    // Destinos permitidos para este centro
    $stmtCE = $db->prepare("SELECT transferirA FROM centros_entrega WHERE idcd = ?");
    $stmtCE->execute([$idcd]);
    $row = $stmtCE->fetch(PDO::FETCH_ASSOC);
    $raw = trim($row['transferirA'] ?? '');
    if ($raw !== '') {
        $ids = array_map('intval', explode(',', $raw));
        if (count($ids) > 0) {
            $placeholders = implode(',', array_fill(0, count($ids), '?'));
            $stmtDest = $db->prepare("
                SELECT idusuarios_ci, nombre FROM usuarios_ci
                WHERE idusuarios_ci IN ($placeholders)
                ORDER BY nombre
            ");
            $stmtDest->execute($ids);
            $destinosDetalle = $stmtDest->fetchAll(PDO::FETCH_ASSOC);
        }
    }
}

echo json_encode([
    'ok'       => true,
    'centros'  => $centros,
    'stock'    => $stockCentro,
    'destinos' => $destinosDetalle,
], JSON_UNESCAPED_UNICODE);
