<?php
namespace Gestoreasy\Core\Tenant;

use Gestoreasy\Core\Http\Request;

class TenantContext {
    private static ?string $tenantId = null;

    public static function bootstrapFromRequest(Request $req): void {
        $host = $_SERVER['HTTP_HOST'] ?? '';
        $header = $req->header('x-tenant-id');
        if ($header) {
            self::$tenantId = trim($header);
            return;
        }
        // fallback: tentar cookie x-tenant-id quando header não vier (navegação HTML)
        if (!empty($_COOKIE['x-tenant-id'])) {
            self::$tenantId = trim((string)$_COOKIE['x-tenant-id']);
            return;
        }
        // Remover porta se presente
        $hostOnly = $host ? explode(':', $host)[0] : '';
        // Se host for um IP (ex.: 127.0.0.1) ou localhost, usar tenant default
        if ($hostOnly === 'localhost' || ($hostOnly && filter_var($hostOnly, FILTER_VALIDATE_IP))) {
            self::$tenantId = 'default';
            return;
        }
        // Caso contrário, usar subdomínio como tenant quando houver
        $parts = $hostOnly ? explode('.', $hostOnly) : [];
        self::$tenantId = count($parts) > 2 ? $parts[0] : 'default';
    }

    public static function getTenantId(): string {
        return self::$tenantId ?? 'default';
    }
}