Conselho Ministerial

Gestão de Conselhos e Votações

Conselho Ministerial

Sistema completo para gestão de conselhos e votações

"Porque onde estiverem dois ou três reunidos em meu nome, aí estou eu no meio deles"

Mateus 18:20

Visão Geral

O módulo de Conselho Ministerial oferece ferramentas completas para gestão de reuniões de conselho, votações, atas e controle de presença. Permite transparência e organização no processo decisório da igreja.

Gestão de Conselheiros

Controle de membros do conselho

Sistema de Votações

Votações seguras e transparentes

Atas e Documentos

Gestão de atas e documentos

Funcionalidades Principais

Gestão de Conselheiros

Controle completo dos membros do conselho e suas funções.

  • • Cadastro de conselheiros
  • • Funções e responsabilidades
  • • Histórico de participação
  • • Permissões específicas
  • • Status de membro

Agenda de Reuniões

Sistema de agenda e programação de reuniões do conselho.

  • • Agendamento de reuniões
  • • Pauta de assuntos
  • • Notificações automáticas
  • • Confirmação de presença
  • • Lembretes personalizados

Sistema de Votações

Votações seguras e transparentes com controle de quórum.

  • • Criação de votações
  • • Controle de quórum
  • • Votação secreta
  • • Resultados em tempo real
  • • Histórico de votações

Gestão de Atas

Sistema completo para criação e gestão de atas de reuniões.

  • • Criação de atas
  • • Aprovação de atas
  • • Histórico de reuniões
  • • Busca e filtros
  • • Exportação em PDF

Controle de Presença

Registro e controle de presença nas reuniões do conselho.

  • • Registro de presença
  • • Relatórios de frequência
  • • Estatísticas por conselheiro
  • • Alertas de ausência
  • • Histórico completo

Relatórios Avançados

Relatórios detalhados sobre atividades do conselho.

  • • Relatórios de reuniões
  • • Estatísticas de votações
  • • Análise de frequência
  • • Gráficos interativos
  • • Exportação de dados

Estrutura do Banco de Dados

Tabelas Principais

conselho_reunioes

CREATE TABLE conselho_reunioes (
    id BIGINT PRIMARY KEY,
    titulo VARCHAR(255) NOT NULL,
    descricao TEXT,
    data_reuniao DATETIME NOT NULL,
    local VARCHAR(255),
    status ENUM('agendada', 'em_andamento', 'concluida', 'cancelada'),
    quorum_minimo INT,
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

conselho_pautas

CREATE TABLE conselho_pautas (
    id BIGINT PRIMARY KEY,
    reuniao_id BIGINT,
    titulo VARCHAR(255) NOT NULL,
    descricao TEXT,
    ordem INT,
    tempo_estimado INT,
    status ENUM('pendente', 'discutido', 'votado', 'arquivado'),
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

conselho_votacoes

CREATE TABLE conselho_votacoes (
    id BIGINT PRIMARY KEY,
    reuniao_id BIGINT,
    pauta_id BIGINT,
    titulo VARCHAR(255) NOT NULL,
    descricao TEXT,
    tipo ENUM('sim_nao', 'multipla_escolha', 'secreta'),
    opcoes JSON,
    resultado JSON,
    status ENUM('aberta', 'fechada', 'cancelada'),
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

conselho_votos

CREATE TABLE conselho_votos (
    id BIGINT PRIMARY KEY,
    votacao_id BIGINT,
    conselheiro_id BIGINT,
    voto VARCHAR(255),
    justificativa TEXT,
    anonimo BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

conselho_atas

CREATE TABLE conselho_atas (
    id BIGINT PRIMARY KEY,
    reuniao_id BIGINT,
    conteudo TEXT,
    aprovada BOOLEAN DEFAULT FALSE,
    data_aprovacao DATETIME,
    aprovada_por BIGINT,
    arquivo_pdf VARCHAR(255),
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

Controllers e Rotas

Controllers Principais

Admin Controllers

  • ConselhoController
  • ConselhoReuniaoController
  • ConselhoVotacaoController
  • ConselhoAtaController

Member Controllers

  • ConselhoMemberController
  • VotacaoMemberController

Rotas Principais

// Rotas Admin
Route::prefix('admin/conselho')->name('admin.conselho.')->middleware(['auth', 'admin'])->group(function () {
    Route::get('/', [ConselhoController::class, 'index'])->name('index');
    Route::resource('reunioes', ConselhoReuniaoController::class);
    Route::resource('votacoes', ConselhoVotacaoController::class);
    Route::resource('atas', ConselhoAtaController::class);
    Route::get('agenda', [ConselhoController::class, 'agenda'])->name('agenda');
    Route::get('voting', [ConselhoController::class, 'voting'])->name('voting');
});

// Rotas Member
Route::prefix('member/conselho')->name('member.conselho.')->middleware(['auth'])->group(function () {
    Route::get('/', [ConselhoMemberController::class, 'index'])->name('index');
    Route::get('reunioes', [ConselhoMemberController::class, 'reunioes'])->name('reunioes');
    Route::get('votacoes', [VotacaoMemberController::class, 'index'])->name('votacoes');
    Route::post('votar', [VotacaoMemberController::class, 'votar'])->name('votar');
});

Exemplos de Uso

Código de Exemplo

Criar Reunião

// ConselhoReuniaoController.php
public function store(Request $request)
{
    $request->validate([
        'titulo' => 'required|string|max:255',
        'descricao' => 'nullable|string',
        'data_reuniao' => 'required|date|after:now',
        'local' => 'nullable|string|max:255',
        'quorum_minimo' => 'nullable|integer|min:1'
    ]);

    $reuniao = ConselhoReuniao::create([
        'titulo' => $request->titulo,
        'descricao' => $request->descricao,
        'data_reuniao' => $request->data_reuniao,
        'local' => $request->local,
        'quorum_minimo' => $request->quorum_minimo,
        'status' => 'agendada'
    ]);

    // Notificar conselheiros
    $this->notificarConselheiros($reuniao);

    return redirect()->route('admin.conselho.reunioes.index')
        ->with('success', 'Reunião agendada com sucesso!');
}

Criar Votação

// ConselhoVotacaoController.php
public function store(Request $request)
{
    $request->validate([
        'reuniao_id' => 'required|exists:conselho_reunioes,id',
        'pauta_id' => 'nullable|exists:conselho_pautas,id',
        'titulo' => 'required|string|max:255',
        'descricao' => 'nullable|string',
        'tipo' => 'required|in:sim_nao,multipla_escolha,secreta',
        'opcoes' => 'nullable|array'
    ]);

    $votacao = ConselhoVotacao::create([
        'reuniao_id' => $request->reuniao_id,
        'pauta_id' => $request->pauta_id,
        'titulo' => $request->titulo,
        'descricao' => $request->descricao,
        'tipo' => $request->tipo,
        'opcoes' => $request->opcoes,
        'status' => 'aberta'
    ]);

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

Registrar Voto

// VotacaoMemberController.php
public function votar(Request $request)
{
    $request->validate([
        'votacao_id' => 'required|exists:conselho_votacoes,id',
        'voto' => 'required|string',
        'justificativa' => 'nullable|string'
    ]);

    $votacao = ConselhoVotacao::findOrFail($request->votacao_id);

    // Verificar se já votou
    if ($votacao->votos()->where('conselheiro_id', auth()->user()->id)->exists()) {
        return back()->with('error', 'Você já votou nesta questão!');
    }

    ConselhoVoto::create([
        'votacao_id' => $request->votacao_id,
        'conselheiro_id' => auth()->user()->id,
        'voto' => $request->voto,
        'justificativa' => $request->justificativa,
        'anonimo' => $votacao->tipo === 'secreta'
    ]);

    return redirect()->back()
        ->with('success', 'Voto registrado com sucesso!');
}

Relatórios e Estatísticas

Relatórios Disponíveis

Relatório de Reuniões

Análise detalhada de todas as reuniões do conselho.

  • • Frequência de reuniões
  • • Quórum por reunião
  • • Tempo médio de reunião
  • • Assuntos mais discutidos

Relatório de Votações

Análise de votações e resultados.

  • • Resultados de votações
  • • Participação por conselheiro
  • • Tendências de votação
  • • Histórico de decisões

Relatório de Conselheiros

Análise de participação dos conselheiros.

  • • Frequência individual
  • • Participação em votações
  • • Histórico de presença
  • • Performance por conselheiro

Relatório de Atas

Controle de atas e documentos.

  • • Atas aprovadas
  • • Pendências de aprovação
  • • Histórico de alterações
  • • Busca por conteúdo

Integrações

Módulos Integrados

Gestão de Membros

Integração com o sistema de gestão de membros para conselheiros.

  • • Dados dos conselheiros
  • • Histórico ministerial
  • • Permissões específicas
  • • Contato e comunicação

Sistema de Notificações

Notificações automáticas para conselheiros e administradores.

  • • Lembretes de reuniões
  • • Notificações de votações
  • • Alertas de quórum
  • • Confirmações de presença

Sistema de Permissões

Controle granular de acesso baseado em roles do conselho.

  • • Presidente do conselho
  • • Secretário
  • • Conselheiros
  • • Observadores

Sistema de Relatórios

Relatórios consolidados sobre atividades do conselho.

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