<?php
// Prevent direct access
if (count(get_included_files()) === 1) {
    http_response_code(403);
    exit('Forbidden');
}

require_once dirname(__DIR__) . '/services/directorio_service.php';
require_once dirname(__DIR__) . '/services/countries.php';

$db  = DB::connect();
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

// ── Sitemap ───────────────────────────────────────────────────────────────────
if ($uri === '/sitemap.xml') {
    $scheme  = (!empty($_SERVER['HTTPS']) || ($_SERVER['HTTP_X_FORWARDED_PROTO'] ?? '') === 'https') ? 'https' : 'http';
    $baseUrl = $scheme . '://' . ($_SERVER['HTTP_HOST'] ?? 'valeai.app');
    header('Content-Type: application/xml; charset=UTF-8');
    header('Cache-Control: public, max-age=3600');
    echo DirectorioService::sitemap($db, $baseUrl);
    exit;
}

// ── Parsear ruta ──────────────────────────────────────────────────────────────
// Rutas nuevas (country-scoped): /ni, /hn, /sv, /us  (+ /{ciudad} + /{ciudad}/{rubro})
// Rutas legacy:  /directorio               → 301 → /ni
//                /directorio/{ciudad}      → 301 → /ni/{ciudad}
//                /directorio/{ciudad}/{r}  → 301 → /ni/{ciudad}/{r}

$dirPaises  = ['ni' => 'NI', 'hn' => 'HN', 'sv' => 'SV', 'us' => 'US'];
$pais       = null;
$paisSlug   = null;
$ciudadSlug = null;
$rubroSlug  = null;

if (preg_match('#^/(ni|hn|sv|us)(?:/([a-z0-9\-]+)(?:/([a-z0-9\-]+))?)?$#', $uri, $m)) {
    $paisSlug   = $m[1];
    $pais       = $dirPaises[$m[1]];
    $ciudadSlug = ($m[2] ?? '') !== '' ? $m[2] : null;
    $rubroSlug  = ($m[3] ?? '') !== '' ? $m[3] : null;

} elseif ($uri === '/directorio') {
    header('Location: /ni', true, 301);
    exit;

} elseif (preg_match('#^/directorio/([a-z0-9\-]+)(?:/([a-z0-9\-]+))?$#', $uri, $m)) {
    $target = '/ni/' . $m[1] . (isset($m[2]) && $m[2] !== '' ? '/' . $m[2] : '');
    header("Location: $target", true, 301);
    exit;

} else {
    http_response_code(404);
    require dirname(__DIR__) . '/views/directorio/404.php';
    exit;
}

// Datos del país para display y links
$countryData = Countries::get($pais);
$paisNombre  = $countryData['name'] ?? $pais;
$dirBase     = "/$paisSlug"; // prefijo de URL para todas las rutas de este directorio

// ── Resolver ciudad ───────────────────────────────────────────────────────────
$ciudadNombre = null;
if ($ciudadSlug) {
    $ciudades = DirectorioService::ciudades($db, $pais);
    foreach (array_keys($ciudades) as $c) {
        if (DirectorioService::slugify($c) === $ciudadSlug) {
            $ciudadNombre = $c;
            break;
        }
    }
    if (!$ciudadNombre) {
        http_response_code(404);
        require dirname(__DIR__) . '/views/directorio/404.php';
        exit;
    }
}

// ── Validar rubro ─────────────────────────────────────────────────────────────
$rubrosValidos = array_keys(DirectorioService::RUBRO_LABELS);
if ($rubroSlug && !in_array($rubroSlug, $rubrosValidos, true)) {
    http_response_code(404);
    require dirname(__DIR__) . '/views/directorio/404.php';
    exit;
}

// ── Query ─────────────────────────────────────────────────────────────────────
$q = trim($_GET['q'] ?? '');

$filtros = ['country' => $pais];
if ($ciudadNombre) $filtros['ciudad'] = $ciudadNombre;
if ($rubroSlug)    $filtros['rubro']  = $rubroSlug;
if ($q !== '')     $filtros['q']      = $q;

$negocios = DirectorioService::listar($db, $filtros);
$ciudades  = DirectorioService::ciudades($db, $pais);

// ── Meta SEO ──────────────────────────────────────────────────────────────────
$scheme  = (!empty($_SERVER['HTTPS']) || ($_SERVER['HTTP_X_FORWARDED_PROTO'] ?? '') === 'https') ? 'https' : 'http';
$baseUrl = $scheme . '://' . ($_SERVER['HTTP_HOST'] ?? 'valeai.app');

if ($ciudadNombre && $rubroSlug) {
    $rubroLabel = DirectorioService::RUBRO_LABELS[$rubroSlug];
    $page_title = "$rubroLabel en $ciudadNombre, $paisNombre — Directorio Vale";
    $meta_desc  = "Encontrá $rubroLabel en $ciudadNombre, $paisNombre que usan Vale AI. Reservá turno por WhatsApp.";
    $canonical  = "$baseUrl$dirBase/$ciudadSlug/$rubroSlug";
} elseif ($ciudadNombre) {
    $page_title = "Negocios en $ciudadNombre, $paisNombre — Directorio Vale";
    $meta_desc  = "Negocios en $ciudadNombre, $paisNombre que atienden por WhatsApp con Vale AI.";
    $canonical  = "$baseUrl$dirBase/$ciudadSlug";
} else {
    $page_title = "Directorio de negocios en $paisNombre — Vale AI";
    $meta_desc  = "Descubrí negocios en $paisNombre que atienden por WhatsApp con inteligencia artificial.";
    $canonical  = "$baseUrl$dirBase";
}

require dirname(__DIR__) . '/views/directorio/index.php';
