<?php

require_once __DIR__ . '/src/AdminRangeHelper.php';

use SiipAvailableIps\AdminRangeHelper;

// Datos simulados del config.json
$config = [
    'useCustomAdminRanges' => true,
    'customAdminRangesJson' => '{"segmentos":[{"segmento":"18","administrativas_iniciales":[{"inicio":1,"hasta":50}],"administrativas_finales":[{"inicio":253,"hasta":255}]},{"segmento":"15","administrativas_iniciales":[{"inicio":2,"hasta":30}],"administrativas_finales":[{"inicio":253,"hasta":255}]},{"segmento":"13","administrativas_iniciales":[{"inicio":2,"hasta":60}],"administrativas_finales":[{"inicio":253,"hasta":255}]}]}'
];

$ip = "172.16.13.52";

echo "Probando IP: $ip\n";
echo "Config JSON: " . $config['customAdminRangesJson'] . "\n";

$parts = explode('.', $ip);
$segment = $parts[2];
echo "Segmento extraído: $segment\n";

$limits = AdminRangeHelper::getSegmentLimits($segment, $config['customAdminRangesJson']);

if ($limits) {
    echo "Límites encontrados para segmento $segment:\n";
    print_r($limits);
} else {
    echo "NO se encontraron límites para segmento $segment\n";
}

$isAdmin = AdminRangeHelper::isAdminIpCustom($ip, $config['customAdminRangesJson']);

echo "Es Admin IP (Custom)? " . ($isAdmin ? "SI" : "NO") . "\n";

// Prueba de la lógica completa de IpSearchService (simulada)
function isAdminIp($ip, $config) {
    if (!empty($config['useCustomAdminRanges']) && !empty($config['customAdminRangesJson'])) {
        $parts = explode('.', $ip);
        if (count($parts) === 4) {
            $segment = $parts[2];
            $limits = AdminRangeHelper::getSegmentLimits($segment, $config['customAdminRangesJson']);
            
            if ($limits !== null) {
                echo "[DEBUG] Usando rangos custom para segmento $segment\n";
                return AdminRangeHelper::isAdminIpCustom($ip, $config['customAdminRangesJson']);
            } else {
                echo "[DEBUG] Fallback a rangos globales para segmento $segment\n";
            }
        }
    }
    return false; // Simplificado
}

$result = isAdminIp($ip, $config);
echo "Resultado final isAdminIp: " . ($result ? "TRUE" : "FALSE") . "\n";
