<?php
/**
 * Marketing Place - Vitrine Pública de Produtos
 * 
 * Lista produtos do admin e de usuários que optaram por aparecer no marketplace
 */

// Marketplace é público - não requer autenticação
session_start();

// Verificar se usuário está logado (opcional)
$usuario_logado = false;
$usuario_id = null;
if (isset($_SESSION['usuario_id']) && !empty($_SESSION['usuario_id'])) {
    $usuario_logado = true;
    $usuario_id = $_SESSION['usuario_id'];
}

// Conexão com o banco de dados
require __DIR__ . '/../config/config_db.php';
require_once __DIR__ . '/../backend/settings_helper.php';

// Carregar cores customizadas do marketplace
$marketplace_bg = getSystemSetting('color_marketplace_bg', '#0f0c29');
$marketplace_title = getSystemSetting('color_marketplace_title', '#667eea');
$marketplace_header_bg = getSystemSetting('color_marketplace_header_bg', '#ffffff');
// Se for hex, converter para rgba com transparência para melhor visual no marketplace
if (preg_match('/^#[0-9A-Fa-f]{6}$/', $marketplace_header_bg)) {
    $hex = str_replace('#', '', $marketplace_header_bg);
    $r = hexdec(substr($hex, 0, 2));
    $g = hexdec(substr($hex, 2, 2));
    $b = hexdec(substr($hex, 4, 2));
    $marketplace_header_bg = "rgba($r, $g, $b, 0.1)";
}
$marketplace_header_text = getSystemSetting('color_marketplace_header_text', '#e0e0e0');
$marketplace_card_bg = getSystemSetting('color_marketplace_card_bg', '#ffffff');
// Se for hex, converter para rgba com transparência para melhor visual no marketplace
if (preg_match('/^#[0-9A-Fa-f]{6}$/', $marketplace_card_bg)) {
    $hex = str_replace('#', '', $marketplace_card_bg);
    $r = hexdec(substr($hex, 0, 2));
    $g = hexdec(substr($hex, 2, 2));
    $b = hexdec(substr($hex, 4, 2));
    $marketplace_card_bg = "rgba($r, $g, $b, 0.1)";
}
$marketplace_product_name = getSystemSetting('color_marketplace_product_name', '#ffffff');
$marketplace_category = getSystemSetting('color_marketplace_category', '#667eea');
$marketplace_price = getSystemSetting('color_marketplace_price', '#4ade80');
$marketplace_button_buy = getSystemSetting('color_marketplace_button_buy', '#667eea');
$marketplace_button_affiliate = getSystemSetting('color_marketplace_button_affiliate', '#10b981');

// Filtros e ordenação
$categoria_filtro = isset($_GET['categoria']) ? trim($_GET['categoria']) : '';
$ordenacao = isset($_GET['ordenacao']) ? $_GET['ordenacao'] : 'preco_asc'; // preco_asc, preco_desc, nome_asc, nome_desc

// Construir query - Detectar nomes corretos das colunas automaticamente
$col_marketplace = null;
$col_status = null;
$col_link = null;

try {
    // Verificar quais colunas existem
    $columns = $pdo->query("SHOW COLUMNS FROM produtos")->fetchAll(PDO::FETCH_COLUMN);
    $cols = array_flip($columns);
    
    // Determinar nome correto de cada coluna
    $col_marketplace = isset($cols['is_marketplace']) ? 'is_marketplace' : (isset($cols['ismarketplace']) ? 'ismarketplace' : null);
    $col_status = isset($cols['status_produto']) ? 'status_produto' : (isset($cols['statusproduto']) ? 'statusproduto' : 'status');
    $col_link = isset($cols['link_pagina']) ? 'link_pagina' : (isset($cols['linkpagina']) ? 'linkpagina' : null);
    
    // Montar SELECT
    $select = "id, nome, descricao, imagem, preco_original, preco_atual, categoria";
    if ($col_link) $select .= ", $col_link AS link_pagina";
    // Adicionar campos de página de vendas externa
    $col_enable_sales_page = isset($cols['enable_sales_page']) ? 'enable_sales_page' : null;
    $col_sales_page_url = isset($cols['sales_page_url']) ? 'sales_page_url' : null;
    if ($col_enable_sales_page) $select .= ", $col_enable_sales_page";
    if ($col_sales_page_url) $select .= ", $col_sales_page_url";
    
    // Montar WHERE
    $where = "1=1";
    if ($col_marketplace) $where .= " AND $col_marketplace = 1";
    if ($col_status) $where .= " AND ($col_status = 'ativo' OR $col_status IS NULL OR $col_status = '')";
    
    $sql = "SELECT $select FROM produtos WHERE $where";
} catch (PDOException $e) {
    error_log("Erro ao verificar colunas: " . $e->getMessage());
    // Fallback: query simples sem filtros
    $sql = "SELECT id, nome, descricao, imagem, preco_original, preco_atual, categoria FROM produtos WHERE 1=1";
}

$params = [];

// Filtro por categoria
if (!empty($categoria_filtro)) {
    $sql .= " AND categoria = :categoria";
    $params[':categoria'] = $categoria_filtro;
}

// Ordenação
switch ($ordenacao) {
    case 'preco_desc':
        $sql .= " ORDER BY preco_atual DESC";
        break;
    case 'nome_asc':
        $sql .= " ORDER BY nome ASC";
        break;
    case 'nome_desc':
        $sql .= " ORDER BY nome DESC";
        break;
    case 'preco_asc':
    default:
        $sql .= " ORDER BY preco_atual ASC";
        break;
}

$sql .= " LIMIT 100";

try {
    $stmt = $pdo->prepare($sql);
    $stmt->execute($params);
    $produtos = $stmt->fetchAll(PDO::FETCH_ASSOC);
    error_log("Marketplace: " . count($produtos) . " produtos encontrados");
} catch (PDOException $e) {
    error_log("Erro marketplace: " . $e->getMessage() . " | SQL: " . $sql);
    $produtos = [];
}

// Buscar categorias
try {
    $where_cat = "categoria IS NOT NULL AND categoria != ''";
    if (isset($col_marketplace) && $col_marketplace) {
        $where_cat .= " AND $col_marketplace = 1";
    }
    if (isset($col_status) && $col_status) {
        $where_cat .= " AND ($col_status = 'ativo' OR $col_status IS NULL OR $col_status = '')";
    }
    
    $stmt_categorias = $pdo->query("SELECT DISTINCT categoria FROM produtos WHERE $where_cat ORDER BY categoria ASC");
    $categorias = $stmt_categorias->fetchAll(PDO::FETCH_COLUMN);
} catch (PDOException $e) {
    error_log("Erro categorias: " . $e->getMessage());
    $categorias = [];
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Marketing Place | Checkout Pro</title>
    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800&display=swap">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Montserrat', sans-serif;
            background: <?= htmlspecialchars($marketplace_bg); ?>;
            color: #ffffff;
            min-height: 100vh;
            padding: 20px;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
        }

        .header {
            text-align: center;
            padding: 40px 20px;
            margin-bottom: 40px;
        }

        .header h1 {
            font-size: 48px;
            font-weight: 800;
            margin-bottom: 10px;
            color: <?= htmlspecialchars($marketplace_title); ?>;
        }

        .header p {
            font-size: 18px;
            opacity: 0.9;
            color: <?= htmlspecialchars($marketplace_header_text); ?>;
        }

        .filters {
            background: <?= htmlspecialchars($marketplace_header_bg); ?>;
            backdrop-filter: blur(10px);
            padding: 25px;
            border-radius: 15px;
            margin-bottom: 40px;
            display: flex;
            flex-wrap: wrap;
            gap: 20px;
            align-items: center;
        }

        .filter-group {
            flex: 1;
            min-width: 200px;
        }

        .filter-group label {
            display: block;
            margin-bottom: 8px;
            font-weight: 600;
            font-size: 14px;
            color: <?= htmlspecialchars($marketplace_header_text); ?>;
        }

        .filter-group select {
            width: 100%;
            padding: 12px 15px;
            border: 2px solid rgba(255, 255, 255, 0.2);
            border-radius: 8px;
            background: rgba(255, 255, 255, 0.1);
            color: <?= htmlspecialchars($marketplace_header_text); ?>;
            font-family: 'Montserrat', sans-serif;
            font-size: 14px;
            cursor: pointer;
            transition: all 0.3s;
        }

        .filter-group select:hover {
            border-color: rgba(255, 255, 255, 0.4);
            background: rgba(255, 255, 255, 0.15);
        }

        .filter-group select:focus {
            outline: none;
            border-color: #667eea;
            background: rgba(255, 255, 255, 0.2);
        }

        .filter-group select option {
            background: #1a1a2e;
            color: #ffffff;
        }

        .products-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
            gap: 30px;
            margin-bottom: 40px;
        }

        .product-card {
            background: <?= htmlspecialchars($marketplace_card_bg); ?>;
            backdrop-filter: blur(10px);
            border-radius: 15px;
            overflow: hidden;
            transition: all 0.3s;
            border: 2px solid rgba(255, 255, 255, 0.1);
            display: flex;
            flex-direction: column;
        }

        .product-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 15px 40px rgba(102, 126, 234, 0.3);
            border-color: rgba(102, 126, 234, 0.5);
        }

        .product-image {
            width: 100%;
            height: 200px;
            object-fit: cover;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            display: flex;
            align-items: center;
            justify-content: center;
            color: rgba(255, 255, 255, 0.5);
            font-size: 48px;
        }

        .product-image img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .product-info {
            padding: 20px;
            flex: 1;
            display: flex;
            flex-direction: column;
        }

        .product-category {
            font-size: 12px;
            color: <?= htmlspecialchars($marketplace_category); ?>;
            font-weight: 600;
            text-transform: uppercase;
            margin-bottom: 8px;
            letter-spacing: 1px;
        }

        .product-name {
            font-size: 20px;
            font-weight: 700;
            margin-bottom: 10px;
            color: <?= htmlspecialchars($marketplace_product_name); ?>;
            line-height: 1.3;
        }

        .product-description {
            font-size: 14px;
            color: #e0e0e0;
            margin-bottom: 15px;
            line-height: 1.5;
            flex: 1;
            display: -webkit-box;
            -webkit-line-clamp: 3;
            -webkit-box-orient: vertical;
            overflow: hidden;
        }

        .product-price {
            margin-bottom: 15px;
        }

        .product-price-original {
            font-size: 14px;
            text-decoration: line-through;
            color: #999;
            margin-bottom: 5px;
        }

        .product-price-current {
            font-size: 28px;
            font-weight: 800;
            color: <?= htmlspecialchars($marketplace_price); ?>;
        }

        .product-button {
            width: 100%;
            padding: 15px;
            background: <?= htmlspecialchars($marketplace_button_buy); ?>;
            color: #ffffff;
            border: none;
            border-radius: 8px;
            font-family: 'Montserrat', sans-serif;
            font-size: 16px;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.3s;
            text-decoration: none;
            display: block;
            text-align: center;
        }

        .product-button:hover {
            transform: scale(1.02);
            box-shadow: 0 5px 20px rgba(102, 126, 234, 0.4);
        }

        .product-button:active {
            transform: scale(0.98);
        }
        
        .product-button-affiliate {
            width: 100%;
            padding: 15px;
            background: <?= htmlspecialchars($marketplace_button_affiliate); ?>;
            color: #ffffff;
            border: none;
            border-radius: 8px;
            font-family: 'Montserrat', sans-serif;
            font-size: 16px;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.3s;
            text-decoration: none;
            display: block;
            text-align: center;
        }
        
        .product-button-affiliate:hover {
            transform: scale(1.02);
            box-shadow: 0 5px 20px rgba(16, 185, 129, 0.4);
        }
        
        .product-button-affiliate:active {
            transform: scale(0.98);
        }

        .no-products {
            text-align: center;
            padding: 60px 20px;
            background: rgba(255, 255, 255, 0.1);
            backdrop-filter: blur(10px);
            border-radius: 15px;
        }

        .no-products i {
            font-size: 64px;
            color: rgba(255, 255, 255, 0.3);
            margin-bottom: 20px;
        }

        .no-products h2 {
            font-size: 24px;
            margin-bottom: 10px;
            color: #e0e0e0;
        }

        .no-products p {
            color: #b0b0b0;
            font-size: 16px;
        }

        .results-count {
            text-align: center;
            margin-bottom: 20px;
            color: <?= htmlspecialchars($marketplace_header_text); ?>;
            font-size: 14px;
        }

        @media (max-width: 768px) {
            .header h1 {
                font-size: 32px;
            }

            .filters {
                flex-direction: column;
            }

            .filter-group {
                width: 100%;
            }

            .products-grid {
                grid-template-columns: 1fr;
                gap: 20px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1><i class="fas fa-store"></i> Marketing Place</h1>
            <p>Descubra produtos incríveis de nossos vendedores</p>
        </div>

        <!-- Campo de Pesquisa de Produtos -->
        <div style="max-width: 1200px; margin: 0 auto 30px auto; padding: 0 20px;">
            <div style="position: relative;">
                <i class="fas fa-search" style="position: absolute; left: 16px; top: 50%; transform: translateY(-50%); color: var(--text-muted, #6b7280); font-size: 18px; z-index: 1;"></i>
                <input type="text" id="searchProducts" placeholder="Pesquisar produtos por nome..." style="width: 100%; padding: 14px 16px 14px 48px; border: 2px solid rgba(255,255,255,0.1); border-radius: 12px; background: rgba(255,255,255,0.05); color: #ffffff; font-size: 16px; transition: all 0.3s; font-family: 'Montserrat', sans-serif;" onkeyup="filtrarProdutos()" onfocus="this.style.borderColor='#667eea'; this.style.boxShadow='0 0 0 3px rgba(102, 126, 234, 0.1)'" onblur="this.style.borderColor='rgba(255,255,255,0.1)'; this.style.boxShadow='none'">
            </div>
        </div>

        <form method="GET" action="" class="filters">
            <div class="filter-group">
                <label for="categoria"><i class="fas fa-filter"></i> Filtrar por Categoria</label>
                <select name="categoria" id="categoria" onchange="this.form.submit()">
                    <option value="">Todas as categorias</option>
                    <?php foreach ($categorias as $cat): ?>
                        <option value="<?= htmlspecialchars($cat); ?>" <?= $categoria_filtro === $cat ? 'selected' : ''; ?>>
                            <?= htmlspecialchars($cat); ?>
                        </option>
                    <?php endforeach; ?>
                </select>
            </div>

            <div class="filter-group">
                <label for="ordenacao"><i class="fas fa-sort"></i> Ordenar por</label>
                <select name="ordenacao" id="ordenacao" onchange="this.form.submit()">
                    <option value="preco_asc" <?= $ordenacao === 'preco_asc' ? 'selected' : ''; ?>>Preço: Menor para Maior</option>
                    <option value="preco_desc" <?= $ordenacao === 'preco_desc' ? 'selected' : ''; ?>>Preço: Maior para Menor</option>
                    <option value="nome_asc" <?= $ordenacao === 'nome_asc' ? 'selected' : ''; ?>>Nome: A-Z</option>
                    <option value="nome_desc" <?= $ordenacao === 'nome_desc' ? 'selected' : ''; ?>>Nome: Z-A</option>
                </select>
            </div>
        </form>

        <?php if (!empty($produtos)): ?>
            <div class="results-count">
                <i class="fas fa-box-open"></i> <?= count($produtos); ?> produto(s) encontrado(s)
            </div>

            <div class="products-grid">
                <?php foreach ($produtos as $produto): ?>
                    <div class="product-card">
                        <div class="product-image">
                            <?php if (!empty($produto['imagem']) && trim($produto['imagem']) !== ''): ?>
                                <img src="<?= htmlspecialchars($produto['imagem'], ENT_QUOTES, 'UTF-8'); ?>" 
                                     alt="<?= htmlspecialchars($produto['nome'], ENT_QUOTES, 'UTF-8'); ?>"
                                     loading="lazy"
                                     onerror="this.style.display='none'; this.parentElement.innerHTML='<i class=\'fas fa-image\'></i>';">
                            <?php else: ?>
                                <i class="fas fa-image"></i>
                            <?php endif; ?>
                        </div>
                        
                        <div class="product-info">
                            <?php if (!empty($produto['categoria'])): ?>
                                <div class="product-category">
                                    <i class="fas fa-tag"></i> <?= htmlspecialchars($produto['categoria']); ?>
                                </div>
                            <?php endif; ?>
                            
                            <h3 class="product-name"><?= htmlspecialchars($produto['nome']); ?></h3>
                            
                            <?php if (!empty($produto['descricao'])): ?>
                                <p class="product-description"><?= htmlspecialchars($produto['descricao']); ?></p>
                            <?php endif; ?>
                            
                            <div class="product-price">
                                <?php if (!empty($produto['preco_original']) && floatval($produto['preco_original']) > 0): ?>
                                    <div class="product-price-original">
                                        De: R$ <?= number_format(floatval($produto['preco_original']), 2, ',', '.'); ?>
                                    </div>
                                <?php endif; ?>
                                <div class="product-price-current">
                                    R$ <?= number_format(floatval($produto['preco_atual'] ?? 0), 2, ',', '.'); ?>
                                </div>
                            </div>
                            
                            <div style="display: flex; gap: 10px; margin-top: 15px; flex-wrap: wrap;">
                                <a href="dados_pessoais.php?produto_id=<?= intval($produto['id']); ?>" class="product-button" style="flex: 1; min-width: 120px;">
                                    <i class="fas fa-shopping-cart"></i> Comprar
                                </a>
                                <?php if (!empty($produto['enable_sales_page']) && $produto['enable_sales_page'] == 1 && !empty($produto['sales_page_url']) && filter_var($produto['sales_page_url'], FILTER_VALIDATE_URL)): ?>
                                    <a href="<?= htmlspecialchars($produto['sales_page_url'], ENT_QUOTES, 'UTF-8'); ?>" 
                                       target="_blank" 
                                       rel="noopener noreferrer"
                                       class="product-button" 
                                       style="flex: 1; min-width: 120px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); margin-bottom: 10px; width: 100%;">
                                        <i class="fa fa-eye"></i> VER PÁGINA
                                    </a>
                                <?php endif; ?>
                                <a href="#" 
                                   onclick="verificarLoginAfiliacao(event, <?= intval($produto['id']); ?>); return false;" 
                                   class="product-button-affiliate" 
                                   style="flex: 1; min-width: 120px;">
                                    <i class="fas fa-handshake"></i> Afiliar
                                </a>
                                <?php if (!empty($produto['link_pagina']) && filter_var($produto['link_pagina'], FILTER_VALIDATE_URL)): ?>
                                    <a href="<?= htmlspecialchars($produto['link_pagina'], ENT_QUOTES, 'UTF-8'); ?>" 
                                       target="_blank" 
                                       rel="noopener noreferrer"
                                       class="product-button" 
                                       style="flex: 1; min-width: 120px; background: linear-gradient(135deg, #10b981 0%, #059669 100%);"
                                       onmouseover="this.style.transform='translateY(-2px)'; this.style.boxShadow='0 5px 20px rgba(16, 185, 129, 0.4)'"
                                       onmouseout="this.style.transform='translateY(0)'; this.style.boxShadow='none'">
                                        <i class="fas fa-external-link-alt"></i> Ver Página do Produto
                                    </a>
                                <?php endif; ?>
                            </div>
                        </div>
                    </div>
                <?php endforeach; ?>
            </div>
        <?php else: ?>
            <div class="no-products">
                <i class="fas fa-box-open"></i>
                <h2>Nenhum produto encontrado</h2>
                <p>Não há produtos disponíveis no marketplace no momento.</p>
            </div>
        <?php endif; ?>
    </div>

    <script>
        function filtrarProdutos() {
            const searchInput = document.getElementById('searchProducts');
            const searchTerm = searchInput.value.toLowerCase().trim();
            const productCards = document.querySelectorAll('.product-card');
            let visibleCount = 0;
            
            productCards.forEach(card => {
                const productName = card.querySelector('.product-name')?.textContent.toLowerCase() || '';
                const productDescription = card.querySelector('.product-description')?.textContent.toLowerCase() || '';
                const productCategory = card.querySelector('.product-category')?.textContent.toLowerCase() || '';
                
                if (productName.includes(searchTerm) || productDescription.includes(searchTerm) || productCategory.includes(searchTerm)) {
                    card.style.display = '';
                    visibleCount++;
                } else {
                    card.style.display = 'none';
                }
            });
            
            // Mostrar mensagem se nenhum produto for encontrado
            let noResultsMsg = document.getElementById('noResultsMessage');
            const productsGrid = document.querySelector('.products-grid');
            
            if (visibleCount === 0 && searchTerm !== '' && productsGrid) {
                if (!noResultsMsg) {
                    noResultsMsg = document.createElement('div');
                    noResultsMsg.id = 'noResultsMessage';
                    noResultsMsg.style.cssText = 'text-align: center; padding: 60px 20px; color: #94a3b8; font-size: 18px; grid-column: 1 / -1;';
                    noResultsMsg.innerHTML = '<i class="fas fa-search" style="font-size: 48px; margin-bottom: 16px; display: block; opacity: 0.5;"></i><p>Nenhum produto encontrado para "' + searchTerm + '"</p>';
                    productsGrid.appendChild(noResultsMsg);
                }
            } else if (noResultsMsg) {
                noResultsMsg.remove();
            }
        }

        function verificarLoginAfiliacao(event, produtoId) {
            event.preventDefault();
            
            <?php if ($usuario_logado): ?>
                // Usuário logado - redirecionar para página de afiliação
                window.location.href = '/dashboard/usuario.php?page=afiliacao_marketplace&produto_id=' + produtoId;
            <?php else: ?>
                // Usuário não logado - mostrar alerta e redirecionar para cadastro
                if (confirm('Cadastre-se para se afiliar a este produto e começar a ganhar comissões!\n\nDeseja ir para a página de cadastro?')) {
                    window.location.href = '/dashboard/login.php?tab=cadastro';
                }
            <?php endif; ?>
        }
    </script>
</body>
</html>

