<?php
/**
 * compra-centros-entrega.php
 * GET ?cd_id=X → devuelve los centros de entrega autorizados para el centro generador X
 *                 según el campo entregaA de la tabla centros_entrega (CSV de IDs separados por coma)
 */
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' => 'Sesion invalida o expirada']);
    exit;
}

$cdId = (int)($_GET['cd_id'] ?? 0);
if ($cdId <= 0) {
    http_response_code(400);
    echo json_encode(['ok' => false, 'error' => 'cd_id requerido']);
    exit;
}

try {
    // Obtener el campo entregaA del centro generador
    $stmt = $db->prepare("SELECT entregaA FROM centros_entrega WHERE idcd = ? LIMIT 1");
    $stmt->execute([$cdId]);
    $row = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$row || empty(trim($row['entregaA']))) {
        // Sin configuración: devolver lista vacía
        echo json_encode(['ok' => true, 'centros' => []]);
        exit;
    }

    // entregaA es un CSV de IDs: "8,12,15" → [8, 12, 15]
    $ids = array_filter(
        array_map('intval', explode(',', $row['entregaA'])),
        fn($id) => $id > 0
    );

    if (empty($ids)) {
        echo json_encode(['ok' => true, 'centros' => []]);
        exit;
    }

    // Obtener los datos de esos centros
    $placeholders = implode(',', array_fill(0, count($ids), '?'));
    $stmtC = $db->prepare("
        SELECT idusuarios_ci, nombre, tipo_usuario, direccion, telefono
        FROM usuarios_ci
        WHERE idusuarios_ci IN ($placeholders)
        ORDER BY nombre
    ");
    $stmtC->execute(array_values($ids));
    $centros = $stmtC->fetchAll(PDO::FETCH_ASSOC);

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

} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['ok' => false, 'error' => 'Error: ' . $e->getMessage()]);
}
