<?php
// admin/ads.php

// Define BASE_PATH se não estiver definido
if (!defined('BASE_PATH')) {
    define('BASE_PATH', dirname(dirname(__FILE__)));
}

$pageTitle = 'Google AdSense';
$pageHeader = 'Gerenciamento de Anúncios';
$currentPage = 'ads';

require_once '../includes/config.php';
require_once '../includes/db.php';
require_once '../includes/functions.php';
require_once '../includes/auth.php';

// Requer autenticação
if (!$auth->isLoggedIn()) {
    redirect('admin/login.php');
    exit;
}

// Verificar permissões (opcional)
if (isset($_SESSION['admin_role']) && $_SESSION['admin_role'] !== 'admin') {
    setAlert('Você não tem permissão para acessar esta página.', ALERT_ERROR);
    redirect('admin/index.php');
    exit;
}

// Inicializar variáveis
$adBlocks = [];
$adsenseCode = '';
$adName = '';
$adPosition = 'middle';
$adPages = [];
$adActive = true;
$adId = 0;
$editMode = false;

// Posições disponíveis para inserção
$availablePositions = [
    'after-first' => 'Após o 1º parágrafo',
    'after-second' => 'Após o 2º parágrafo',
    'after-third' => 'Após o 3º parágrafo',
    'middle' => 'No meio do conteúdo',
    'before-last' => 'Antes do último parágrafo',
    'end' => 'No final do conteúdo',
    'sidebar' => 'Barra lateral',
    'header' => 'Cabeçalho da página',
    'footer' => 'Rodapé da página'
];

// Tipos de páginas disponíveis
$pageTypes = [
    'all' => 'Todas as páginas',
    'landing' => 'Páginas de Aterrisagem',
    'step1' => 'Primeira Etapa',
    'step2' => 'Segunda Etapa',
    'step3' => 'Terceira Etapa',
    'registration' => 'Página de Registro'
];

// Processar exclusão de anúncio
if (isset($_GET['delete']) && !empty($_GET['delete'])) {
    $deleteId = intval($_GET['delete']);
    
    try {
        $db->beginTransaction();
        
        // Excluir o anúncio
        $db->query("DELETE FROM ads WHERE id = :id");
        $db->bind(':id', $deleteId);
        $db->execute();
        
        $db->commit();
        setAlert('Anúncio excluído com sucesso!', ALERT_SUCCESS);
        redirect('admin/ads.php');
    } catch (Exception $e) {
        $db->rollback();
        setAlert('Erro ao excluir anúncio: ' . $e->getMessage(), ALERT_ERROR);
    }
}

// Processar edição de anúncio
if (isset($_GET['edit']) && !empty($_GET['edit'])) {
    $adId = intval($_GET['edit']);
    $editMode = true;
    
    try {
        // Buscar dados do anúncio
        $db->query("SELECT * FROM ads WHERE id = :id");
        $db->bind(':id', $adId);
        $ad = $db->single();
        
        if ($ad) {
            $adName = $ad['name'];
            $adsenseCode = $ad['code'];
            $adPosition = $ad['position'];
            $adActive = $ad['active'] == 1;
            $adPages = explode(',', $ad['page_types']);
        } else {
            setAlert('Anúncio não encontrado.', ALERT_ERROR);
            redirect('admin/ads.php');
        }
    } catch (Exception $e) {
        setAlert('Erro ao carregar anúncio: ' . $e->getMessage(), ALERT_ERROR);
    }
}

// Processar formulário de adição/edição
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $adName = isset($_POST['ad_name']) ? trim($_POST['ad_name']) : '';
    $adsenseCode = isset($_POST['adsense_code']) ? trim($_POST['adsense_code']) : '';
    $adPosition = isset($_POST['ad_position']) ? trim($_POST['ad_position']) : 'middle';
    $adPages = isset($_POST['ad_pages']) ? $_POST['ad_pages'] : [];
    $adActive = isset($_POST['ad_active']) && $_POST['ad_active'] == '1';
    $adId = isset($_POST['ad_id']) ? intval($_POST['ad_id']) : 0;
    
    $errors = [];
    
    // Validação
    if (empty($adName)) {
        $errors[] = 'O nome do anúncio é obrigatório.';
    }
    
    if (empty($adsenseCode)) {
        $errors[] = 'O código do AdSense é obrigatório.';
    }
    
    if (empty($adPages)) {
        $errors[] = 'Selecione pelo menos um tipo de página para exibir o anúncio.';
    }
    
    // Se não houver erros, salvar
    if (empty($errors)) {
        try {
            $db->beginTransaction();
            
            // Preparar página para salvamento
            $pageTypes = implode(',', $adPages);
            
            if ($adId > 0) {
                // Atualizar anúncio existente
                $db->query("UPDATE ads SET 
                            name = :name,
                            code = :code,
                            position = :position,
                            page_types = :page_types,
                            active = :active,
                            updated_at = NOW()
                            WHERE id = :id");
                $db->bind(':id', $adId);
                $message = 'Anúncio atualizado com sucesso!';
            } else {
                // Inserir novo anúncio
                $db->query("INSERT INTO ads (name, code, position, page_types, active, created_at, updated_at) 
                            VALUES (:name, :code, :position, :page_types, :active, NOW(), NOW())");
                $message = 'Anúncio criado com sucesso!';
            }
            
            $db->bind(':name', $adName);
            $db->bind(':code', $adsenseCode);
            $db->bind(':position', $adPosition);
            $db->bind(':page_types', $pageTypes);
            $db->bind(':active', $adActive ? 1 : 0);
            
            $db->execute();
            $db->commit();
            
            // Limpar cache se existir
            if (function_exists('clearPageCache')) {
                clearPageCache();
            }
            
            setAlert($message, ALERT_SUCCESS);
            redirect('admin/ads.php');
        } catch (Exception $e) {
            $db->rollback();
            $errors[] = 'Erro ao salvar anúncio: ' . $e->getMessage();
        }
    }
}

// Buscar todos os anúncios para exibição na tabela
try {
    $db->query("SELECT id, name, position, page_types, active, created_at, updated_at FROM ads ORDER BY created_at DESC");
    $adBlocks = $db->resultSet();
} catch (Exception $e) {
    setAlert('Erro ao carregar anúncios: ' . $e->getMessage(), ALERT_WARNING);
}

// Incluir o header
require_once 'inc/header.php';
?>

<div class="container-fluid px-4">
    <div class="page-header mb-4">
        <div class="row align-items-center">
            <div class="col-md-6">
                <h1 class="page-title"><?php echo $pageTitle; ?></h1>
                <p class="text-muted">Gerencie os blocos de anúncios AdSense no site.</p>
            </div>
            <div class="col-md-6 text-md-end">
                <a href="#" class="btn btn-outline-primary" data-bs-toggle="modal" data-bs-target="#helpModal">
                    <i class="fas fa-question-circle me-2"></i>Ajuda com AdSense
                </a>
            </div>
        </div>
    </div>

    <?php if (!empty($errors)): ?>
    <div class="alert alert-danger">
        <h5 class="mb-2"><i class="fas fa-exclamation-circle me-2"></i>Atenção!</h5>
        <ul class="mb-0">
            <?php foreach ($errors as $error): ?>
            <li><?php echo htmlspecialchars($error); ?></li>
            <?php endforeach; ?>
        </ul>
    </div>
    <?php endif; ?>

    <div class="row">
        <!-- Lista de Anúncios -->
        <div class="col-lg-7">
            <div class="card border-0 shadow-sm mb-4">
                <div class="card-header bg-white">
                    <div class="d-flex justify-content-between align-items-center">
                        <h5 class="card-title mb-0">Anúncios Configurados</h5>
                        <button class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#adModal">
                            <i class="fas fa-plus me-1"></i> Novo Anúncio
                        </button>
                    </div>
                </div>
                <div class="card-body p-0">
                    <?php if (empty($adBlocks)): ?>
                    <div class="empty-state p-4 text-center">
                        <div class="empty-state-icon">
                            <i class="fas fa-ad"></i>
                        </div>
                        <p class="mt-3">Nenhum anúncio configurado ainda.</p>
                        <button class="btn btn-primary btn-sm" data-bs-toggle="modal" data-bs-target="#adModal">
                            <i class="fas fa-plus me-1"></i> Adicionar Primeiro Anúncio
                        </button>
                    </div>
                    <?php else: ?>
                    <div class="table-responsive">
                        <table class="table table-hover">
                            <thead>
                                <tr>
                                    <th>Nome</th>
                                    <th>Posição</th>
                                    <th>Páginas</th>
                                    <th>Status</th>
                                    <th>Última Atualização</th>
                                    <th>Ações</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($adBlocks as $ad): ?>
                                <tr>
                                    <td><?php echo htmlspecialchars($ad['name']); ?></td>
                                    <td>
                                        <?php echo isset($availablePositions[$ad['position']]) ? 
                                            htmlspecialchars($availablePositions[$ad['position']]) : 
                                            htmlspecialchars($ad['position']); ?>
                                    </td>
                                    <td>
                                        <?php 
                                        $pageTypesArray = explode(',', $ad['page_types']);
                                        $pageTypeLabels = [];
                                        
                                        foreach ($pageTypesArray as $type) {
                                            if (isset($pageTypes[$type])) {
                                                $pageTypeLabels[] = '<span class="badge bg-light text-dark">' . htmlspecialchars($pageTypes[$type]) . '</span>';
                                            }
                                        }
                                        
                                        echo implode(' ', $pageTypeLabels);
                                        ?>
                                    </td>
                                    <td>
                                        <?php if ($ad['active']): ?>
                                        <span class="badge bg-success">Ativo</span>
                                        <?php else: ?>
                                        <span class="badge bg-secondary">Inativo</span>
                                        <?php endif; ?>
                                    </td>
                                    <td><?php echo date('d/m/Y H:i', strtotime($ad['updated_at'])); ?></td>
                                    <td>
                                        <div class="btn-group btn-group-sm">
                                            <a href="?edit=<?php echo $ad['id']; ?>" class="btn btn-outline-primary">
                                                <i class="fas fa-edit"></i>
                                            </a>
                                            <a href="?delete=<?php echo $ad['id']; ?>" class="btn btn-outline-danger" 
                                               onclick="return confirm('Tem certeza que deseja excluir este anúncio?')">
                                                <i class="fas fa-trash"></i>
                                            </a>
                                        </div>
                                    </td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                    <?php endif; ?>
                </div>
            </div>
        </div>
        
        <!-- Formulário de Anúncio -->
        <div class="col-lg-5">
            <div class="card border-0 shadow-sm mb-4">
                <div class="card-header bg-white">
                    <h5 class="card-title mb-0">
                        <?php echo $editMode ? 'Editar Anúncio' : 'Novo Anúncio'; ?>
                    </h5>
                </div>
                <div class="card-body">
                    <form method="post" action="">
                        <input type="hidden" name="ad_id" value="<?php echo $adId; ?>">
                        
                        <div class="mb-3">
                            <label for="ad_name" class="form-label">Nome do Anúncio <span class="text-danger">*</span></label>
                            <input type="text" class="form-control" id="ad_name" name="ad_name" 
                                   value="<?php echo htmlspecialchars($adName); ?>" required>
                            <div class="form-text">Nome interno para identificação (não aparece para visitantes).</div>
                        </div>
                        
                        <div class="mb-3">
                            <label for="adsense_code" class="form-label">Código do AdSense <span class="text-danger">*</span></label>
                            <textarea class="form-control" id="adsense_code" name="adsense_code" 
                                      rows="4" required><?php echo htmlspecialchars($adsenseCode); ?></textarea>
                            <div class="form-text">Cole o código completo fornecido pelo Google AdSense.</div>
                        </div>
                        
                        <div class="mb-3">
                            <label for="ad_position" class="form-label">Posição no Conteúdo <span class="text-danger">*</span></label>
                            <select class="form-select" id="ad_position" name="ad_position" required>
                                <?php foreach ($availablePositions as $value => $label): ?>
                                <option value="<?php echo $value; ?>" <?php echo $adPosition == $value ? 'selected' : ''; ?>>
                                    <?php echo htmlspecialchars($label); ?>
                                </option>
                                <?php endforeach; ?>
                            </select>
                            <div class="form-text">Onde o anúncio será exibido na página.</div>
                        </div>
                        
                        <div class="mb-3">
                            <label class="form-label">Exibir em Quais Páginas <span class="text-danger">*</span></label>
                            <div class="row g-3">
                                <?php foreach ($pageTypes as $value => $label): ?>
                                <div class="col-md-6">
                                    <div class="form-check">
                                        <input class="form-check-input" type="checkbox" 
                                               name="ad_pages[]" value="<?php echo $value; ?>" 
                                               id="page_<?php echo $value; ?>"
                                               <?php echo in_array($value, $adPages) ? 'checked' : ''; ?>>
                                        <label class="form-check-label" for="page_<?php echo $value; ?>">
                                            <?php echo htmlspecialchars($label); ?>
                                        </label>
                                    </div>
                                </div>
                                <?php endforeach; ?>
                            </div>
                        </div>
                        
                        <div class="mb-3">
                            <div class="form-check form-switch">
                                <input class="form-check-input" type="checkbox" id="ad_active" 
                                       name="ad_active" value="1" <?php echo $adActive ? 'checked' : ''; ?>>
                                <label class="form-check-label" for="ad_active">Anúncio Ativo</label>
                            </div>
                            <div class="form-text">Desmarque para pausar a exibição do anúncio temporariamente.</div>
                        </div>
                        
                        <div class="mt-4">
                            <button type="submit" class="btn btn-primary w-100">
                                <i class="fas fa-save me-2"></i><?php echo $editMode ? 'Atualizar Anúncio' : 'Salvar Anúncio'; ?>
                            </button>
                            
                            <?php if ($editMode): ?>
                            <a href="ads.php" class="btn btn-outline-secondary w-100 mt-2">
                                <i class="fas fa-times me-2"></i>Cancelar Edição
                            </a>
                            <?php endif; ?>
                        </div>
                    </form>
                </div>
            </div>
            
            <!-- Dicas Rápidas -->
            <div class="card border-0 shadow-sm mb-4">
                <div class="card-header bg-white">
                    <h5 class="card-title mb-0">Dicas Rápidas</h5>
                </div>
                <div class="card-body">
                    <ul class="tips-list">
                        <li><i class="fas fa-check-circle text-success"></i> Evite colocar muitos anúncios na mesma página para não prejudicar a experiência do usuário.</li>
                        <li><i class="fas fa-check-circle text-success"></i> A posição "Meio do conteúdo" geralmente tem melhor desempenho.</li>
                        <li><i class="fas fa-check-circle text-success"></i> Respeite as políticas do Google AdSense para evitar penalizações.</li>
                        <li><i class="fas fa-exclamation-triangle text-warning"></i> Não coloque anúncios muito próximos de botões de CTA para evitar cliques acidentais.</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
</div>

<!-- Modal de Ajuda do AdSense -->
<div class="modal fade" id="helpModal" tabindex="-1" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Ajuda com Google AdSense</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Fechar"></button>
            </div>
            <div class="modal-body">
                <div class="help-section">
                    <h5><i class="fas fa-question-circle text-primary me-2"></i>Como obter o código do AdSense?</h5>
                    <p>Siga os passos abaixo para obter o código de anúncio do Google AdSense:</p>
                    <ol>
                        <li>Acesse sua conta do Google AdSense em <a href="https://www.google.com/adsense" target="_blank">google.com/adsense</a></li>
                        <li>Clique em "Anúncios" no menu lateral e depois em "Visão geral"</li>
                        <li>Clique em "Por unidade de anúncio" e depois em "+ Novo anúncio"</li>
                        <li>Selecione o tipo de anúncio desejado (ex: Anúncio de exibição)</li>
                        <li>Configure o formato e o estilo do anúncio</li>
                        <li>Clique em "Criar" e copie o código gerado</li>
                        <li>Cole o código no campo "Código do AdSense" no formulário</li>
                    </ol>
                </div>
                
                <div class="help-section">
                    <h5><i class="fas fa-exclamation-triangle text-warning me-2"></i>Políticas importantes do AdSense</h5>
                    <ul>
                        <li>Não coloque mais de 3 anúncios por página</li>
                        <li>Não incentive cliques nos anúncios</li>
                        <li>Não coloque anúncios em conteúdo protegido por direitos autorais</li>
                        <li>Não coloque anúncios em páginas com conteúdo impróprio</li>
                        <li>Garanta que o conteúdo da página seja relevante e original</li>
                    </ul>
                    <p><a href="https://support.google.com/adsense/answer/48182" target="_blank">Saiba mais sobre as políticas do AdSense</a></p>
                </div>
                
                <div class="help-section">
                    <h5><i class="fas fa-chart-line text-success me-2"></i>Dicas para otimizar seu desempenho</h5>
                    <ul>
                        <li>Use formatos de anúncios responsivos para melhor adaptação a diferentes dispositivos</li>
                        <li>Teste diferentes posições para encontrar o melhor desempenho</li>
                        <li>Considere o uso de anúncios no meio do conteúdo, que geralmente têm melhor CTR</li>
                        <li>Monitore regularmente o desempenho no painel do AdSense</li>
                        <li>Mantenha seu site rápido e com bom desempenho para melhorar resultados</li>
                    </ul>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Fechar</button>
                <a href="https://support.google.com/adsense" target="_blank" class="btn btn-primary">
                    <i class="fas fa-external-link-alt me-2"></i>Suporte AdSense
                </a>
            </div>
        </div>
    </div>
</div>
<!-- Modal para Adicionar/Editar Anúncio -->
<div class="modal fade" id="adModal" tabindex="-1" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Adicionar Novo Anúncio</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Fechar"></button>
            </div>
            <div class="modal-body">
                <form method="post" action="" id="modalAdForm">
                    <div class="mb-3">
                        <label for="modal_ad_name" class="form-label">Nome do Anúncio <span class="text-danger">*</span></label>
                        <input type="text" class="form-control" id="modal_ad_name" name="ad_name" required>
                        <div class="form-text">Nome interno para identificação (não aparece para visitantes).</div>
                    </div>
                    
                    <div class="mb-3">
                        <label for="modal_adsense_code" class="form-label">Código do AdSense <span class="text-danger">*</span></label>
                        <textarea class="form-control" id="modal_adsense_code" name="adsense_code" rows="4" required></textarea>
                        <div class="form-text">Cole o código completo fornecido pelo Google AdSense.</div>
                    </div>
                    
                    <div class="mb-3">
                        <label for="modal_ad_position" class="form-label">Posição no Conteúdo <span class="text-danger">*</span></label>
                        <select class="form-select" id="modal_ad_position" name="ad_position" required>
                            <?php foreach ($availablePositions as $value => $label): ?>
                            <option value="<?php echo $value; ?>">
                                <?php echo htmlspecialchars($label); ?>
                            </option>
                            <?php endforeach; ?>
                        </select>
                        <div class="form-text">Onde o anúncio será exibido na página.</div>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Exibir em Quais Páginas <span class="text-danger">*</span></label>
                        <div class="row g-3">
                            <?php foreach ($pageTypes as $value => $label): ?>
                            <div class="col-md-6">
                                <div class="form-check">
                                    <input class="form-check-input" type="checkbox" 
                                           name="ad_pages[]" value="<?php echo $value; ?>" 
                                           id="modal_page_<?php echo $value; ?>">
                                    <label class="form-check-label" for="modal_page_<?php echo $value; ?>">
                                        <?php echo htmlspecialchars($label); ?>
                                    </label>
                                </div>
                            </div>
                            <?php endforeach; ?>
                        </div>
                    </div>
                    
                    <div class="mb-3">
                        <div class="form-check form-switch">
                            <input class="form-check-input" type="checkbox" id="modal_ad_active" 
                                   name="ad_active" value="1" checked>
                            <label class="form-check-label" for="modal_ad_active">Anúncio Ativo</label>
                        </div>
                        <div class="form-text">Desmarque para pausar a exibição do anúncio temporariamente.</div>
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
                <button type="button" class="btn btn-primary" id="saveAdBtn">
                    <i class="fas fa-save me-2"></i>Salvar Anúncio
                </button>
            </div>
        </div>
    </div>
</div>
<!-- Estilos específicos da página -->
<style>
    .empty-state {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        padding: 3rem;
        text-align: center;
    }
    
    .empty-state-icon {
        width: 80px;
        height: 80px;
        border-radius: 50%;
        background: var(--gradient);
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 32px;
        color: white;
        margin-bottom: 1rem;
    }
    
    .tips-list {
        padding-left: 1.5rem;
        list-style-type: none;
    }
    
    .tips-list li {
        position: relative;
        padding-left: 0.5rem;
        margin-bottom: 0.75rem;
    }
    
    .tips-list li i {
        margin-right: 0.5rem;
    }
    
    .help-section {
        margin-bottom: 2rem;
        padding-bottom: 1.5rem;
        border-bottom: 1px solid rgba(0,0,0,0.1);
    }
    
    .help-section:last-child {
        border-bottom: none;
        margin-bottom: 0;
        padding-bottom: 0;
    }
    
    .badge {
        font-weight: 500;
        padding: 0.35em 0.65em;
    }
</style>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Ação do botão Salvar dentro do modal
    document.getElementById('saveAdBtn').addEventListener('click', function() {
        // Validar formulário
        const adsenseCode = document.getElementById('modal_adsense_code').value.trim();
        const adPages = document.querySelectorAll('#modalAdForm input[name="ad_pages[]"]:checked');
        
        if (!adsenseCode.includes('google.com/pagead') && !adsenseCode.includes('adsbygoogle')) {
            alert('O código do AdSense parece inválido. Certifique-se de colar o código completo fornecido pelo Google AdSense.');
            return;
        }
        
        if (adPages.length === 0) {
            alert('Selecione pelo menos um tipo de página para exibir o anúncio.');
            return;
        }
        
        // Enviar formulário
        document.getElementById('modalAdForm').submit();
    });
    
    // Marcar "Todas as páginas" quando o modal for aberto
    document.getElementById('adModal').addEventListener('shown.bs.modal', function() {
        document.getElementById('modal_page_all').checked = true;
    });
    
    // Validação do código AdSense no formulário da página
    const mainForm = document.querySelector('form:not(#modalAdForm)');
    if (mainForm) {
        mainForm.addEventListener('submit', function(e) {
            const adsenseCode = document.getElementById('adsense_code').value.trim();
            const adPages = document.querySelectorAll('input[name="ad_pages[]"]:checked');
            
            if (!adsenseCode.includes('google.com/pagead') && !adsenseCode.includes('adsbygoogle')) {
                e.preventDefault();
                alert('O código do AdSense parece inválido. Certifique-se de colar o código completo fornecido pelo Google AdSense.');
                return;
            }
            
            if (adPages.length === 0) {
                e.preventDefault();
                alert('Selecione pelo menos um tipo de página para exibir o anúncio.');
                return;
            }
        });
    }
});
</script>
<?php require_once 'inc/footer.php'; ?>