<?php
/**
 * agrupacion-centros.php
 * GET → devuelve centros con tipo_usuario IN (2, 3) que pueden generar agrupaciones
 */
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, OPTIONS');
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;
}

try {
    $db->exec("SET NAMES utf8mb4 COLLATE utf8mb4_general_ci");
    $centros = $db->query("
        SELECT idusuarios_ci, nombre, direccion, telefono
        FROM usuarios_ci
        WHERE tipo_usuario IN (2, 3)
        ORDER BY nombre
    ")->fetchAll(PDO::FETCH_ASSOC);

    foreach ($centros as &$c) {
        $c['idusuarios_ci'] = (int)$c['idusuarios_ci'];
    }
    unset($c);

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

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