Gestão Completa 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
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.
Interface intuitiva para criar eventos
Controle de participantes e capacidade
Análises e estatísticas detalhadas
Sistema completo para criação e gestão de eventos com informações detalhadas.
Controle completo de inscrições com validações e confirmações.
Sistema para registrar e controlar a presença nos eventos.
Sistema de notificações automáticas para participantes e organizadores.
Relatórios detalhados e análises sobre eventos e participação.
Interface adaptável para todos os dispositivos e plataformas.
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
);
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
);
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
);
// 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');
});
// 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!');
}
// 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!');
}
// 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]);
}
Análise detalhada de todos os eventos realizados.
Análise de inscrições e participação.
Controle de presença e frequência.
Análise de notificações e comunicação.
Integração completa com o sistema de gestão de membros para inscrições e presença.
Notificações automáticas para participantes e organizadores de eventos.
Integração com doações e campanhas relacionadas a eventos.
Relatórios consolidados com dados de eventos e participação.