<?php
/**
 * Configurações da Loja - MontaLoja
 *
 * Include este arquivo em qualquer página da storefront para carregar
 * automaticamente todas as configurações da loja e do template.
 *
 * USO:
 * require_once __DIR__ . '/includes/store-config.php';
 *
 * VARIÁVEIS DISPONÍVEIS APÓS O INCLUDE:
 * - $store (array) - Dados completos da loja
 * - $pdo (PDO) - Conexão com banco de dados
 * - $currentStoreId (int) - ID da loja
 * - $storeSlug (string) - Slug da loja
 * - $storeName (string) - Nome da loja
 * - $logo (string) - URL do logo
 * - $banner (string) - URL do banner
 * - $whatsapp (string) - WhatsApp da loja
 * - $address (string) - Endereço
 * - $city (string) - Cidade
 * - $customSettings (array) - Todas as configurações personalizadas
 * - $headerSettings (array) - Configurações do cabeçalho
 * - $footerSettings (array) - Configurações do rodapé
 * - $logoType (string) - Tipo de logo: 'text', 'image' ou 'both'
 * - $logoImage (string) - URL da imagem do logo
 * - $logoText (string) - Texto do logo
 * - $menuItems (array) - Itens do menu
 * - $socialLinks (array) - Links das redes sociais
 * - $primaryColor (string) - Cor primária
 * - $bgColor (string) - Cor de fundo
 * - $textColor (string) - Cor do texto
 */

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

// Carregar configuração do banco de dados
// Caminho: /pages/storefront/includes/ → /includes/config.php (3 níveis)
require_once __DIR__ . '/../../../../../../includes/config.php';

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

// ============================================
// IDENTIFICAR LOJA PELA URL
// ============================================

$requestUri = $_SERVER['REQUEST_URI'];
$pathParts = explode('/', trim(parse_url($requestUri, PHP_URL_PATH), '/'));
$host = $_SERVER['HTTP_HOST'];

// Domínios base (produção e staging) - usa SYSTEM_DOMAIN do .env ou fallback
$_systemDomain = getenv('SYSTEM_DOMAIN') ?: 'tiuoficial.com.br';
$baseDomains = [$_systemDomain, 'dev.' . $_systemDomain];

// Extrair subdomain corretamente
$subdomain = null;
$hostParts = explode('.', $host);

// Verificar se é um subdomínio de loja (ex: minhaloja.tiuoficial.com.br ou minhaloja.seudominio.com.br)
if (count($hostParts) >= 3) {
    // Pode ser: loja.tiuoficial.com.br ou loja.seudominio.com.br
    $potentialSubdomain = $hostParts[0];
    
    // Verificar se não é 'app' ou 'www'
    if (!in_array($potentialSubdomain, ['app', 'www', 'api', 'admin'])) {
        $subdomain = $potentialSubdomain;
    }
} elseif (count($hostParts) == 2) {
    // Pode ser loja.localhost ou loja.seudominio.com (dois segmentos)
    $potentialSubdomain = $hostParts[0];
    if (!in_array($potentialSubdomain, ['montaloja', 'app', 'www', 'api', 'admin'])) {
        $subdomain = $potentialSubdomain;
    }
}

$store = null;

// Tentar buscar por subdomínio primeiro (se existir)
if ($subdomain) {
    $stmt = $pdo->prepare("SELECT * FROM stores WHERE (slug = ? OR subdomain = ?) AND is_active = 1 AND deleted_at IS NULL");
    $stmt->execute([$subdomain, $subdomain]);
    $store = $stmt->fetch(PDO::FETCH_ASSOC);
}

// Se não encontrou por subdomain, tentar pela URL /loja/{slug}
if (!$store) {
    if (isset($pathParts[0]) and $pathParts[0] === 'loja' and isset($pathParts[1])) {
        $slug = $pathParts[1];
        $stmt = $pdo->prepare("SELECT * FROM stores WHERE (slug = ? OR subdomain = ?) AND is_active = 1 AND deleted_at IS NULL");
        $stmt->execute([$slug, $slug]);
        $store = $stmt->fetch(PDO::FETCH_ASSOC);
    }
}

// Se ainda não encontrou, redirecionar para landing page
if (!$store) {
    header('Location: /pages/landing.php');
    exit;
}

// ============================================
// VARIÁVEIS BÁSICAS DA LOJA
// ============================================

$currentStoreId = $store['id'];
$storeSlug = $store['slug'];
$storeName = $store['name'];
$logo = $store['logo'] ?? '';
$banner = $store['banner'] ?? '';
$whatsapp = $store['whatsapp'] ?? '';
$address = $store['address'] ?? '';
$city = $store['city'] ?? '';
$email = $store['email'] ?? '';
$phone = $store['phone'] ?? '';
$instagram = $store['instagram'] ?? '';
$facebook = $store['facebook'] ?? '';

// ============================================
// CARREGAR CONFIGURAÇÕES DO TEMPLATE
// ============================================

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

// ============================================
// CONFIGURAÇÕES DO CABEÇALHO (HEADER)
// ============================================

$headerSettings = $customSettings['header'] ?? [
    'logo_type' => 'text',
    'logo_text' => $storeName,
    'logo_image' => $logo,
    'show_search' => true,
    'show_cart' => true,
    'show_wishlist' => true,
    'sticky' => true
];

// Variáveis para o header.php
$logoType = $headerSettings['logo_type'] ?? 'text';
$logoImage = $headerSettings['logo_image'] ?? $logo;
$logoText = $headerSettings['logo_text'] ?? $storeName;

// ============================================
// CONFIGURAÇÕES DO RODAPÉ (FOOTER)
// ============================================

$footerSettings = $customSettings['footer'] ?? [
    'show_social' => true,
    'show_newsletter' => true,
    'show_payment_icons' => true,
    'copyright_text' => '© ' . date('Y') . ' ' . $storeName . '. Todos os direitos reservados.',
    'description' => ''
];

// ============================================
// CONFIGURAÇÕES DO HERO/DESTAQUE
// ============================================

$heroSettings = $customSettings['hero'] ?? [
    'type' => 'gradient',
    'title' => 'Bem-vindo à nossa loja',
    'subtitle' => 'Encontre os melhores produtos com os melhores preços',
    '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
];

// ============================================
// MENU DINÂMICO
// ============================================

// URL base da loja usando função global
$baseUrl = function_exists('get_store_url') ? get_store_url($store) : '/loja/' . $storeSlug;

// Itens fixos que SEMPRE aparecem no menu (Início e Produtos)
$fixedMenuItems = [
    ['id' => 1, 'name' => 'Início', 'link' => $baseUrl, 'icon' => 'solar:home-2-bold'],
    ['id' => 2, 'name' => 'Produtos', 'link' => $baseUrl . '/produtos', 'icon' => 'solar:bag-3-bold'],
];

// Itens customizáveis do usuário - filtrar Início e Produtos se existirem nos dados salvos
$savedMenuItems = $customSettings['menu'] ?? [];
$customMenuItems = [];

// Se há itens salvos, filtrar os que não são fixos (Início/Produtos)
if (!empty($savedMenuItems)) {
    foreach ($savedMenuItems as $item) {
        $itemName = strtolower(trim($item['name'] ?? ''));
        // Ignorar itens que são fixos (Início, Produtos)
        if (!in_array($itemName, ['início', 'inicio', 'produtos', 'home', 'products'])) {
            $customMenuItems[] = $item;
        }
    }
}

// Se não há itens customizados, usar padrões
if (empty($customMenuItems)) {
    $customMenuItems = [
        ['id' => 3, 'name' => 'Categorias', 'link' => $baseUrl . '#categorias', 'icon' => 'solar:widget-4-bold'],
        ['id' => 4, 'name' => 'Contato', 'link' => $baseUrl . '#contato', 'icon' => 'solar:phone-bold']
    ];
}

// Combinar itens fixos com customizáveis - fixos SEMPRE primeiro
$menuItems = array_merge($fixedMenuItems, $customMenuItems);

// Adicionar páginas personalizadas marcadas para exibir no menu
try {
    $stmtPages = $pdo->prepare("SELECT title, slug FROM store_pages WHERE store_id = ? AND is_active = 1 AND show_in_menu = 1 ORDER BY menu_order ASC");
    $stmtPages->execute([$currentStoreId]);
    $customPages = $stmtPages->fetchAll(PDO::FETCH_ASSOC);
    
    foreach ($customPages as $customPage) {
        $menuItems[] = [
            'label' => $customPage['title'],
            'url' => $baseUrl . '/pagina/' . $customPage['slug'],
            'icon' => 'solar:document-text-bold'
        ];
    }
} catch (Exception $e) {
    // Silenciar erros se tabela não existir
}

// Corrigir links relativos do menu para funcionarem em todas as páginas
foreach ($menuItems as &$menuItem) {
    $link = $menuItem['link'] ?? '';
    // Se o link for apenas âncora (#algo), adicionar baseUrl
    if (strpos($link, '#') === 0) {
        $menuItem['link'] = $baseUrl . $link;
    }
    // Se o link for apenas #, usar baseUrl
    if ($link === '#') {
        $menuItem['link'] = $baseUrl;
    }
}
unset($menuItem);

// ============================================
// REDES SOCIAIS
// ============================================

$socialLinks = $customSettings['social'] ?? [
    'instagram' => $instagram,
    'facebook' => $facebook,
    'whatsapp' => $whatsapp,
    'tiktok' => '',
    'youtube' => '',
    'twitter' => ''
];

// ============================================
// CORES PERSONALIZADAS
// ============================================

$primaryColor = $customSettings['colors']['primary'] ?? '#2563EB';
$bgColor = $customSettings['colors']['bg'] ?? '#FAFBFC';
$cardColor = $customSettings['colors']['card'] ?? '#FFFFFF';
$textColor = $customSettings['colors']['text'] ?? '#111827';
$textSecondary = $customSettings['colors']['text_secondary'] ?? '#6B7280';
$accentColor = $customSettings['colors']['accent'] ?? '#10B981';
$borderColor = $customSettings['colors']['border'] ?? '#E5E7EB';

// ============================================
// HELPER FUNCTIONS
// ============================================

/**
 * Gera o link completo para uma página da loja
 * Retorna URL absoluta para garantir que âncoras funcionem em qualquer página
 */
function storeUrl($path = '') {
    global $store, $storeSlug, $baseUrl;
    
    // Se $baseUrl já está definida e é absoluta, usar ela
    if (isset($baseUrl) && (strpos($baseUrl, 'http') === 0 || strpos($baseUrl, '//') === 0)) {
        $base = $baseUrl;
    }
    // Usar get_store_url() centralizada (respeita custom domain, subdomínio ou path)
    elseif (function_exists('get_store_url') && !empty($store)) {
        $base = get_store_url($store);
    }
    // Fallback: detectar dinamicamente pelo host atual
    else {
        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https://' : 'http://';
        $currentHost = $_SERVER['HTTP_HOST'] ?? '';
        $slug = $storeSlug ?? $store['slug'] ?? '';
        $sub = $store['subdomain'] ?? '';
        $domType = $store['domain_type'] ?? 'subdomain';
        if ($domType === 'custom' || strpos($currentHost, $sub . '.') === 0) {
            $base = $protocol . $currentHost;
        } else {
            $base = $protocol . $currentHost . '/loja/' . $slug;
        }
    }
    
    return $base . ($path ? '/' . ltrim($path, '/') : '');
}

/**
 * Verifica se o cliente está logado
 */
function isCustomerLoggedIn() {
    if (session_status() === PHP_SESSION_NONE) {
        if (defined('SESSION_NAME')) session_name(SESSION_NAME);
        session_start();
    }
    return isset($_SESSION['customer_id']);
}

/**
 * Retorna os dados do cliente logado
 * @param bool $fullData Se true, busca todos os dados do banco
 */
function getLoggedCustomer($fullData = false) {
    if (!isCustomerLoggedIn()) {
        return null;
    }
    
    $basicData = [
        'id' => $_SESSION['customer_id'],
        'name' => $_SESSION['customer_name'] ?? '',
        'email' => $_SESSION['customer_email'] ?? ''
    ];
    
    // Se não precisa de dados completos, retorna apenas os básicos da sessão
    if (!$fullData) {
        return $basicData;
    }
    
    // Busca dados completos do banco
    try {
        $pdo = getDB();
        $stmt = $pdo->prepare("SELECT * FROM customers WHERE id = ?");
        $stmt->execute([$_SESSION['customer_id']]);
        $customer = $stmt->fetch(PDO::FETCH_ASSOC);
        return $customer ?: $basicData;
    } catch (Exception $e) {
        return $basicData;
    }
}

/**
 * Formata preço em Real brasileiro
 */
function formatPrice($price) {
    return 'R$ ' . number_format((float)$price, 2, ',', '.');
}

/**
 * Retorna URL do WhatsApp com mensagem
 */
function getWhatsAppUrl($message = '') {
    global $whatsapp;
    if (empty($whatsapp)) return '#';
    $phone = preg_replace('/\D/', '', $whatsapp);
    $url = 'https://wa.me/55' . $phone;
    if ($message) {
        $url .= '?text=' . urlencode($message);
    }
    return $url;
}
