<?php
/**
 * Página: Enviar Notificações (Broadcast)
 * 
 * Permite ao admin criar e enviar notificações para todos os usuários
 */

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

$mensagem = '';
$tipo_mensagem = '';

// Processar ações de notificações
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acao'])) {
    if ($_POST['acao'] === 'excluir_notificacao') {
        $notif_id = intval($_POST['notificacao_id'] ?? 0);
        if ($notif_id > 0) {
            try {
                $stmt = $pdo->prepare("DELETE FROM notificacoes WHERE id = ?");
                $stmt->execute([$notif_id]);
                $mensagem = 'Notificação excluída com sucesso!';
                $tipo_mensagem = 'success';
            } catch (PDOException $e) {
                error_log("Erro ao excluir notificação: " . $e->getMessage());
                $mensagem = 'Erro ao excluir notificação.';
                $tipo_mensagem = 'error';
            }
        }
    } elseif ($_POST['acao'] === 'editar_notificacao') {
        $notif_id = intval($_POST['notificacao_id'] ?? 0);
        $titulo = trim($_POST['titulo'] ?? '');
        $conteudo = trim($_POST['conteudo'] ?? '');
        $tipo = $_POST['tipo'] ?? 'texto';
        $imagem_url = trim($_POST['imagem_url'] ?? '');
        $video_url = trim($_POST['video_url'] ?? '');
        $botao_texto = trim($_POST['botao_texto'] ?? '');
        $botao_url = trim($_POST['botao_url'] ?? '');
        $agendado = isset($_POST['agendado']) && $_POST['agendado'] === '1' ? 1 : 0;
        $data_envio = $agendado ? ($_POST['data_envio'] ?? null) : date('Y-m-d H:i:s');
        
        if ($notif_id > 0 && !empty($titulo) && !empty($conteudo)) {
            try {
                $status = $agendado ? 'agendado' : 'enviado';
                $stmt = $pdo->prepare("
                    UPDATE notificacoes 
                    SET titulo = ?, conteudo = ?, tipo = ?, imagem_url = ?, video_url = ?, 
                        botao_texto = ?, botao_url = ?, agendado = ?, data_envio = ?, status = ?
                    WHERE id = ?
                ");
                $stmt->execute([
                    $titulo, $conteudo, $tipo, $imagem_url ?: null, $video_url ?: null,
                    $botao_texto ?: null, $botao_url ?: null, $agendado, $data_envio, $status, $notif_id
                ]);
                $mensagem = 'Notificação atualizada com sucesso!';
                $tipo_mensagem = 'success';
            } catch (PDOException $e) {
                error_log("Erro ao editar notificação: " . $e->getMessage());
                $mensagem = 'Erro ao editar notificação.';
                $tipo_mensagem = 'error';
            }
        }
    }
}

// Processar criação de notificação
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acao']) && $_POST['acao'] === 'criar_notificacao') {
    $titulo = trim($_POST['titulo'] ?? '');
    $conteudo = trim($_POST['conteudo'] ?? '');
    $tipo = $_POST['tipo'] ?? 'texto';
    $imagem_url = trim($_POST['imagem_url'] ?? '');
    $video_url = trim($_POST['video_url'] ?? '');
    $botao_texto = trim($_POST['botao_texto'] ?? '');
    $botao_url = trim($_POST['botao_url'] ?? '');
    $agendado = isset($_POST['agendado']) && $_POST['agendado'] === '1' ? 1 : 0;
    $data_envio = $agendado ? ($_POST['data_envio'] ?? null) : null;
    
    $usuario = usuario_logado();
    
    try {
        $stmt = $pdo->prepare("
            INSERT INTO notificacoes 
            (titulo, conteudo, tipo, imagem_url, video_url, botao_texto, botao_url, agendado, data_envio, status, criado_por)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        ");
        
        $status = $agendado ? 'agendado' : 'enviado';
        
        // Se não for agendado, definir data_envio como agora
        if (!$agendado) {
            $data_envio = date('Y-m-d H:i:s');
        }
        
        $stmt->execute([
            $titulo,
            $conteudo,
            $tipo,
            $imagem_url ?: null,
            $video_url ?: null,
            $botao_texto ?: null,
            $botao_url ?: null,
            $agendado,
            $data_envio,
            $status,
            $usuario['id']
        ]);
        
        $mensagem = 'Notificação criada com sucesso!';
        $tipo_mensagem = 'success';
    } catch (PDOException $e) {
        error_log("Erro ao criar notificação: " . $e->getMessage());
        $mensagem = 'Erro ao criar notificação.';
        $tipo_mensagem = 'error';
    }
}

// Buscar notificações enviadas
try {
    $stmt = $pdo->query("
        SELECT n.*, u.nome as criado_por_nome
        FROM notificacoes n
        LEFT JOIN usuarios u ON u.id = n.criado_por
        ORDER BY n.created_at DESC
        LIMIT 20
    ");
    $notificacoes = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
    error_log("Erro ao buscar notificações: " . $e->getMessage());
    $notificacoes = [];
}
?>

<style>
    .notificacoes-container {
        max-width: 1200px;
        margin: 0 auto;
    }
    
    .form-card {
        background: var(--bg-card);
        border-radius: 12px;
        padding: 24px;
        margin-bottom: 30px;
        box-shadow: var(--shadow-soft);
        border: 1px solid var(--border-color);
    }
    
    .form-group {
        margin-bottom: 20px;
    }
    
    .form-group label {
        display: block;
        margin-bottom: 8px;
        font-weight: 600;
        color: var(--text-main);
    }
    
    .form-group input,
    .form-group textarea,
    .form-group select {
        width: 100%;
        padding: 12px;
        border: 1px solid var(--border-color);
        border-radius: 8px;
        background: var(--bg-body);
        color: var(--text-main);
        font-family: inherit;
        font-size: 14px;
    }
    
    .form-group textarea {
        min-height: 120px;
        resize: vertical;
    }
    
    .btn-primary {
        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
        color: white;
        padding: 12px 24px;
        border: none;
        border-radius: 8px;
        font-weight: 600;
        cursor: pointer;
        transition: transform 0.2s;
    }
    
    .btn-primary:hover {
        transform: translateY(-2px);
    }
</style>

<div class="notificacoes-container">
    <h2 style="margin-bottom: 30px;"><i class="fas fa-bell"></i> Enviar Notificações</h2>
    
    <?php if ($mensagem): ?>
        <div class="mensagem <?= $tipo_mensagem ?>" style="padding: 15px; border-radius: 8px; margin-bottom: 20px; background: <?= $tipo_mensagem === 'success' ? '#d1fae5' : '#fee2e2' ?>; color: <?= $tipo_mensagem === 'success' ? '#065f46' : '#991b1b' ?>;">
            <?= htmlspecialchars($mensagem) ?>
        </div>
    <?php endif; ?>
    
    <div class="form-card">
        <h3 style="margin-bottom: 20px;">Criar Nova Notificação</h3>
        <form method="POST">
            <input type="hidden" name="acao" value="criar_notificacao">
            
            <div class="form-group">
                <label>Título *</label>
                <input type="text" name="titulo" required>
            </div>
            
            <div class="form-group">
                <label>Conteúdo *</label>
                <textarea name="conteudo" required></textarea>
            </div>
            
            <div class="form-group">
                <label>Tipo de Conteúdo</label>
                <select name="tipo" id="tipoNotificacao" onchange="toggleCampos()">
                    <option value="texto">Apenas Texto</option>
                    <option value="imagem">Imagem</option>
                    <option value="video">Vídeo</option>
                    <option value="acao">Com Botão de Ação</option>
                </select>
            </div>
            
            <div class="form-group" id="campoImagem" style="display: none;">
                <label>URL da Imagem</label>
                <input type="url" name="imagem_url" placeholder="https://exemplo.com/imagem.jpg">
            </div>
            
            <div class="form-group" id="campoVideo" style="display: none;">
                <label>URL do Vídeo (iframe ou link)</label>
                <input type="url" name="video_url" placeholder="https://youtube.com/watch?v=...">
            </div>
            
            <div class="form-group" id="campoBotao" style="display: none;">
                <label>Texto do Botão</label>
                <input type="text" name="botao_texto" placeholder="Clique aqui">
                <label style="margin-top: 12px;">URL do Botão</label>
                <input type="url" name="botao_url" placeholder="https://exemplo.com">
            </div>
            
            <div class="form-group">
                <label>
                    <input type="checkbox" name="agendado" value="1" id="agendadoCheck" onchange="toggleAgendamento()">
                    Agendar Envio
                </label>
            </div>
            
            <div class="form-group" id="campoDataEnvio" style="display: none;">
                <label>Data/Hora de Envio</label>
                <input type="datetime-local" name="data_envio">
            </div>
            
            <button type="submit" class="btn-primary">
                <i class="fas fa-paper-plane"></i> Enviar Notificação
            </button>
        </form>
    </div>
    
    <div class="form-card">
        <h3 style="margin-bottom: 20px;">Notificações Enviadas</h3>
        <?php if (empty($notificacoes)): ?>
            <p style="color: var(--text-muted); text-align: center; padding: 40px;">
                Nenhuma notificação enviada ainda.
            </p>
        <?php else: ?>
            <div style="display: grid; gap: 16px;">
                <?php foreach ($notificacoes as $notif): ?>
                    <div style="padding: 16px; background: var(--bg-body); border-radius: 8px; border: 1px solid var(--border-color);">
                        <div style="display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 8px;">
                            <strong><?= htmlspecialchars($notif['titulo']) ?></strong>
                            <div style="display: flex; gap: 8px;">
                                <button onclick="editarNotificacao(<?= htmlspecialchars(json_encode($notif), ENT_QUOTES) ?>)" style="padding: 6px 12px; background: #3b82f6; color: white; border: none; border-radius: 6px; cursor: pointer; font-size: 12px;">
                                    <i class="fas fa-edit"></i> Editar
                                </button>
                                <form method="POST" style="display: inline;" onsubmit="return confirm('Tem certeza que deseja excluir esta notificação?')">
                                    <input type="hidden" name="acao" value="excluir_notificacao">
                                    <input type="hidden" name="notificacao_id" value="<?= $notif['id'] ?>">
                                    <button type="submit" style="padding: 6px 12px; background: #ef4444; color: white; border: none; border-radius: 6px; cursor: pointer; font-size: 12px;">
                                        <i class="fas fa-trash"></i> Excluir
                                    </button>
                                </form>
                            </div>
                        </div>
                        <div style="color: var(--text-muted); font-size: 13px;">
                            Tipo: <?= ucfirst($notif['tipo']) ?> | 
                            Status: <?= ucfirst($notif['status']) ?> | 
                            Criado por: <?= htmlspecialchars($notif['criado_por_nome']) ?> | 
                            Data: <?= date('d/m/Y H:i', strtotime($notif['created_at'])) ?>
                            <?php if ($notif['agendado'] && $notif['data_envio']): ?>
                                | Agendado para: <?= date('d/m/Y H:i', strtotime($notif['data_envio'])) ?>
                            <?php endif; ?>
                        </div>
                    </div>
                <?php endforeach; ?>
            </div>
        <?php endif; ?>
    </div>
</div>

<script>
function toggleCampos() {
    const tipo = document.getElementById('tipoNotificacao').value;
    document.getElementById('campoImagem').style.display = tipo === 'imagem' ? 'block' : 'none';
    document.getElementById('campoVideo').style.display = tipo === 'video' ? 'block' : 'none';
    document.getElementById('campoBotao').style.display = tipo === 'acao' ? 'block' : 'none';
}

function toggleAgendamento() {
    const agendado = document.getElementById('agendadoCheck').checked;
    document.getElementById('campoDataEnvio').style.display = agendado ? 'block' : 'none';
}

function editarNotificacao(notif) {
    // Preencher formulário com dados da notificação
    document.querySelector('input[name="titulo"]').value = notif.titulo || '';
    document.querySelector('textarea[name="conteudo"]').value = notif.conteudo || '';
    document.getElementById('tipoNotificacao').value = notif.tipo || 'texto';
    toggleCampos();
    
    if (notif.imagem_url) {
        document.querySelector('input[name="imagem_url"]').value = notif.imagem_url;
    }
    if (notif.video_url) {
        document.querySelector('input[name="video_url"]').value = notif.video_url;
    }
    if (notif.botao_texto) {
        document.querySelector('input[name="botao_texto"]').value = notif.botao_texto;
    }
    if (notif.botao_url) {
        document.querySelector('input[name="botao_url"]').value = notif.botao_url;
    }
    
    if (notif.agendado == 1) {
        document.getElementById('agendadoCheck').checked = true;
        toggleAgendamento();
        if (notif.data_envio) {
            const data = new Date(notif.data_envio);
            const dataLocal = data.toISOString().slice(0, 16);
            document.querySelector('input[name="data_envio"]').value = dataLocal;
        }
    }
    
    // Alterar formulário para edição
    const form = document.querySelector('form');
    const hiddenInput = document.createElement('input');
    hiddenInput.type = 'hidden';
    hiddenInput.name = 'acao';
    hiddenInput.value = 'editar_notificacao';
    form.appendChild(hiddenInput);
    
    const hiddenId = document.createElement('input');
    hiddenId.type = 'hidden';
    hiddenId.name = 'notificacao_id';
    hiddenId.value = notif.id;
    form.appendChild(hiddenId);
    
    // Alterar botão
    const btn = form.querySelector('button[type="submit"]');
    btn.innerHTML = '<i class="fas fa-save"></i> Atualizar Notificação';
    
    // Scroll para o formulário
    form.scrollIntoView({ behavior: 'smooth', block: 'start' });
}
</script>

