<?php
// Router simple basado en ?r=nombre (sin .php)
$route = isset($_GET['r']) ? preg_replace('/[^a-zA-Z0-9_\-]/', '', $_GET['r']) : '';
if (!$route) {
    require_once __DIR__ . '/bootstrap.php';
    json_error('Ruta no especificada', 404);
}

$map = [
    // Dispositivos (consolidado)
    'get_dispositivos'   => 'api_dispositivos.php',
    'add_dispositivo'    => 'api_dispositivos.php',
    'update_dispositivo' => 'api_dispositivos.php',
    'delete_dispositivo' => 'api_dispositivos.php',
    'edit_dispositivo'   => 'api_dispositivos.php',

    // Sectores (consolidado)
    'get_sectores'   => 'api_sectores.php',
    'add_sector'     => 'api_sectores.php',
    'update_sector'  => 'api_sectores.php',
    'delete_sector'  => 'api_sectores.php',

    // Puertos (consolidado)
    'get_puertos'     => 'api_puertos.php',
    'update_puertos'  => 'api_puertos.php',
    'asignar_puertos' => 'api_puertos.php',

    // Reglas de automatización
    'get_reglas'    => 'api_reglas.php',
    'save_reglas'   => 'api_reglas.php',
    'delete_regla'  => 'api_reglas.php',
    'toggle_regla'  => 'api_reglas.php',

    // Otros
    'add_entidad'  => 'add_entidad.php',
    'mqtt_publish' => 'mqtt_publish.php',
    'mqtt_config'  => 'mqtt_config.php',
    'login'        => 'login.php',
    'logout'       => 'logout.php',
    'me'           => 'me.php',
    'estado'       => 'estado.php'
];

if (!isset($map[$route])) {
    require_once __DIR__ . '/bootstrap.php';
    json_error('Ruta no encontrada', 404);
}

require_once __DIR__ . '/bootstrap.php';

$whitelist = ['login', 'estado'];
if (!in_array($route, $whitelist, true)) {
    if (session_status() !== PHP_SESSION_ACTIVE) {
        session_start();
    }
    if (empty($_SESSION['user'])) {
        json_error('No autenticado', 401);
    }
}

$target = __DIR__ . '/' . $map[$route];
if (!file_exists($target)) {
    json_error('Handler no disponible', 500);
}

// Incluir el handler seleccionado
require $target;
