Appearance
Grupos & Escalas
Visão Geral
O módulo de Grupos gerencia grupos ministeriais da igreja (células, ministérios, departamentos) e suas escalas de voluntários. Cada grupo pode ter membros com posições específicas, registrar atividades e criar escalas mensais com detecção automática de conflitos.
Models
Group
Namespace: App\Domain\Group\Models\Group
Usa ULID como chave pública, SoftDeletes e Auditable.
| Campo | Tipo | Descrição |
|---|---|---|
| ulid | string | Identificador público |
| nome | string | Nome do grupo |
| descricao | text | Descrição (nullable) |
| group_type_id | FK | Tipo do grupo |
| leader_id | FK members | Líder do grupo (nullable) |
| congregation_id | FK | Congregação vinculada (nullable) |
| data_criacao | date | Data de criação do grupo |
| is_active | boolean | Grupo ativo ou arquivado |
Relationships:
groupType()— belongsTo GroupTypeleader()— belongsTo Membercongregation()— belongsTo Congregationmembers()— belongsToMany Member viagroup_membersgroupMembers()— hasMany GroupMemberpositions()— hasMany GroupPositionactivities()— hasMany GroupActivityschedules()— hasMany Schedule
GroupType
Namespace: App\Domain\Group\Models\GroupType
Usa ULID, SoftDeletes e Auditable.
| Campo | Tipo | Descrição |
|---|---|---|
| ulid | string | Identificador público |
| nome | string | Nome do tipo (ex: Célula, Ministério) |
| is_active | boolean | Tipo ativo |
| sort_order | integer | Ordem de exibição |
Relationships:
groups()— hasMany Group
GroupMember
Namespace: App\Domain\Group\Models\GroupMember
Tabela pivot group_members.
| Campo | Tipo | Descrição |
|---|---|---|
| group_id | FK | Grupo |
| member_id | FK | Membro |
Relationships:
group()— belongsTo Groupmember()— belongsTo Member
GroupActivity
Namespace: App\Domain\Group\Models\GroupActivity
| Campo | Tipo | Descrição |
|---|---|---|
| group_id | FK | Grupo vinculado |
| titulo | string | Título da atividade |
| descricao | text | Descrição (nullable) |
| data_atividade | date | Data da atividade |
| participantes_count | integer | Total de participantes (calculado automaticamente) |
| visitantes_count | integer | Total de visitantes (preenchido manualmente) |
Relationships:
group()— belongsTo Groupattendances()— hasMany GroupActivityAttendance
Veja tambem: Insights de Engajamento — presenca individual registrada pelo lider via lista de checkbox
GroupPosition
Namespace: App\Domain\Group\Models\GroupPosition
Define posições/funções dentro de um grupo (ex: Ministro de Louvor, Sonoplasta).
| Campo | Tipo | Descrição |
|---|---|---|
| group_id | FK | Grupo vinculado |
| nome | string | Nome da posição |
Relationships:
group()— belongsTo GroupscheduleItems()— hasMany ScheduleItem
Schedule
Namespace: App\Domain\Group\Models\Schedule
Representa uma escala para um grupo em uma data específica.
| Campo | Tipo | Descrição |
|---|---|---|
| group_id | FK | Grupo da escala |
| data_evento | date | Data do evento/escala |
| horario | string | Horário (nullable) |
| observacao | text | Observações (nullable) |
Relationships:
group()— belongsTo Groupitems()— hasMany ScheduleItemmembers()— hasManyThrough Member via ScheduleItem
Scopes: byMonth(year, month), upcoming()
ScheduleItem
Namespace: App\Domain\Group\Models\ScheduleItem
Item de uma escala — associa um membro a uma posição.
| Campo | Tipo | Descrição |
|---|---|---|
| schedule_id | FK | Escala vinculada |
| member_id | FK | Voluntário escalado |
| position_id | FK | Posição na escala |
Relationships:
schedule()— belongsTo Schedulemember()— belongsTo Memberposition()— belongsTo GroupPosition
Actions
| Action | Descrição |
|---|---|
| CreateGroupAction | Cria grupo com tipo e líder |
| UpdateGroupAction | Atualiza dados do grupo |
| DeleteGroupAction | Soft delete do grupo |
| AddGroupMemberAction | Adiciona membro ao grupo |
| RemoveGroupMemberAction | Remove membro do grupo |
| ManageGroupPositionsAction | Sincroniza posições do grupo |
| CreateGroupActivityAction | Registra atividade do grupo |
| UpdateGroupActivityAction | Atualiza atividade |
| DeleteGroupActivityAction | Remove atividade |
| CreateScheduleAction | Cria escala com itens |
| UpdateScheduleAction | Atualiza escala e itens |
| DeleteScheduleAction | Remove escala |
| SyncScheduleItemsAction | Sincroniza membros/posições de uma escala |
| CheckScheduleConflictsAction | Detecta conflitos de escala entre grupos na mesma data |
Endpoints
| Método | Rota | Controller | Descrição |
|---|---|---|---|
| GET | /groups | GroupController@index | Lista grupos |
| POST | /groups | GroupController@store | Criar grupo |
| GET | /groups/{ulid} | GroupController@show | Detalhes do grupo |
| PUT | /groups/{ulid} | GroupController@update | Atualizar grupo |
| DELETE | /groups/{ulid} | GroupController@destroy | Excluir grupo |
| POST | /groups/{ulid}/members | GroupController@addMember | Adicionar membro |
| DELETE | /groups/{ulid}/members/{member} | GroupController@removeMember | Remover membro |
| GET | /groups/{ulid}/positions | GroupPositionController@index | Listar posições |
| POST | /groups/{ulid}/positions/sync | GroupPositionController@sync | Sincronizar posições |
| GET | /groups/{ulid}/activities | GroupActivityController@index | Listar atividades |
| POST | /groups/{ulid}/activities | GroupActivityController@store | Criar atividade |
| PUT | /groups/{ulid}/activities/{activity} | GroupActivityController@update | Atualizar atividade |
| DELETE | /groups/{ulid}/activities/{activity} | GroupActivityController@destroy | Remover atividade |
| GET | /groups/{ulid}/schedules | ScheduleController@index | Listar escalas |
| POST | /groups/{ulid}/schedules | ScheduleController@store | Criar escala |
| PUT | /groups/{ulid}/schedules/{schedule} | ScheduleController@update | Atualizar escala |
| DELETE | /groups/{ulid}/schedules/{schedule} | ScheduleController@destroy | Remover escala |
| POST | /groups/{ulid}/schedules/check-conflicts | ScheduleController@conflicts | Verificar conflitos |
Permissões
| Permissão | Quem tem |
|---|---|
| group.view | admin-igreja, secretario, admin-congregacao, lider-grupo |
| group.create | admin-igreja, secretario |
| group.edit | admin-igreja, secretario, lider-grupo |
| group.delete | admin-igreja |
Escalas são gerenciadas por quem tem group.edit. A verificação de conflitos é disponível antes de salvar.
Feature Flags
| Flag | Descrição |
|---|---|
volunteers_schedule | Habilita o módulo de Escalas de Voluntários |