<?php
/**
 * BarberFlow SaaS - Acesso via Slug
 * Permite acessar lojas via /loja/SUBDOMINIO
 * Alternativa quando DNS wildcard nao esta configurado
 */
// Sessao sera iniciada pelo config.php abaixo

// Obter o slug da URL
$requestUri = $_SERVER['REQUEST_URI'] ?? '';
$path = parse_url($requestUri, PHP_URL_PATH);

// Extrair o slug do caminho /loja/SLUG/PAGINA
$parts = explode('/', trim($path, '/'));
$subdomain = isset($parts[1]) ? strtolower(trim($parts[1])) : null;
$page = isset($parts[2]) ? strtolower(trim($parts[2])) : 'home';
$param = isset($parts[3]) ? trim($parts[3]) : null;

if (!$subdomain) {
    header('Location: /pages/landing.php');
    exit;
}

// Conectar ao banco e buscar a loja pelo subdominio
require_once __DIR__ . '/../includes/config.php';
$pdo = getDB();

$stmt = $pdo->prepare("
    SELECT s.*, p.name as plan_name, p.features
    FROM stores s
    LEFT JOIN plans p ON s.plan_id = p.id
    WHERE (s.subdomain = ? OR s.slug = ?) AND s.is_active = 1 AND s.deleted_at IS NULL
");
$stmt->execute([$subdomain, $subdomain]);
$store = $stmt->fetch(PDO::FETCH_ASSOC);

// Se loja nao existe, mostrar erro 404
if (!$store) {
    header('HTTP/1.0 404 Not Found');
    include __DIR__ . '/../pages/store-not-found.php';
    exit;
}

// Verificar status da loja (trial expirado, cancelado, etc)
$storeStatus = $store['status'];
if ($storeStatus === 'suspended' || $storeStatus === 'cancelled') {
    include __DIR__ . '/../pages/store-suspended.php';
    exit;
}

// Verificar se trial expirou
if ($storeStatus === 'trial' && $store['trial_ends_at']) {
    $trialEnd = new DateTime($store['trial_ends_at']);
    $now = new DateTime();
    if ($now > $trialEnd) {
        include __DIR__ . '/../pages/trial-expired.php';
        exit;
    }
}

// Definir variaveis globais da loja para usar nas paginas
define('STORE_ID', $store['id']);
define('STORE_NAME', $store['name']);
define('STORE_SLUG', $store['slug']);
define('STORE_SUBDOMAIN', $store['subdomain']);
define('STORE_TYPE', $store['type']);
define('STORE_PLAN', $store['plan_id']);
define('STORE_WHATSAPP', $store['whatsapp_number']);
define('STORE_EMAIL', $store['email']);
define('STORE_PRIMARY_COLOR', $store['primary_color'] ?? '#CCA43B');
define('STORE_LOGO', $store['logo_url'] ?? '');
define('STORE_BANNER', $store['banner_url'] ?? '');
define('STORE_STATUS', $store['status']);
define('STORE_BASE_URL', '/loja/' . $store['subdomain']);

// Passar objeto da loja para a sessao
$_SESSION['current_store'] = $store;

// Definir BARBERFLOW para templates
if (!defined('BARBERFLOW')) {
    define('BARBERFLOW', true);
}

// Determinar tipo de negocio e template
$businessType = $store['business_type'] ?? ($_SESSION['business_type'] ?? 'retail');
$storefrontTemplate = $store['storefront_template'] ?? null;

// Compatibilidade
if ($storefrontTemplate === 'retail-light') {
    $storefrontTemplate = 'retail-modern';
}

// Determinar categoria e nome do template
$businessTypeMap = [
    'retail' => 'retail',
    'service' => 'service',
    'barbershop' => 'service',
    'salon' => 'service',
    'ecommerce' => 'retail',
    'store' => 'retail',
];

$templateCategory = $businessTypeMap[$businessType] ?? 'retail';
$templateName = 'modern';

if ($storefrontTemplate && strpos($storefrontTemplate, '-') !== false) {
    $parts_template = explode('-', $storefrontTemplate, 2);
    if (count($parts_template) === 2) {
        $templateCategory = $parts_template[0];
        $templateName = $parts_template[1];
    }
} elseif ($storefrontTemplate) {
    $templateName = $storefrontTemplate;
}

// Mapeamento de paginas para arquivos de template
$pageRoutes = [
    'home' => 'home.php',
    '' => 'home.php',
    'produtos' => 'produtos.php',
    'produto' => 'produto.php',
    'checkout' => 'checkout.php',
    'carrinho' => 'carrinho.php',
    'favoritos' => 'favoritos.php',
    'login' => 'login.php',
    'registrar' => 'registrar.php',
    'minha-conta' => 'minha-conta.php',
    'meus-pedidos' => 'meus-pedidos.php',
    'meus-dados' => 'meus-dados.php',
    'meus-enderecos' => 'meus-enderecos.php',
    'pedido' => 'pedido.php',
];

// Se for página personalizada, buscar do banco
if ($page === 'pagina' && $param) {
    $_GET['slug'] = $param; // Passar slug para o template
    $pageStmt = $pdo->prepare('SELECT * FROM store_pages WHERE store_id = ? AND slug = ? AND is_active = 1');
    $pageStmt->execute([$store['id'], $param]);
    $customPage = $pageStmt->fetch(PDO::FETCH_ASSOC);
    
    if ($customPage) {
        $page = $customPage; // Passa dados da página para o template
        $templatesDir = __DIR__ . '/../pages/storefront/templates';
        $templateFile = $templatesDir . '/' . $templateCategory . '/' . $templateName . '/pagina.php';
        
        if (file_exists($templateFile)) {
            // Carregar variáveis necessárias
            $currentStoreId = $store['id'];
            $storeName = $store['name'] ?? 'Minha Loja';
            $whatsapp = $store['whatsapp_number'] ?? '';
            $logo = $store['logo_url'] ?? '';
            $banner = $store['banner_url'] ?? '';
            $address = $store['address'] ?? '';
            $city = $store['city'] ?? '';
            $storeSlug = $store['slug'] ?? $store['subdomain'] ?? '';
            $baseUrl = '/loja/' . $storeSlug;
            
            // Carregar configurações customizadas
            $customSettings = [];
            if (!empty($store['template_settings'])) {
                $customSettings = json_decode($store['template_settings'], true) ?? [];
            }
            
            // Header settings para páginas personalizadas
            $headerSettings = $customSettings['header'] ?? [
                'logo_type' => 'text',
                'logo_text' => $store['name'] ?? 'Minha Loja',
                'logo_image' => $store['logo_url'] ?? '',
                'show_search' => true,
                'show_cart' => true,
                'show_wishlist' => true,
                'sticky' => true
            ];
            $faviconUrl = $headerSettings['favicon'] ?? '';
            include $templateFile;
            exit;
        }
    }
}

// Determinar arquivo do template a carregar
$templateFile = null;
$templatesDir = __DIR__ . '/../pages/storefront/templates';

// Se e uma rota conhecida
if (isset($pageRoutes[$page])) {
    $templateFile = $templatesDir . '/' . $templateCategory . '/' . $templateName . '/' . $pageRoutes[$page];
}

// Fallback para home se a pagina nao existe
if (!$templateFile || !file_exists($templateFile)) {
    // Se e produto, tentar pagina de produto
    if ($page === 'produto' && $param) {
        $_GET['slug'] = $param;
        $templateFile = $templatesDir . '/' . $templateCategory . '/' . $templateName . '/produto.php';
    }
    
    // Se ainda nao existe, carregar via home.php (router original)
    if (!$templateFile || !file_exists($templateFile)) {
        include __DIR__ . '/../pages/storefront/home.php';
        exit;
    }
}

// Carregar variaveis necessarias para os templates
$currentStoreId = $store['id'];
$storeName = $store['name'] ?? 'Minha Loja';
$whatsapp = $store['whatsapp_number'] ?? '';
$logo = $store['logo_url'] ?? '';
$banner = $store['banner_url'] ?? '';
$address = $store['address'] ?? '';
$city = $store['city'] ?? '';
$storeSlug = $store['slug'] ?? $store['subdomain'] ?? '';
$baseUrl = '/loja/' . $storeSlug;

// Funcao helper para URLs da loja
if (!function_exists('storeUrl')) {
    function storeUrl($path = '') {
        global $store, $storeSlug, $baseUrl;
        $base = $baseUrl ?? ('/loja/' . $storeSlug);
        return $base . ($path ? '/' . ltrim($path, '/') : '');
    }
}

// Carregar configuracoes customizadas
$customSettings = [];
if (!empty($store['template_settings'])) {
    $customSettings = json_decode($store['template_settings'], true) ?? [];
}

// Cores do template
$availableTemplates = [
    'retail' => [
        'modern' => [
            'colors' => [
                'primary' => '#2563EB',
                'bg' => '#FAFBFC',
                'card' => '#FFFFFF',
                'text' => '#111827',
                'accent' => '#10B981'
            ]
        ],
    ],
    'service' => [
        'classic' => [
            'colors' => [
                'primary' => '#CCA43B',
                'bg' => '#0A0A0A',
                'card' => '#151515',
                'text' => '#FFFFFF',
                'accent' => '#D4AF37'
            ]
        ],
    ]
];

$templateConfig = $availableTemplates[$templateCategory][$templateName] ?? [];
$defaultColors = $templateConfig['colors'] ?? [];

$primaryColor = $defaultColors['primary'] ?? '#2563EB';
$bgColor = $defaultColors['bg'] ?? '#FAFBFC';
$cardColor = $defaultColors['card'] ?? '#FFFFFF';
$textColor = $defaultColors['text'] ?? '#111827';
$accentColor = $defaultColors['accent'] ?? '#10B981';

// Aplicar cores customizadas
if (!empty($customSettings['colors'])) {
    $primaryColor = $customSettings['colors']['primary'] ?? $primaryColor;
    $bgColor = $customSettings['colors']['bg'] ?? $bgColor;
    $cardColor = $customSettings['colors']['card'] ?? $cardColor;
    $textColor = $customSettings['colors']['text'] ?? $textColor;
    $accentColor = $customSettings['colors']['accent'] ?? $accentColor;
}

$isLightTheme = in_array($bgColor, ['#FFFFFF', '#F5F5F5', '#FAFAFA', '#FAFBFC', '#FDF8F5', '#FEF3C7', '#FFFBEB']);
$textSecondary = $isLightTheme ? '#6B7280' : '#B0B0B0';
$borderColor = $isLightTheme ? 'rgba(0,0,0,0.1)' : 'rgba(255,255,255,0.1)';

// Header settings
$headerSettings = $customSettings['header'] ?? [
    'logo_type' => 'text',
    'logo_text' => $store['name'] ?? 'Minha Loja',
    'logo_image' => $store['logo_url'] ?? '',
    'show_search' => true,
    'show_cart' => true,
    'show_wishlist' => true,
    'sticky' => true
];

$faviconUrl = $headerSettings['favicon'] ?? '';

// Hero settings
$heroSettings = $customSettings['hero'] ?? [
    'type' => 'image',
    'background_image' => '',
    'background_video' => '',
    'overlay_opacity' => 50,
    'title' => 'Bem-vindo à nossa loja',
    'subtitle' => 'Confira nossos produtos com os melhores preços',
    'tag' => '',
    'show_tag' => false,
    'show_text' => true,
    'show_button' => true,
    'button_text' => 'Ver Produtos',
    'button_link' => '#produtos',
    'text_align' => 'left',
    'height' => 'medium'
];

// Variavel para o produto se for pagina de produto
if ($page === 'produto' && $param) {
    $productSlug = $param;
}

// Carregar o template
include $templateFile;
exit;
