<?php
/**
 * Afiliação Marketplace - Área do Usuário
 * 
 * Permite que usuários se tornem afiliados de produtos
 */

// Proteção de autenticação (usuário comum apenas)
session_start();
require_once __DIR__ . '/../../backend/auth_helper.php';
requer_usuario('/dashboard/index.php');

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

// Obter dados do usuário logado
$usuario = usuario_logado();
$usuario_id = $usuario['id'];
$usuario_nome = $usuario['nome'] ?? 'Usuário';

// Processar solicitação de afiliação
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['produto_id'])) {
    $produto_id = intval($_POST['produto_id']);
    
    // Verificar se o produto aceita afiliação
    try {
        $sql_produto = "SELECT id, nome, afiliacao_ativa, comissao_padrao, usuario_id 
                       FROM produtos 
                       WHERE id = :produto_id 
                       AND afiliacao_ativa = 1 
                       AND (status_produto = 'ativo' OR status_produto IS NULL OR status_produto = '')
                       LIMIT 1";
        $stmt_produto = $pdo->prepare($sql_produto);
        $stmt_produto->execute([':produto_id' => $produto_id]);
        $produto = $stmt_produto->fetch(PDO::FETCH_ASSOC);
        
        if (!$produto) {
            $_GET['erro'] = 'produto_nao_encontrado';
        } elseif ($produto['usuario_id'] == $usuario_id) {
            $_GET['erro'] = 'nao_pode_ser_afiliado_proprio';
        } else {
            // Verificar se já é afiliado
            $sql_verificar = "SELECT id FROM afiliacoes WHERE produto_id = :produto_id AND usuario_id = :usuario_id LIMIT 1";
            $stmt_verificar = $pdo->prepare($sql_verificar);
            $stmt_verificar->execute([':produto_id' => $produto_id, ':usuario_id' => $usuario_id]);
            $ja_afiliado = $stmt_verificar->fetch(PDO::FETCH_ASSOC);
            
            if ($ja_afiliado) {
                $_GET['erro'] = 'ja_afiliado';
            } else {
                // Criar afiliação
                $comissao_padrao = !empty($produto['comissao_padrao']) ? floatval($produto['comissao_padrao']) : 0.00;
                
                try {
                    $sql_inserir = "INSERT INTO afiliacoes (produto_id, usuario_id, comissao_tipo, comissao_valor, status, created_at, updated_at) 
                                   VALUES (:produto_id, :usuario_id, 'percentual', :comissao_valor, 'ativo', NOW(), NOW())";
                    $stmt_inserir = $pdo->prepare($sql_inserir);
                    $stmt_inserir->execute([
                        ':produto_id' => $produto_id,
                        ':usuario_id' => $usuario_id,
                        ':comissao_valor' => $comissao_padrao
                    ]);
                    
                    $_GET['sucesso'] = 'afiliacao_criada';
                } catch (PDOException $e) {
                    error_log("Erro ao criar afiliação: " . $e->getMessage());
                    $_GET['erro'] = 'erro_criar_afiliacao';
                }
            }
        }
    } catch (PDOException $e) {
        error_log("Erro ao processar afiliação: " . $e->getMessage());
        $_GET['erro'] = 'erro_geral';
    }
}

// Buscar produtos do marketplace (todos os produtos ativos, similar ao marketplace público)
try {
    $sql_produtos = "SELECT p.id, p.nome, p.descricao, p.imagem, p.preco_atual, p.categoria, p.comissao_padrao, p.afiliacao_ativa, p.affiliate_material_url, p.usuario_id,
                            COALESCE(u.nome, 'Admin') as produtor_nome,
                            a.id as afiliacao_id, a.status as afiliacao_status
                    FROM produtos p
                    LEFT JOIN usuarios u ON u.id = p.usuario_id
                    LEFT JOIN afiliacoes a ON a.produto_id = p.id AND a.usuario_id = :usuario_id
                    WHERE p.is_marketplace = 1 
                    AND (p.status_produto = 'ativo' OR p.status_produto IS NULL OR p.status_produto = '')
                    ORDER BY p.id DESC";
    $stmt_produtos = $pdo->prepare($sql_produtos);
    $stmt_produtos->execute([':usuario_id' => $usuario_id]);
    $produtos = $stmt_produtos->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
    error_log("Erro ao buscar produtos: " . $e->getMessage());
    $produtos = [];
}
?>
<style>
    .marketplace-container {
        padding: 20px;
        max-width: 1200px;
        margin: 0 auto;
    }

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

    .header h1 {
        font-size: 32px;
        font-weight: 800;
        margin-bottom: 10px;
        color: var(--text-main);
    }

    .header p {
        font-size: 18px;
        color: var(--text-muted);
    }

    .back-link {
        display: inline-block;
        margin-bottom: 20px;
        color: var(--primary-color, #667eea);
        text-decoration: none;
        font-weight: 600;
        padding: 10px 20px;
        background: var(--bg-card);
        border: 1px solid var(--border-color);
        border-radius: 8px;
        transition: all 0.3s;
    }

    .back-link:hover {
        background: var(--bg-card);
        transform: translateX(-5px);
        border-color: var(--primary-color, #667eea);
    }

    .alert {
        padding: 15px 20px;
        border-radius: 8px;
        margin-bottom: 20px;
        font-weight: 600;
    }

    .alert-success {
        background: var(--color_message_success_bg, #d4edda);
        color: var(--color_message_success_text, #155724);
        border: 1px solid var(--border-color);
    }

    .alert-error {
        background: var(--color_message_error_bg, #f8d7da);
        color: var(--color_message_error_text, #721c24);
        border: 1px solid var(--border-color);
    }

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

    .product-card {
        background: var(--bg-card);
        border-radius: 15px;
        overflow: hidden;
        border: 1px solid var(--border-color);
        transition: all 0.3s;
    }

    .product-card:hover {
        transform: translateY(-5px);
        box-shadow: 0 15px 40px rgba(0, 0, 0, 0.1);
        border-color: var(--primary-color, #667eea);
    }

    .product-image {
        width: 100%;
        height: 200px;
        object-fit: cover;
        background: var(--bg-body);
        display: flex;
        align-items: center;
        justify-content: center;
        color: var(--text-muted);
        font-size: 48px;
    }

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

    .product-info {
        padding: 20px;
    }

    .product-name {
        font-size: 20px;
        font-weight: 700;
        margin-bottom: 10px;
        color: var(--text-main);
    }

    .product-produtor {
        font-size: 14px;
        color: var(--text-muted);
        margin-bottom: 10px;
    }

    .product-comissao {
        font-size: 16px;
        color: var(--color_status_success, #4ade80);
        font-weight: 600;
        margin-bottom: 15px;
    }

    .product-status {
        padding: 8px 15px;
        border-radius: 5px;
        font-size: 14px;
        font-weight: 600;
        margin-bottom: 15px;
        display: inline-block;
    }

    .status-ativo {
        background: var(--color_status_success, #4ade80);
        color: #ffffff;
    }

    .status-pendente {
        background: var(--color_status_warning, #fbbf24);
        color: #ffffff;
    }

    .btn-afiliar {
        width: 100%;
        padding: 12px;
        background: var(--primary-color, #667eea);
        color: #ffffff;
        border: none;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.3s;
    }

    .btn-afiliar:hover {
        transform: scale(1.02);
        box-shadow: 0 5px 20px rgba(0, 0, 0, 0.2);
    }

    .btn-afiliar:disabled {
        opacity: 0.5;
        cursor: not-allowed;
    }

    .no-products {
        text-align: center;
        padding: 60px 20px;
        background: var(--bg-card);
        border-radius: 15px;
        border: 1px solid var(--border-color);
    }

    .no-products i {
        font-size: 64px;
        color: var(--text-muted);
        margin-bottom: 20px;
    }

    .no-products h2 {
        color: var(--text-main);
        margin-bottom: 10px;
    }

    .no-products p {
        color: var(--text-muted);
    }

    @media (max-width: 768px) {
        .products-grid {
            grid-template-columns: 1fr;
        }
    }
</style>

<div class="marketplace-container">
    <a href="?page=home" class="back-link">
        <i class="fas fa-arrow-left"></i> Voltar para Área do Usuário
    </a>

    <div class="header">
        <h1><i class="fas fa-handshake"></i> Afiliação Marketplace</h1>
        <p>Seja afiliado de produtos e ganhe comissões</p>
    </div>

    <?php if (isset($_GET['sucesso']) && $_GET['sucesso'] == 'afiliacao_criada'): ?>
        <div class="alert alert-success">
            <i class="fas fa-check-circle"></i> Você se tornou afiliado com sucesso! Seu link de afiliado será gerado automaticamente.
        </div>
    <?php endif; ?>

    <?php if (isset($_GET['erro'])): ?>
        <div class="alert alert-error">
            <?php
            switch ($_GET['erro']) {
                case 'produto_nao_encontrado':
                    echo '<i class="fas fa-exclamation-triangle"></i> Produto não encontrado ou não aceita afiliação.';
                    break;
                case 'nao_pode_ser_afiliado_proprio':
                    echo '<i class="fas fa-exclamation-triangle"></i> Você não pode ser afiliado do seu próprio produto.';
                    break;
                case 'ja_afiliado':
                    echo '<i class="fas fa-info-circle"></i> Você já é afiliado deste produto.';
                    break;
                case 'erro_criar_afiliacao':
                    echo '<i class="fas fa-exclamation-triangle"></i> Erro ao criar afiliação. Tente novamente.';
                    break;
                default:
                    echo '<i class="fas fa-exclamation-triangle"></i> Ocorreu um erro. Tente novamente.';
            }
            ?>
        </div>
    <?php endif; ?>

    <?php if (empty($produtos)): ?>
        <div class="no-products">
            <i class="fas fa-box-open"></i>
            <h2>Nenhum produto disponível</h2>
            <p>Não há produtos que aceitam afiliação no momento.</p>
        </div>
    <?php else: ?>
        <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">
                        <h3 class="product-name"><?= htmlspecialchars($produto['nome']); ?></h3>
                        <p class="product-produtor">
                            <i class="fas fa-user"></i> Produtor: <?= htmlspecialchars($produto['produtor_nome']); ?>
                        </p>
                        <p class="product-comissao">
                            <i class="fas fa-percentage"></i> Comissão: <?= number_format(floatval($produto['comissao_padrao'] ?? 0), 2, ',', '.'); ?>%
                        </p>
                        
                        <?php
                        // Lógica do Material de Apoio: Exibe SE: (Tem link) E ( (É Afiliado Ativo) OU (É o Dono do Produto) )
                        $is_afiliado_ativo = (!empty($produto['afiliacao_status']) && $produto['afiliacao_status'] == 'ativo');
                        $is_dono = (!empty($produto['usuario_id']) && intval($produto['usuario_id']) == $usuario_id);
                        
                        if (!empty($produto['affiliate_material_url']) && ($is_afiliado_ativo || $is_dono)):
                        ?>
                            <a href="<?= htmlspecialchars($produto['affiliate_material_url'], ENT_QUOTES, 'UTF-8'); ?>" 
                               target="_blank" 
                               class="btn-afiliar" 
                               style="text-decoration: none; display: block; text-align: center; background: #10b981; margin-bottom: 10px;">
                                <i class="fas fa-folder-open"></i> Material de Apoio
                            </a>
                        <?php endif; ?>
                        
                        <?php
                        // Lógica do Botão de Afiliação baseado no status
                        $status_afiliacao = $produto['afiliacao_status'] ?? null;
                        
                        if ($is_dono): 
                            // Se for dono do produto, não mostra botão de afiliação
                        ?>
                            <div class="product-status" style="background: #6366f1; color: #ffffff;">
                                <i class="fas fa-crown"></i> Este é seu produto
                            </div>
                        <?php elseif (!empty($status_afiliacao)): 
                            // Se já tem status de afiliação
                            if ($status_afiliacao == 'ativo'):
                        ?>
                            <div class="product-status status-ativo">
                                <i class="fas fa-check"></i> Você já é afiliado
                            </div>
                            <a href="/views/dados_pessoais.php?produto_id=<?= intval($produto['id']); ?>&af=<?= intval($produto['afiliacao_id']); ?>" 
                               class="btn-afiliar" 
                               style="text-decoration: none; display: block; text-align: center;">
                                <i class="fas fa-link"></i> Ver meu link de afiliado
                            </a>
                        <?php 
                            elseif ($status_afiliacao == 'pendente'):
                        ?>
                            <div class="product-status status-pendente">
                                <i class="fas fa-clock"></i> Aguardando Aprovação
                            </div>
                            <button type="button" class="btn-afiliar" disabled>
                                <i class="fas fa-hourglass-half"></i> Solicitação Pendente
                            </button>
                        <?php 
                            else: // inativo ou outro status
                        ?>
                            <div class="product-status" style="background: #6b7280; color: #ffffff;">
                                <i class="fas fa-times-circle"></i> Afiliação Inativa
                            </div>
                        <?php 
                            endif;
                        elseif (!empty($produto['afiliacao_ativa']) && $produto['afiliacao_ativa'] == 1): 
                            // Se não tem afiliação mas o produto aceita afiliação
                        ?>
                            <form method="POST" style="margin: 0;">
                                <input type="hidden" name="produto_id" value="<?= intval($produto['id']); ?>">
                                <button type="submit" class="btn-afiliar">
                                    <i class="fas fa-handshake"></i> Quero ser afiliado
                                </button>
                            </form>
                        <?php else: 
                            // Produto não aceita afiliação
                        ?>
                            <div class="product-status" style="background: #6b7280; color: #ffffff;">
                                <i class="fas fa-info-circle"></i> Afiliação não disponível
                            </div>
                            <button type="button" class="btn-afiliar" disabled>
                                <i class="fas fa-lock"></i> Afiliação desativada
                            </button>
                        <?php endif; ?>
                    </div>
                </div>
            <?php endforeach; ?>
        </div>
    <?php endif; ?>
</div>
