Appearance
Membros
Visão Geral
O módulo de Membros gerencia o cadastro de pessoas da igreja — separado do User model. Todo membro pode ter um User associado (para acesso ao sistema), mas nem todo membro precisa de um User (crianças, idosos, etc.).
Member Model
Namespace: App\Domain\Member\Models\Member
Campos principais
| Campo | Tipo | Descrição |
|---|---|---|
| ulid | string | Identificador público |
| nome / sobrenome | string | Nome completo |
| cpf | string(11) | CPF (unique, nullable) |
| data_nascimento | date | Data de nascimento |
| sexo | enum(M, F) | Sexo |
| estado_civil | enum | solteiro, casado, divorciado, viuvo, separado |
Dados eclesiásticos (inline)
| Campo | Tipo | Descrição |
|---|---|---|
| igreja_situacao_id | FK | Em comunhão, Congregado, Visitante, etc. |
| igreja_funcao_id | FK | Membro, Diácono, Presbítero, etc. |
| igreja_cargo_id | FK | Cargos da igreja |
| igreja_modo_admissao_id | FK | Batismo, Conversão, Carta, etc. |
| congregation_id | FK | Congregação vinculada |
| data_admissao | date | Data de admissão |
| data_batismo | date | Data do batismo |
Vínculos
| Campo | Tipo | Descrição |
|---|---|---|
| user_id | FK (unique) | Vínculo com User do sistema |
| conjuge_id | FK (self) | Cônjuge (self-referência) |
| responsavel_id | FK (self) | Responsável (menores de idade) |
Relationships
phones()— hasMany MemberPhone (tipo + número + is_whatsapp)address()— morphOne Address (polimórfico, reutilizado)dependentes()— hasMany self (via responsavel_id)
MemberPhone Model
| Campo | Tipo |
|---|---|
| member_id | FK |
| telefone_tipo_id | FK (Celular, Residencial, WhatsApp) |
| numero | string(20) |
| is_whatsapp | boolean |
Actions
| Action | Descrição |
|---|---|
| CreateMemberAction | Cria membro + endereço + telefones |
| UpdateMemberAction | Atualiza + sync endereço/telefones |
| DeleteMemberAction | Soft delete |
| LinkMemberToUserAction | Vincula membro a user (valida unicidade) |
| LinkSpouseAction | Vincula cônjuge bidirecional |
Endpoints
| Método | Rota | Descrição |
|---|---|---|
| GET | /members | Lista com filtros (nome, situação, congregação) |
| POST | /members | Criar membro |
| GET | /members/ | Perfil do membro |
| PUT | /members/ | Atualizar |
| DELETE | /members/ | Soft delete |
Permissões
| Permissão | Quem tem |
|---|---|
| member.view | admin-igreja, secretario, admin-congregacao |
| member.create | admin-igreja, secretario |
| member.edit | admin-igreja, secretario, admin-congregacao |
| member.delete | admin-igreja |
Membros com user_id podem ver/editar seu próprio registro via policy.
Observer
MemberObserver — no evento created, verifica se o tenant atingiu 90% do limite de membros e registra log de warning.