Sistema de Notificações
Sistema completo de notificações em tempo real
Visão Geral
O Sistema de Notificações é uma funcionalidade central que mantém todos os usuários informados sobre eventos importantes do sistema. Oferece notificações em tempo real, agendamento, categorização e múltiplos canais de entrega.
Funcionalidades Principais:
- Notificações em tempo real
- Agendamento de notificações
- Múltiplos canais (email, push, SMS)
- Categorização e prioridades
- Preferências por usuário
- Relatórios e estatísticas
Benefícios:
- Comunicação eficiente
- Engajamento dos membros
- Transparência nas informações
- Controle de spam
- Personalização por usuário
- Histórico completo
Funcionalidades Detalhadas
Tipos de Notificação
Sistema de categorização para diferentes tipos de notificações.
- • Info: Informações gerais
- • Success: Confirmações positivas
- • Warning: Avisos importantes
- • Error: Erros e problemas
- • Urgent: Notificações urgentes
Canais de Entrega
Múltiplos canais para garantir que a notificação chegue ao destinatário.
- • Interno: Notificação no sistema
- • Email: Envio por email
- • Push: Notificações push (futuro)
- • SMS: Mensagens SMS (futuro)
Agendamento
Sistema de agendamento para enviar notificações em horários específicos.
- • Agendamento por data/hora
- • Notificações recorrentes
- • Cancelamento de agendamentos
- • Relatórios de envio
Preferências
Controle individual de preferências de notificação por usuário.
- • Categorias preferidas
- • Horários de recebimento
- • Canais preferidos
- • Frequência de notificações
Estrutura do Banco de Dados
Tabela: notificacaos
CREATE TABLE notificacaos (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT UNSIGNED NULL,
tipo VARCHAR(255),
titulo VARCHAR(255),
mensagem TEXT,
icone VARCHAR(255) NULL,
acao_url VARCHAR(255) NULL,
acao_texto VARCHAR(255) NULL,
lida BOOLEAN DEFAULT FALSE,
lida_em TIMESTAMP NULL,
dados_extras JSON NULL,
prioridade ENUM('baixa', 'normal', 'alta', 'urgente') DEFAULT 'normal',
categoria VARCHAR(255) DEFAULT 'sistema',
destinatario_tipo ENUM('usuario', 'membro', 'ministerio', 'todos') NULL,
destinatario_id BIGINT UNSIGNED NULL,
enviada_por BIGINT UNSIGNED NULL,
agendada_para TIMESTAMP NULL,
enviada_em TIMESTAMP NULL,
created_at TIMESTAMP NULL,
updated_at TIMESTAMP NULL
);
Modelos e Relacionamentos
Notificacao Model
class Notificacao extends Model
{
protected $fillable = [
'user_id',
'tipo',
'titulo',
'mensagem',
'icone',
'acao_url',
'acao_texto',
'lida',
'lida_em',
'dados_extras',
'prioridade',
'categoria',
'destinatario_tipo',
'destinatario_id',
'enviada_por',
'agendada_para',
'enviada_em'
];
public function user()
{
return $this->belongsTo(User::class);
}
public function destinatario()
{
return $this->belongsTo(User::class, 'destinatario_id');
}
public function remetente()
{
return $this->belongsTo(User::class, 'enviada_por');
}
}
Serviços
NotificacaoService
Serviço principal para gerenciar todas as operações de notificação.
class NotificacaoService
{
// Criar notificação para membro específico
public static function notificarMembro($membroId, $tipo, $titulo, $mensagem, $dadosExtras = [])
// Criar notificação para usuário específico
public static function notificarUsuario($userId, $tipo, $titulo, $mensagem, $dadosExtras = [])
// Criar notificação para ministério
public static function notificarMinisterio($ministerioId, $tipo, $titulo, $mensagem, $dadosExtras = [])
// Criar notificação para todos os usuários
public static function notificarTodos($tipo, $titulo, $mensagem, $dadosExtras = [])
// Agendar notificação
public static function agendarNotificacao($dados, $dataEnvio)
// Processar notificações agendadas
public static function processarNotificacoesAgendadas()
}
Controladores
NotificationController
Controlador para gerenciar notificações na área administrativa.
class NotificationController extends Controller
{
public function index() // Lista de notificações
public function create() // Formulário de criação
public function store() // Salvar notificação
public function show() // Visualizar notificação
public function edit() // Formulário de edição
public function update() // Atualizar notificação
public function destroy() // Excluir notificação
public function enviar() // Enviar notificação
public function agendar() // Agendar notificação
public function relatorios() // Relatórios
}
NotificacaoController (Member)
Controlador para gerenciar notificações dos membros.
class NotificacaoController extends Controller
{
public function index() // Lista de notificações do usuário
public function unread() // Notificações não lidas
public function markAsRead() // Marcar como lida
public function markAllAsRead() // Marcar todas como lidas
public function countUnread() // Contar não lidas
public function destroy() // Excluir notificação
}
Comandos Artisan
Comandos Disponíveis:
notifications:status
- Status do sistemanotifications:process
- Processar agendadasnotifications:clean
- Limpar antigasnotifications:test
- Testar envio
Exemplos de Uso:
# Verificar status
php artisan notifications:status
# Processar notificações agendadas
php artisan notifications:process
# Limpar notificações antigas
php artisan notifications:clean
# Testar envio
php artisan notifications:test
Integração com Outros Sistemas
Sistemas Integrados:
- • Gestão de Membros: Novos membros, atualizações
- • Sistema Financeiro: Transações, campanhas
- • EBD Digital: Notas, certificados
- • Eventos: Inscrições, lembretes
- • Pedidos de Oração: Novos pedidos, intercessões
- • Conselho: Votações, pautas
Tipos de Notificação:
- • Info: Informações gerais do sistema
- • Success: Confirmações de ações
- • Warning: Avisos importantes
- • Error: Erros e problemas
- • Urgent: Notificações urgentes
Relatórios e Estatísticas
Relatórios Disponíveis:
- • Notificações por período
- • Notificações por tipo
- • Notificações por categoria
- • Taxa de entrega
- • Taxa de leitura
- • Usuários mais ativos
Estatísticas:
- • Total de notificações
- • Notificações enviadas
- • Notificações lidas
- • Notificações pendentes
- • Usuários ativos
- • Canais mais utilizados