<?php
/**
 * Minhas Compras - Área do Usuário
 * 
 * Exibe todos os produtos comprados pelo usuário logado
 */

require_once __DIR__ . '/../../config/config_db.php';
require_once __DIR__ . '/../../backend/auth_helper.php';

$usuario_id = get_usuario_id();
$usuario = usuario_logado();
$usuario_email = $usuario['email'] ?? null;

if (!$usuario_id || !$usuario_email) {
    header('Location: /dashboard/usuario.php');
    exit;
}

// Buscar produtos comprados pelo usuário
// Produtos podem vir de duas fontes:
// 1. Transações aprovadas (todos os tipos de entrega)
// 2. Matrículas (para área de membros)

$produtos_comprados = [];

try {
    // Verificar se coluna usuario_id existe na tabela transacoes
    $colunas_transacoes = [];
    try {
        $stmt_cols = $pdo->query("SHOW COLUMNS FROM transacoes");
        $colunas_transacoes = $stmt_cols->fetchAll(PDO::FETCH_COLUMN);
    } catch (PDOException $e) {
        error_log("AVISO: Erro ao verificar colunas de transacoes: " . $e->getMessage());
    }
    
    $has_usuario_id = in_array('usuario_id', $colunas_transacoes);
    $has_produto_id = in_array('produto_id', $colunas_transacoes);
    
    // Buscar via transações aprovadas
    if ($has_usuario_id && $has_produto_id) {
        // Query completa com usuario_id e produto_id
        $stmt = $pdo->prepare("
            SELECT DISTINCT
                p.id,
                p.nome,
                p.descricao,
                p.imagem,
                p.preco_atual,
                p.tipo_entrega,
                p.link_entregavel,
                p.entrega_dados_titulo,
                p.entrega_dados_descricao,
                p.entrega_dados_acesso,
                p.entrega_dados_botao_texto,
                p.entrega_dados_botao_link,
                t.id AS transacao_id,
                t.data_criacao AS data_compra,
                'transacao' AS origem
            FROM transacoes t
            INNER JOIN produtos p ON p.id = t.produto_id
            WHERE (t.email = :email OR t.usuario_id = :usuario_id)
            AND t.status = 'Aprovado'
            ORDER BY t.data_criacao DESC
        ");
        $stmt->execute([
            ':email' => $usuario_email,
            ':usuario_id' => $usuario_id
        ]);
    } else {
        // Query simplificada apenas com email (retrocompatibilidade)
        $stmt = $pdo->prepare("
            SELECT DISTINCT
                p.id,
                p.nome,
                p.descricao,
                p.imagem,
                p.preco_atual,
                p.tipo_entrega,
                p.link_entregavel,
                p.entrega_dados_titulo,
                p.entrega_dados_descricao,
                p.entrega_dados_acesso,
                p.entrega_dados_botao_texto,
                p.entrega_dados_botao_link,
                t.id AS transacao_id,
                t.data_criacao AS data_compra,
                'transacao' AS origem
            FROM transacoes t
            INNER JOIN produtos p ON p.id = t.produto_id
            WHERE t.email = :email
            AND t.status = 'Aprovado'
            ORDER BY t.data_criacao DESC
        ");
        $stmt->execute([
            ':email' => $usuario_email
        ]);
    }
    $transacoes = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    // Buscar via matrículas (para área de membros)
    $stmt_mat = $pdo->prepare("
        SELECT DISTINCT
            p.id,
            p.nome,
            p.descricao,
            p.imagem,
            p.preco_atual,
            p.tipo_entrega,
            p.link_entregavel,
            p.entrega_dados_titulo,
            p.entrega_dados_descricao,
            p.entrega_dados_acesso,
            p.entrega_dados_botao_texto,
            p.entrega_dados_botao_link,
            m.id AS matricula_id,
            m.data_inicio AS data_compra,
            'matricula' AS origem
        FROM matriculas m
        INNER JOIN produtos p ON p.id = m.produto_id
        WHERE m.usuario_id = :usuario_id
        AND m.status = 'ativo'
        ORDER BY m.data_inicio DESC
    ");
    $stmt_mat->execute([':usuario_id' => $usuario_id]);
    $matriculas = $stmt_mat->fetchAll(PDO::FETCH_ASSOC);
    
    // Combinar resultados, evitando duplicatas (priorizar transação)
    $produtos_ids = [];
    
    // Adicionar produtos de transações primeiro
    foreach ($transacoes as $produto) {
        if (!in_array($produto['id'], $produtos_ids)) {
            $produtos_comprados[] = $produto;
            $produtos_ids[] = $produto['id'];
        }
    }
    
    // Adicionar produtos de matrículas que não estão nas transações
    foreach ($matriculas as $produto) {
        if (!in_array($produto['id'], $produtos_ids)) {
            $produtos_comprados[] = $produto;
            $produtos_ids[] = $produto['id'];
        }
    }
    
} catch (PDOException $e) {
    error_log("Erro ao buscar produtos comprados: " . $e->getMessage());
    $produtos_comprados = [];
}

// Função para gerar link de acesso baseado no tipo de entrega
function getLinkAcesso($produto) {
    $tipo_entrega = $produto['tipo_entrega'] ?? 'link';
    
    if ($tipo_entrega == 'area_membros') {
        return "/dashboard/pages_usuario/curso_player.php?produto_id=" . intval($produto['id']);
    } elseif ($tipo_entrega == 'link') {
        return $produto['link_entregavel'] ?? '#';
    } elseif ($tipo_entrega == 'dados_acesso') {
        // Para dados_acesso, retornar link do botão se existir, senão #
        return $produto['entrega_dados_botao_link'] ?? '#';
    }
    
    return '#';
}

// Função para determinar texto do botão
function getTextoBotao($produto) {
    $tipo_entrega = $produto['tipo_entrega'] ?? 'link';
    
    if ($tipo_entrega == 'area_membros') {
        return 'Acessar Área de Membros';
    } elseif ($tipo_entrega == 'dados_acesso') {
        return $produto['entrega_dados_botao_texto'] ?? 'Acessar';
    } else {
        return 'Acessar Produto';
    }
}
?>

<div style="max-width: 1400px; margin: 0 auto;">
    <div style="margin-bottom: 30px;">
        <h2 style="font-size: 28px; font-weight: 700; color: var(--text-main); margin-bottom: 10px;">
            Minhas Compras
        </h2>
        <p style="color: var(--text-muted); font-size: 16px;">
            Acesse todos os produtos que você comprou ou teve acesso liberado.
        </p>
    </div>

    <?php if (empty($produtos_comprados)): ?>
        <div class="card" style="padding: 60px 40px; text-align: center;">
            <div style="font-size: 64px; color: var(--text-muted); margin-bottom: 20px;">
                <i class="fas fa-shopping-bag"></i>
            </div>
            <h3 style="font-size: 24px; font-weight: 600; color: var(--text-main); margin-bottom: 10px;">
                Nenhuma compra encontrada
            </h3>
            <p style="color: var(--text-muted); font-size: 16px; margin-bottom: 30px;">
                Você ainda não possui produtos comprados.
            </p>
            <a href="/views/marketplace.php" style="display: inline-block; padding: 12px 30px; background: linear-gradient(135deg, #667eea, #764ba2); color: white; border-radius: 8px; text-decoration: none; font-weight: 600; transition: transform 0.2s;">
                Ver Produtos Disponíveis
            </a>
        </div>
    <?php else: ?>
        <div style="display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 25px;">
            <?php foreach ($produtos_comprados as $produto): ?>
                <div class="card" style="padding: 0; overflow: hidden; transition: transform 0.3s ease, box-shadow 0.3s ease; border-radius: 12px;">
                    <!-- Imagem do Produto -->
                    <div style="width: 100%; height: 200px; overflow: hidden; background: linear-gradient(135deg, #667eea, #764ba2); position: relative;">
                        <?php if (!empty($produto['imagem'])): ?>
                            <img src="<?= htmlspecialchars($produto['imagem']) ?>" 
                                 alt="<?= htmlspecialchars($produto['nome']) ?>" 
                                 style="width: 100%; height: 100%; object-fit: cover;">
                        <?php else: ?>
                            <div style="width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; color: white; font-size: 48px;">
                                <i class="fas fa-box-open"></i>
                            </div>
                        <?php endif; ?>
                        
                        <!-- Badge de Tipo de Entrega -->
                        <div style="position: absolute; top: 15px; right: 15px; padding: 6px 12px; background: rgba(0,0,0,0.7); color: white; border-radius: 20px; font-size: 12px; font-weight: 600;">
                            <?php
                            $tipo_badge = [
                                'area_membros' => 'Área de Membros',
                                'dados_acesso' => 'Dados de Acesso',
                                'link' => 'Link Direto'
                            ];
                            echo $tipo_badge[$produto['tipo_entrega'] ?? 'link'] ?? 'Produto';
                            ?>
                        </div>
                    </div>
                    
                    <!-- Conteúdo do Card -->
                    <div style="padding: 25px;">
                        <h3 style="font-size: 20px; font-weight: 700; color: var(--text-main); margin-bottom: 10px; line-height: 1.3;">
                            <?= htmlspecialchars($produto['nome']) ?>
                        </h3>
                        
                        <?php if (!empty($produto['descricao'])): ?>
                            <p style="color: var(--text-muted); font-size: 14px; margin-bottom: 15px; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;">
                                <?= htmlspecialchars($produto['descricao']) ?>
                            </p>
                        <?php endif; ?>
                        
                        <!-- Data de Compra -->
                        <?php if (!empty($produto['data_compra'])): ?>
                            <div style="margin-bottom: 20px; padding: 10px; background: rgba(102, 126, 234, 0.1); border-radius: 8px;">
                                <p style="font-size: 12px; color: var(--text-muted); margin-bottom: 4px;">Acesso liberado em:</p>
                                <p style="font-size: 14px; font-weight: 600; color: var(--text-main);">
                                    <?= date('d/m/Y', strtotime($produto['data_compra'])) ?>
                                </p>
                            </div>
                        <?php endif; ?>
                        
                        <!-- Botão de Acesso -->
                        <?php
                        $link_acesso = getLinkAcesso($produto);
                        $texto_botao = getTextoBotao($produto);
                        $target = ($produto['tipo_entrega'] == 'link' && !empty($produto['link_entregavel'])) ? '_blank' : '_self';
                        ?>
                        
                        <a href="<?= htmlspecialchars($link_acesso) ?>" 
                           target="<?= $target ?>"
                           style="display: block; width: 100%; padding: 14px 20px; background: linear-gradient(135deg, #667eea, #764ba2); color: white; border-radius: 8px; text-decoration: none; font-weight: 600; text-align: center; transition: transform 0.2s, box-shadow 0.2s; font-size: 15px;">
                            <i class="fas fa-arrow-right" style="margin-right: 8px;"></i>
                            <?= htmlspecialchars($texto_botao) ?>
                        </a>
                        
                        <!-- Link adicional para dados de acesso -->
                        <?php if ($produto['tipo_entrega'] == 'dados_acesso' && !empty($produto['entrega_dados_acesso'])): ?>
                            <div style="margin-top: 15px; padding: 15px; background: rgba(102, 126, 234, 0.05); border-radius: 8px; border-left: 4px solid #667eea;">
                                <p style="font-size: 13px; color: var(--text-muted); margin-bottom: 8px; font-weight: 600;">
                                    <?= htmlspecialchars($produto['entrega_dados_titulo'] ?? 'Dados de Acesso') ?>
                                </p>
                                <?php if (!empty($produto['entrega_dados_descricao'])): ?>
                                    <p style="font-size: 12px; color: var(--text-muted); margin-bottom: 8px;">
                                        <?= htmlspecialchars($produto['entrega_dados_descricao']) ?>
                                    </p>
                                <?php endif; ?>
                                <div style="padding: 10px; background: rgba(0,0,0,0.05); border-radius: 6px; font-family: monospace; font-size: 12px; color: var(--text-main); word-break: break-all;">
                                    <?= nl2br(htmlspecialchars($produto['entrega_dados_acesso'])) ?>
                                </div>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
            <?php endforeach; ?>
        </div>
    <?php endif; ?>
</div>

<style>
.card {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 12px;
    box-shadow: var(--shadow-soft);
}

.card:hover {
    transform: translateY(-5px);
    box-shadow: 0 8px 30px rgba(0,0,0,0.12);
}

@media (max-width: 768px) {
    div[style*="grid-template-columns"] {
        grid-template-columns: 1fr !important;
    }
}
</style>
