<?php
/**
 * Storefront Home - Router Principal
 * Sistema Multi-Template: Suporta múltiplos templates por categoria
 * 
 * Estrutura de Templates:
 * templates/
 *   retail/           (lojas de varejo)
 *     modern/         (template atual)
 *   service/          (barbearias/salões)
 *     classic/
 *     elegant/
 */

if (!defined('BARBERFLOW')) {
    define('BARBERFLOW', true);
}

require_once __DIR__ . '/../../includes/config.php';

try {
    $pdo = getDB();
} catch (Exception $e) {
    die("Erro ao conectar ao banco de dados: " . $e->getMessage());
}

// ============================================
// CARREGAR DADOS DA LOJA
// ============================================

$store = $_SESSION['current_store'] ?? null;

if (!$store && defined('STORE_ID')) {
    $storeStmt = $pdo->prepare("SELECT * FROM stores WHERE id = ? LIMIT 1");
    $storeStmt->execute([STORE_ID]);
    $store = $storeStmt->fetch(PDO::FETCH_ASSOC);
    if ($store) $_SESSION['current_store'] = $store;
}

if (!$store) {
    $storeStmt = $pdo->prepare("SELECT * FROM stores WHERE is_active = 1 ORDER BY id ASC LIMIT 1");
    $storeStmt->execute();
    $store = $storeStmt->fetch(PDO::FETCH_ASSOC);
    if ($store) $_SESSION['current_store'] = $store;
}

if (!$store) {
    die("Loja não encontrada.");
}

// ============================================
// DETERMINAR TIPO DE NEGÓCIO E TEMPLATE
// ============================================

$businessType = $store['business_type'] ?? ($_SESSION['business_type'] ?? 'service');

// Template selecionado pelo lojista (ex: 'retail-modern', 'service-classic')
$storefrontTemplate = $store['storefront_template'] ?? null;

// ============================================
// MAPEAMENTO DE TEMPLATES
// ============================================

// Categorias de negócio -> pasta base
$businessTypeMap = [
    'retail' => 'retail',
    'service' => 'service',
    'barbershop' => 'service',
    'salon' => 'service',
    'ecommerce' => 'retail',
    'store' => 'retail',
];

// Templates disponíveis por categoria
$availableTemplates = [
    'retail' => [
        'modern' => [
            'name' => 'Modern',
            'description' => 'Design moderno e elegante para lojas de varejo',
            'preview' => '/assets/templates/retail-modern.jpg',
            'colors' => [
                'primary' => '#2563EB',
                'bg' => '#FAFBFC',
                'card' => '#FFFFFF',
                'text' => '#111827',
                'accent' => '#10B981'
            ]
        ],
    ],
    'service' => [
        'classic' => [
            'name' => 'Classic',
            'description' => 'Estilo clássico para barbearias',
            'preview' => '/assets/templates/service-classic.jpg',
            'colors' => [
                'primary' => '#CCA43B',
                'bg' => '#0A0A0A',
                'card' => '#151515',
                'text' => '#FFFFFF',
                'accent' => '#D4AF37'
            ]
        ],
        'elegant' => [
            'name' => 'Elegant',
            'description' => 'Design elegante para salões',
            'preview' => '/assets/templates/service-elegant.jpg',
            'colors' => [
                'primary' => '#D4A5A5',
                'bg' => '#FDF8F5',
                'card' => '#FFFFFF',
                'text' => '#2D2D2D',
                'accent' => '#E8C4C4'
            ]
        ]
    ]
];

// ============================================
// RESOLVER TEMPLATE A USAR
// ============================================

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

// Parsear storefront_template (formato: 'retail-modern' ou 'modern')
if ($storefrontTemplate) {
    // Compatibilidade: converter retail-light para retail-modern
    if ($storefrontTemplate === 'retail-light') {
        $storefrontTemplate = 'retail-modern';
    }
    
    if (strpos($storefrontTemplate, '-') !== false) {
        $parts = explode('-', $storefrontTemplate, 2);
        if (count($parts) === 2) {
            $templateCategory = $parts[0];
            $templateName = $parts[1];
        }
    } else {
        // Apenas nome do template (ex: 'modern')
        $templateName = $storefrontTemplate;
    }
}

// Validar se o template existe
if (!isset($availableTemplates[$templateCategory][$templateName])) {
    // Fallback para template padrão da categoria
    $templateName = array_key_first($availableTemplates[$templateCategory]) ?? 'modern';
}

// ============================================
// CONFIGURAR CORES DO TEMPLATE
// ============================================

$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';

$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)';
$textMuted = $isLightTheme ? '#9CA3AF' : '#707070';

// ============================================
// CARREGAR CONFIGURAÇÕES PERSONALIZADAS
// ============================================

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

// Aplicar cores personalizadas (sobrescrevem as do template)
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;
    $textSecondary = $customSettings['colors']['text_secondary'] ?? $textSecondary;
}

// Configurações do Cabeçalho
$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
];

// Base URL para navegação
$storeSlug = $store['slug'] ?? $store['subdomain'] ?? '';
$baseUrl = function_exists('get_store_url') ? get_store_url($store) : '/loja/' . $storeSlug;

// Menu de Navegação
$menuItems = $customSettings['menu'] ?? [
    ['id' => 1, 'name' => 'Início', 'link' => $baseUrl, 'icon' => 'solar:home-2-bold'],
    ['id' => 2, 'name' => 'Produtos', 'link' => $baseUrl . '/produtos', 'icon' => 'solar:bag-3-bold'],
    ['id' => 3, 'name' => 'Ofertas', 'link' => $baseUrl . '#ofertas', 'icon' => 'solar:tag-price-bold'],
    ['id' => 4, 'name' => 'Contato', 'link' => $baseUrl . '#contato', 'icon' => 'solar:phone-bold']
];

if (empty($headerSettings['logo_text'])) {
    $headerSettings['logo_text'] = $store['name'] ?? 'Minha Loja';
}

// Favicon URL
$faviconUrl = $headerSettings['favicon'] ?? '';

// ============================================

// Configurações do Hero Banner
$heroSettings = $customSettings['hero'] ?? [
    'type' => 'gradient',
    'title' => 'Descubra produtos incríveis para você',
    'subtitle' => 'Qualidade premium, preços especiais e entrega rápida. Aproveite nossas ofertas exclusivas.',
    'button_text' => 'Ver Produtos',
    'button_link' => '#produtos',
    'show_button' => true,
    'show_text' => true,
    'background_image' => $banner ?? '',
    'background_images' => [],
    'background_video' => '',
    'overlay_opacity' => 50,
    'text_align' => 'left',
    'height' => 'medium',
    'slider_autoplay' => true,
    'slider_interval' => 5000
];

// DADOS DA LOJA PARA OS TEMPLATES
// ============================================

$storeName = $store['name'] ?? 'Minha Loja';
$storeType = ($store['type'] ?? 'barbershop') === 'barbershop' ? 'Barbearia' : 'Salão';
$whatsapp = $store['whatsapp_number'] ?? '';
$logo = $store['logo_url'] ?? '';
$banner = $store['banner_url'] ?? '';
$address = $store['address'] ?? '';
$city = $store['city'] ?? '';
$currentStoreId = $store['id'] ?? 1;

// ============================================
// CARREGAR TEMPLATE
// ============================================

$templatesDir = __DIR__ . '/templates';
$templateFile = $templatesDir . '/' . $templateCategory . '/' . $templateName . '/home.php';

// Fallback hierárquico
if (!file_exists($templateFile)) {
    // Tentar template padrão da categoria
    $templateFile = $templatesDir . '/' . $templateCategory . '/modern/home.php';
    
    if (!file_exists($templateFile)) {
        $templateFile = $templatesDir . '/' . $templateCategory . '/classic/home.php';
    }
    
    if (!file_exists($templateFile)) {
        // Último fallback: retail/modern
        $templateFile = $templatesDir . '/retail/modern/home.php';
    }
    
    if (!file_exists($templateFile)) {
        die("Template não encontrado: " . $templateCategory . '/' . $templateName);
    }
}

// Variável para o template saber qual é seu caminho
// Variáveis para compatibilidade com templates
$storeSlug = $store['slug'] ?? $store['subdomain'] ?? '';
$baseUrl = function_exists('get_store_url') ? get_store_url($store) : '/loja/' . $storeSlug;

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

$currentTemplateDir = dirname($templateFile);
$currentTemplateName = $templateName;
$currentTemplateCategory = $templateCategory;

include $templateFile;
