Sistema de Eventos

Gestão Completa de Eventos

Sistema de Eventos

Gestão completa de eventos da igreja

"Não deixando a nossa congregação, como é costume de alguns, antes admoestando-nos uns aos outros"

Hebreus 10:25

Visão Geral

O Sistema de Eventos do CBAV oferece controle total sobre todos os eventos da igreja, desde cultos regulares até eventos especiais, conferências e atividades ministeriais. Permite gestão de inscrições, controle de presença e comunicação eficiente.

Criação de Eventos

Interface intuitiva para criar eventos

Gestão de Inscrições

Controle de participantes e capacidade

Relatórios

Análises e estatísticas detalhadas

Funcionalidades Principais

Criação de Eventos

Sistema completo para criação e gestão de eventos com informações detalhadas.

  • • Título e descrição do evento
  • • Data, hora e local
  • • Capacidade máxima
  • • Categoria do evento
  • • Imagem do evento

Sistema de Inscrições

Controle completo de inscrições com validações e confirmações.

  • • Inscrições online
  • • Validação de capacidade
  • • Confirmação por email
  • • Lista de espera
  • • Cancelamento de inscrições

Controle de Presença

Sistema para registrar e controlar a presença nos eventos.

  • • Registro de presença
  • • Lista de participantes
  • • Relatórios de frequência
  • • Certificados de participação
  • • Estatísticas de presença

Notificações

Sistema de notificações automáticas para participantes e organizadores.

  • • Lembretes de eventos
  • • Confirmação de inscrição
  • • Alterações de evento
  • • Cancelamentos
  • • Notificações em massa

Relatórios Avançados

Relatórios detalhados e análises sobre eventos e participação.

  • • Relatórios por período
  • • Análise de participação
  • • Estatísticas de eventos
  • • Gráficos interativos
  • • Exportação de dados

Interface Responsiva

Interface adaptável para todos os dispositivos e plataformas.

  • • Design responsivo
  • • Acesso mobile
  • • Interface intuitiva
  • • Navegação fácil
  • • Compatibilidade total

Estrutura do Banco de Dados

Tabelas Principais

eventos

CREATE TABLE eventos (
    id BIGINT PRIMARY KEY,
    titulo VARCHAR(255) NOT NULL,
    descricao TEXT,
    data_inicio DATETIME NOT NULL,
    data_fim DATETIME,
    local VARCHAR(255),
    capacidade_maxima INT,
    inscricoes_abertas BOOLEAN DEFAULT TRUE,
    ativo BOOLEAN DEFAULT TRUE,
    imagem VARCHAR(255),
    categoria VARCHAR(100),
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

evento_inscricoes

CREATE TABLE evento_inscricoes (
    id BIGINT PRIMARY KEY,
    evento_id BIGINT,
    membro_id BIGINT,
    data_inscricao DATETIME,
    status ENUM('confirmada', 'pendente', 'cancelada'),
    observacoes TEXT,
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

evento_presencas

CREATE TABLE evento_presencas (
    id BIGINT PRIMARY KEY,
    evento_id BIGINT,
    membro_id BIGINT,
    presente BOOLEAN DEFAULT FALSE,
    data_registro DATETIME,
    observacoes TEXT,
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

Controllers e Rotas

Controllers Principais

Admin Controllers

  • EventoController
  • InscricaoController
  • PresencaController

Public Controllers

  • PublicEventoController
  • InscricaoPublicController

Rotas Principais

// Rotas Admin
Route::prefix('admin/eventos')->name('admin.eventos.')->middleware(['auth', 'admin'])->group(function () {
    Route::get('/', [EventoController::class, 'index'])->name('index');
    Route::resource('eventos', EventoController::class);
    Route::get('inscricoes', [InscricaoController::class, 'index'])->name('inscricoes');
    Route::get('presencas', [PresencaController::class, 'index'])->name('presencas');
});

// Rotas Públicas
Route::prefix('eventos')->name('eventos.')->group(function () {
    Route::get('/', [PublicEventoController::class, 'index'])->name('index');
    Route::get('/{evento}', [PublicEventoController::class, 'show'])->name('show');
    Route::post('/inscrever', [InscricaoPublicController::class, 'store'])->name('inscrever');
});

Exemplos de Uso

Código de Exemplo

Criar Evento

// EventoController.php
public function store(Request $request)
{
    $request->validate([
        'titulo' => 'required|string|max:255',
        'descricao' => 'nullable|string',
        'data_inicio' => 'required|date',
        'data_fim' => 'nullable|date|after:data_inicio',
        'local' => 'nullable|string|max:255',
        'capacidade_maxima' => 'nullable|integer|min:1',
        'categoria' => 'nullable|string|max:100'
    ]);

    $evento = Evento::create([
        'titulo' => $request->titulo,
        'descricao' => $request->descricao,
        'data_inicio' => $request->data_inicio,
        'data_fim' => $request->data_fim,
        'local' => $request->local,
        'capacidade_maxima' => $request->capacidade_maxima,
        'categoria' => $request->categoria,
        'inscricoes_abertas' => true,
        'ativo' => true
    ]);

    if ($request->hasFile('imagem')) {
        $imagem = $request->file('imagem');
        $filename = time() . '_' . $evento->id . '.' . $imagem->getClientOriginalExtension();
        $imagem->storeAs('eventos', $filename, 'public');
        $evento->update(['imagem' => $filename]);
    }

    return redirect()->route('admin.eventos.index')
        ->with('success', 'Evento criado com sucesso!');
}

Inscrição em Evento

// InscricaoPublicController.php
public function store(Request $request)
{
    $request->validate([
        'evento_id' => 'required|exists:eventos,id',
        'nome' => 'required|string|max:255',
        'email' => 'required|email',
        'telefone' => 'nullable|string|max:20'
    ]);

    $evento = Evento::findOrFail($request->evento_id);

    // Verificar capacidade
    if ($evento->capacidade_maxima && 
        $evento->inscricoes()->where('status', 'confirmada')->count() >= $evento->capacidade_maxima) {
        return back()->with('error', 'Evento lotado!');
    }

    $inscricao = EventoInscricao::create([
        'evento_id' => $request->evento_id,
        'nome' => $request->nome,
        'email' => $request->email,
        'telefone' => $request->telefone,
        'data_inscricao' => now(),
        'status' => 'confirmada'
    ]);

    // Enviar email de confirmação
    Mail::to($request->email)->send(new EventoInscricaoMail($inscricao));

    return redirect()->back()
        ->with('success', 'Inscrição realizada com sucesso!');
}

Registrar Presença

// PresencaController.php
public function registrarPresenca(Request $request, Evento $evento)
{
    $request->validate([
        'membro_id' => 'required|exists:membros,id',
        'presente' => 'required|boolean'
    ]);

    EventoPresenca::updateOrCreate(
        [
            'evento_id' => $evento->id,
            'membro_id' => $request->membro_id
        ],
        [
            'presente' => $request->presente,
            'data_registro' => now(),
            'observacoes' => $request->observacoes
        ]
    );

    return response()->json(['success' => true]);
}

Relatórios e Estatísticas

Relatórios Disponíveis

Relatório de Eventos

Análise detalhada de todos os eventos realizados.

  • • Eventos por período
  • • Taxa de ocupação
  • • Categorias mais populares
  • • Performance por evento

Relatório de Inscrições

Análise de inscrições e participação.

  • • Taxa de inscrição
  • • Cancelamentos
  • • Lista de espera
  • • Tendências de participação

Relatório de Presença

Controle de presença e frequência.

  • • Taxa de presença
  • • Frequência por membro
  • • Eventos mais frequentados
  • • Certificados de participação

Relatório de Comunicação

Análise de notificações e comunicação.

  • • Notificações enviadas
  • • Taxa de abertura
  • • Efetividade da comunicação
  • • Feedback dos participantes

Integrações

Módulos Integrados

Gestão de Membros

Integração completa com o sistema de gestão de membros para inscrições e presença.

  • • Inscrições automáticas
  • • Controle de presença
  • • Histórico de participação
  • • Notificações personalizadas

Sistema de Notificações

Notificações automáticas para participantes e organizadores de eventos.

  • • Lembretes de eventos
  • • Confirmações de inscrição
  • • Alterações de programação
  • • Certificados automáticos

Sistema Financeiro

Integração com doações e campanhas relacionadas a eventos.

  • • Doações para eventos
  • • Campanhas específicas
  • • Controle de custos
  • • Relatórios financeiros

Sistema de Relatórios

Relatórios consolidados com dados de eventos e participação.

  • • Relatórios consolidados
  • • Análises de tendências
  • • Gráficos interativos
  • • Exportação de dados