Skip to content

Secretaria Digital

Visão Geral

O módulo de Secretaria Digital centraliza a geração de documentos oficiais da igreja em PDF. Todos os documentos são gerados via Spatie Laravel PDF (Gotenberg), registrados em DocumentLog para auditoria, e disponibilizados para download. Os tipos de documento são definidos pelo enum DocumentType.

Histórico "Documentos Gerados"

A tabela Documentos Gerados na tela /documents é paginada server-side (padrão 15 por página, opções 25/50). DocumentController@index aceita os seguintes query params:

ParamDescrição
searchBusca por nome ou sobrenome do membro vinculado ao documento (LIKE)
tipoFiltra pelo enum DocumentType (certificado_batismo, carta_*, etc.)
member_idFiltra pelo id de um membro específico (Select com filter client-side)
page, per_pagePaginação padrão Laravel

Frontend: resources/js/pages/Documents/Index.vue usa DataTable com lazy=true, input de busca debounced em 350ms e router.get preservando state/scroll.

Models

DocumentLog

Namespace: App\Domain\Document\Models\DocumentLog

Registra cada documento gerado. Usa ULID, sem SoftDeletes (registros de auditoria são permanentes).

CampoTipoDescrição
ulidstringIdentificador público
member_idFK membersMembro referenciado no documento (nullable)
user_idFK usersUsuário que gerou o documento
tipoenum DocumentTypeTipo do documento gerado
dados_snapshotjsonCópia dos dados usados na geração
generated_atdatetimeData/hora da geração

Relationships:

  • member() — belongsTo Member
  • user() — belongsTo User

Enums

DocumentType

ValorLabel
certificado_batismoCertificado de Batismo
carta_recomendacaoCarta de Recomendação
carta_transferenciaCarta de Transferência
carta_desligamentoCarta de Desligamento
relatorio_financeiroRelatório Financeiro
recibo_contribuicaoRecibo de Contribuição
carteirinha_membroCarteirinha de Membro
ata_reuniaoAta de Reunião
declaracao_membro_ativoDeclaração de Membro Ativo

Actions

ActionDescrição
GenerateBaptismCertificateActionGera certificado de batismo individual em PDF
GenerateLetterActionGera carta eclesiástica — aceita tipos carta_recomendacao, carta_transferencia, carta_desligamento
GenerateMemberCardActionGera carteirinha(s) de membro — até 50 por vez, layout A4 landscape 3 pares por página
GenerateMeetingMinutesActionGera ata de reunião com participantes e deliberações
GenerateActiveMemberDeclarationActionGera declaração de membro ativo para fins legais/institucionais

Todas as actions seguem o padrão readonly com método execute(), coletam dados do membro, congregação e igreja, geram o PDF via Spatie\LaravelPdf\Facades\Pdf, e registram um DocumentLog.


Endpoints

MétodoRotaControllerDescrição
GET/documentsDocumentController@indexPainel da Secretaria Digital
POST/documents/certificateDocumentController@certificateGerar certificado de batismo
POST/documents/letterDocumentController@letterGerar carta eclesiástica
POST/documents/member-cardDocumentController@memberCardGerar carteirinha(s)
POST/documents/meeting-minutesDocumentController@meetingMinutesGerar ata de reunião
POST/documents/active-member-declarationDocumentController@activeMemberDeclarationGerar declaração de membro ativo
GET/documents/{ulid}/downloadDocumentController@downloadDownload do documento gerado

A rota de download usa withoutMiddleware(HandleInertiaRequests) para retornar o PDF puro ao browser.

Documentos financeiros (relatorio_financeiro, recibo_contribuicao) são gerados pelo módulo Financeiro via ReportController e seguem as mesmas rotas de download.


Permissões

PermissãoQuem temDocumentos cobertos
document.generateadmin-igreja, secretarioCertificado de Batismo, Cartas Eclesiásticas, Carteirinha
document.meeting-minutesadmin-igreja, secretarioAta de Reunião
document.active-member-declarationadmin-igreja, secretarioDeclaração de Membro Ativo

Documentos financeiros (relatorio_financeiro, recibo_contribuicao) são controlados pela permissão finance.view.