Skip to content

Calendário

O módulo Calendário é o registro central do GCM de quando as coisas acontecem. Cobre eventos únicos (um concerto de Natal, um retiro de líderes), serviços semanais recorrentes, aniversários de membros puxados do diretório e os modelos de reunião que alimentam cada lista de presença.

Visão mensal do calendário

Eventos vs reuniões

Esses dois conceitos costumam ser confundidos porque ambos aparecem na grade do calendário. Eles são armazenados separadamente e cumprem funções diferentes:

EventoReunião
Onde viveTabela eventsTabela meetings
PropósitoUma ocorrência específica (data + hora + local)Um modelo recorrente que alimenta a presença (ex.: "Culto de Domingo")
Configurado emCalendário → Adicionar eventoConfigurações → Reuniões
RecorrênciaRRULE no próprio eventoImplícita — toda vez que você marca presença, escolhe uma reunião
EscopoFiltro opcional de unidade-orgscope_level obrigatório (org / branch / center / cell)

Uma regra prática útil: se tem um flyer publicado, é um evento. Se é "o que fazemos todo domingo às 10h", é uma reunião.

Veja Reuniões e níveis de escopo para o modelo de reunião, Criando um evento para eventos únicos.

O que o calendário mostra

A grade mensal mostra três camadas sobrepostas:

  • Eventos — pontos com código de cor, com prévia em cartão ao passar o mouse.
  • Aniversários — um ícone de bolo, puxado ao vivo do diretório de membros.
  • Expansões recorrentes — um único evento semanal renderiza como 4 ou 5 pontos em um mês, computados no navegador a partir da string da RRULE.

O painel do dia à direita lista tudo que está acontecendo na data selecionada. A aba Próximos alterna para uma lista cronológica dos próximos vinte eventos a partir de hoje.

Veja Visões do calendário e detalhe do dia para os padrões de navegação.

Como funciona a recorrência

O GCM armazena a recorrência usando o padrão iCalendar RRULE (RFC 5545). Quando você escolhe "Semanal nas Seg, Qua, Sex até 31 de dezembro" no formulário do evento, isso é salvo como:

FREQ=WEEKLY;BYDAY=MO,WE,FR;UNTIL=20261231T235959Z

Dois campos extras cobrem as lacunas:

  • exception_dates — um array de strings de datas a pular (ex.: cancelar um domingo específico).
  • recurrence_end_date — uma coluna redundante de data de fim para filtragem SQL rápida.

Para compatibilidade retroativa também existe uma coluna legada recurrence_rule em texto que aceita weekly / monthly / yearly. Novos eventos sempre escrevem ambos — a RRULE é a autoridade.

Veja Padrões recorrentes e RRULE para a especificação completa do seletor.

Exceções

O array exception_dates lida com o caso simples ("apenas pule esta data"). Para substituições mais ricas — mudar o título para uma ocorrência, mover a hora de início em uma hora, cancelar apenas esta data — existe uma tabela event_exceptions:

sql
event_exceptions(
  event_id, exception_date,
  is_cancelled, override_title,
  override_start_time, override_end_time,
  override_location
)

Isso permite que você transforme um Culto de Domingo regular em um "Culto da Véspera de Natal" sem bifurcar o evento recorrente inteiro. Veja Exceções de evento.

Lembretes

Cada org tem uma linha event_reminder_config que controla quando e como os lembretes vão. Os offsets são armazenados como horas-antes, então [24, 1] significa "24 horas antes e uma hora antes". Os canais são escolhidos por slug — email, sms, whatsapp, push — e rastreados por ocorrência em event_reminders_sent para evitar envio duplicado em eventos recorrentes.

Veja Lembretes de evento.

Escopo e filiais

Eventos podem ser filtrados para uma única unidade-org (filial, centro, célula) via org_unit_id. Um valor nulo significa todas as filiais o veem — útil para anúncios de toda a org como o Natal.

O filtro de filial na barra de ferramentas do calendário aplica um SQL OR org_unit_id IS NULL para que eventos globais continuem visíveis enquanto os específicos de filial ficam com escopo. Usuários cujo papel não abrange todas as filiais só veem as opções do menu suspenso às quais estão atribuídos.

Permissões

AçãoAdminPastorPastor de cuidadoMembro
Ver calendáriosimsimsimsim
Criar eventosimsimsimnão
Editar eventosimsimprópria unidade-orgnão
Excluir eventosimsimprópria unidade-orgnão
Configurar reuniõessimsimnãonão
Configurar lembretessimnãonãonão

As chaves de permissão são events.view, events.create, events.edit, events.delete. Membros sempre podem ver o calendário, mas não podem adicionar a ele a menos que events.create seja explicitamente concedido.

Próximos passos

  1. Criar um evento — seu primeiro evento único.
  2. Reuniões e níveis de escopo — configure o Culto de Domingo.
  3. Padrões recorrentes e RRULE — além do semanal simples.
  4. Exceções de evento — quando uma ocorrência é diferente.
  5. Lembretes de evento — nudges automatizados por e-mail / SMS / WhatsApp.
  6. Visões do calendário e detalhe do dia — grade mensal vs lista de próximos.
  7. Ligando eventos à presença — como o calendário alimenta a estação de check-in.