# Marketing Place - Vitrine Pública de Produtos

## 📋 Visão Geral

O Marketing Place é uma vitrine pública que lista produtos do admin e de usuários que optaram por aparecer no marketplace. É uma página pública, acessível a qualquer visitante, que permite descobrir e comprar produtos de forma centralizada.

---

## 🗄️ Estrutura da Tabela `produtos`

### Novas Colunas Adicionadas

| Campo | Tipo | Descrição |
|-------|------|-----------|
| `is_marketplace` | TINYINT(1) DEFAULT 0 | Se 1, o produto aparece no marketplace |
| `status_produto` | VARCHAR(20) DEFAULT 'ativo' | Status do produto: ativo, inativo, oculto |

### Índices

- **KEY**: `idx_is_marketplace` (`is_marketplace`)
- **KEY**: `idx_status_produto` (`status_produto`)

---

## 🔄 Migração de Dados

### Arquivo de Migração

**Localização**: `config/sql_migrations/2025_03_add_marketplace_produtos.sql`

### Como Executar

1. **Acesse seu banco de dados** (via phpMyAdmin, MySQL Workbench, ou linha de comando)

2. **Execute o arquivo SQL**:
   ```sql
   -- Execute o conteúdo de: config/sql_migrations/2025_03_add_marketplace_produtos.sql
   ```

3. **Verifique a migração**:
   ```sql
   SELECT COUNT(*) as total_produtos FROM produtos;
   SELECT COUNT(*) as produtos_marketplace FROM produtos WHERE is_marketplace = 1;
   SELECT COUNT(*) as produtos_ativos FROM produtos WHERE status_produto = 'ativo';
   ```

### O que a Migração Faz

1. **Adiciona a coluna `is_marketplace`** na tabela `produtos`
2. **Adiciona a coluna `status_produto`** na tabela `produtos`
3. **Cria índices** para melhor performance
4. **Define valores padrão**:
   - `is_marketplace = 0` (produtos não aparecem no marketplace por padrão)
   - `status_produto = 'ativo'` (produtos ativos por padrão)

---

## ✅ Como Ativar um Produto para Aparecer no Marketplace

### Para Administradores

1. Acesse o **Dashboard Admin** → **Produtos**
2. Crie um novo produto ou edite um existente
3. No formulário, marque o checkbox **"Mostrar este produto no Marketing Place"**
4. Salve o produto

### Para Usuários Comuns

1. Acesse a **Área do Usuário** → **Meus Produtos**
2. Crie um novo produto ou edite um existente
3. No formulário, marque o checkbox **"Mostrar este produto no Marketing Place"**
4. Salve o produto

### Via SQL (Avançado)

```sql
-- Ativar um produto específico
UPDATE produtos SET is_marketplace = 1 WHERE id = X;

-- Ativar todos os produtos de um usuário
UPDATE produtos SET is_marketplace = 1 WHERE usuario_id = X;

-- Desativar um produto do marketplace
UPDATE produtos SET is_marketplace = 0 WHERE id = X;
```

---

## 🌐 Como Acessar a URL do Marketplace

### URL Pública

O marketplace está disponível em:

```
http://seusite.com/views/marketplace.php
```

ou

```
https://seusite.com/views/marketplace.php
```

### Exemplo de Uso

- **Link direto**: Compartilhe `https://seusite.com/views/marketplace.php` com seus clientes
- **Integração**: Adicione um link no menu do seu site apontando para o marketplace
- **Marketing**: Use a URL em campanhas de email marketing, redes sociais, etc.

---

## 📊 Regras de Exibição

### Produtos que Aparecem no Marketplace

Um produto aparece no marketplace **apenas se**:

1. ✅ `is_marketplace = 1` (produto marcado para aparecer)
2. ✅ `status_produto = 'ativo'` (ou NULL/vazio para retrocompatibilidade)

### Produtos que NÃO Aparecem

Um produto **NÃO aparece** no marketplace se:

1. ❌ `is_marketplace = 0` (não marcado para aparecer)
2. ❌ `status_produto = 'inativo'` ou `'oculto'`
3. ❌ Produto não existe ou foi excluído

### Observações Importantes

- **Produtos do admin e de usuários aparecem juntos** no marketplace
- **Não há distinção visual** entre produtos do admin e de usuários
- **Todos os produtos** que atendem aos critérios aparecem na mesma listagem

---

## 🔍 Filtros e Ordenação

### Filtros Disponíveis

1. **Por Categoria**:
   - Filtra produtos por categoria específica
   - Opção "Todas as categorias" mostra todos os produtos

### Ordenação Disponível

1. **Preço: Menor para Maior** (padrão)
2. **Preço: Maior para Menor**
3. **Nome: A-Z**
4. **Nome: Z-A**

### Como Usar

- Os filtros são aplicados automaticamente ao selecionar uma opção
- A URL é atualizada com os parâmetros de filtro
- É possível compartilhar URLs filtradas

---

## 🎨 Design e Interface

### Características do Design

- **Estilo Futurista**: Design moderno com gradientes e efeitos glassmorphism
- **Tipografia**: Montserrat (mesma do checkout)
- **Responsivo**: Adapta-se a dispositivos móveis e desktop
- **Performance**: Carregamento otimizado com lazy loading de imagens

### Elementos da Interface

1. **Header**: Título e descrição do marketplace
2. **Filtros**: Categoria e ordenação
3. **Grid de Produtos**: Cards com informações do produto
4. **Botão CTA**: "Quero este produto" que leva para o checkout

### Card de Produto

Cada card exibe:

- **Imagem do produto** (ou placeholder se não houver)
- **Categoria** (se disponível)
- **Nome do produto**
- **Descrição** (truncada para 3 linhas)
- **Preço original** (se disponível, com riscado)
- **Preço atual** (em destaque)
- **Botão "Quero este produto"**

---

## 🔗 Fluxo de Compra

### Como Funciona

1. **Usuário acessa** `views/marketplace.php`
2. **Navega pelos produtos** usando filtros e ordenação
3. **Clica em "Quero este produto"** em um produto
4. **É redirecionado** para `views/dados_pessoais.php?produto_id=X`
5. **Fluxo normal de checkout** continua (dados pessoais → checkout → pagamento)

### Integração com Checkout

- O marketplace **não altera** o fluxo de checkout existente
- Apenas **inicia o processo** redirecionando para `dados_pessoais.php`
- Todas as funcionalidades do checkout (order bumps, pagamentos, etc.) funcionam normalmente

---

## 📁 Estrutura de Arquivos

```
CHECKOUT PRO 2025/
├── config/
│   └── sql_migrations/
│       └── 2025_03_add_marketplace_produtos.sql  # Migração SQL
├── dashboard/
│   ├── pages/
│   │   └── produtos.php              # Formulário admin (com checkbox marketplace)
│   └── pages_usuario/
│       └── meus_produtos.php          # Formulário usuário (com checkbox marketplace)
├── views/
│   └── marketplace.php                # Página pública do marketplace
└── docs/
    └── marketplace.md                 # Esta documentação
```

---

## 🔧 Implementação Técnica

### Query de Busca

```php
SELECT id, nome, descricao, imagem, preco_original, preco_atual, categoria 
FROM produtos 
WHERE is_marketplace = 1 
AND (status_produto = 'ativo' OR status_produto IS NULL OR status_produto = '')
ORDER BY preco_atual ASC
LIMIT 100
```

### Filtros

- **Categoria**: Adiciona `AND categoria = :categoria` à query
- **Ordenação**: Altera a cláusula `ORDER BY`

### Performance

- **LIMIT 100**: Limita resultados para melhor performance
- **Índices**: `idx_is_marketplace` e `idx_status_produto` melhoram a velocidade
- **Lazy Loading**: Imagens carregam apenas quando visíveis

---

## 🔄 Retrocompatibilidade

### Produtos Sem Colunas Marketplace

- Se as colunas `is_marketplace` e `status_produto` não existirem, o sistema trata como:
  - `is_marketplace = 0` (não aparece no marketplace)
  - `status_produto = 'ativo'` (produto ativo)

### Queries Retrocompatíveis

As queries do marketplace verificam:

```php
WHERE is_marketplace = 1 
AND (status_produto = 'ativo' OR status_produto IS NULL OR status_produto = '')
```

Isso garante que produtos sem a coluna `status_produto` ainda apareçam se `is_marketplace = 1`.

---

## 📊 Consultas Úteis

### Verificar Produtos no Marketplace

```sql
-- Total de produtos no marketplace
SELECT COUNT(*) as total 
FROM produtos 
WHERE is_marketplace = 1 
AND (status_produto = 'ativo' OR status_produto IS NULL OR status_produto = '');

-- Produtos por categoria no marketplace
SELECT categoria, COUNT(*) as total 
FROM produtos 
WHERE is_marketplace = 1 
AND (status_produto = 'ativo' OR status_produto IS NULL OR status_produto = '')
AND categoria IS NOT NULL
GROUP BY categoria
ORDER BY total DESC;

-- Produtos do marketplace por usuário
SELECT u.nome, u.email, COUNT(p.id) as total_produtos
FROM usuarios u
INNER JOIN produtos p ON p.usuario_id = u.id
WHERE p.is_marketplace = 1 
AND (p.status_produto = 'ativo' OR p.status_produto IS NULL OR p.status_produto = '')
GROUP BY u.id, u.nome, u.email
ORDER BY total_produtos DESC;
```

### Ativar/Desativar Produtos em Lote

```sql
-- Ativar todos os produtos de uma categoria
UPDATE produtos 
SET is_marketplace = 1 
WHERE categoria = 'Nome da Categoria';

-- Desativar todos os produtos de um usuário
UPDATE produtos 
SET is_marketplace = 0 
WHERE usuario_id = X;
```

---

## 🚀 Próximos Passos

1. **Executar migração SQL**: Execute `config/sql_migrations/2025_03_add_marketplace_produtos.sql`
2. **Ativar produtos**: Marque produtos para aparecer no marketplace
3. **Testar marketplace**: Acesse `views/marketplace.php` e verifique a listagem
4. **Compartilhar URL**: Compartilhe a URL do marketplace com seus clientes
5. **Monitorar**: Acompanhe quais produtos estão sendo mais visualizados

---

## ⚠️ Notas Importantes

- ⚠️ **Página Pública**: O marketplace é público e não requer autenticação
- ⚠️ **Performance**: O limite de 100 produtos pode ser ajustado conforme necessário
- ⚠️ **Segurança**: Produtos inativos ou ocultos não aparecem no marketplace
- ⚠️ **Checkout**: O marketplace não altera o fluxo de checkout existente
- ⚠️ **Retrocompatibilidade**: O sistema funciona mesmo sem as novas colunas

---

## 🆘 Suporte

Em caso de dúvidas ou problemas:

1. Verifique se a migração SQL foi executada corretamente
2. Confirme que as colunas `is_marketplace` e `status_produto` existem
3. Verifique se os produtos estão marcados com `is_marketplace = 1`
4. Confirme que `status_produto = 'ativo'` (ou NULL/vazio)
5. Verifique os logs de erro do PHP

---

**Última atualização**: Janeiro 2025  
**Versão do sistema**: Checkout Pro 2025


