Skip to content

Calendario

El módulo de Calendario es el registro central de GCM de cuándo pasan las cosas. Cubre eventos únicos (un concierto de Navidad, un retiro de líderes), servicios semanales recurrentes, cumpleaños de miembros jalados del directorio y las plantillas de reunión que impulsan cada lista de asistencia.

Vista de mes del calendario

Eventos vs reuniones

Estos dos conceptos a menudo se confunden porque ambos aparecen en la cuadrícula del calendario. Se almacenan por separado y cumplen funciones diferentes:

EventoReunión
Dónde viveTabla eventsTabla meetings
PropósitoUna ocurrencia específica (fecha + hora + lugar)Una plantilla recurrente que impulsa asistencia (ej. "Servicio Dominical")
Configurado enCalendario → Agregar eventoConfiguración → Reuniones
RecurrenciaRRULE en el evento mismoImplícita — cada vez que marcas asistencia, eliges una reunión
AlcanceFiltro opcional de unidad orgscope_level requerido (org / sede / centro / célula)

Una regla útil: si tiene un volante publicado, es un evento. Si es "lo que hacemos cada domingo a las 10am", es una reunión.

Ve Reuniones y niveles de alcance para el modelo de reunión, Crear un evento para eventos únicos.

Lo que muestra el calendario

La cuadrícula del mes superpone tres capas:

  • Eventos — puntos codificados por color, con tarjeta de vista previa al pasar el cursor.
  • Cumpleaños — un ícono de pastel, jalado en vivo del directorio de miembros.
  • Expansiones recurrentes — un solo evento semanal se renderiza como 4 o 5 puntos en un mes, calculado en el navegador desde la cadena RRULE.

El panel del día a la derecha lista todo lo que pasa en la fecha seleccionada. La pestaña Próximos alterna a una lista cronológica de los próximos veinte eventos desde hoy en adelante.

Ve Vistas del calendario y detalle del día para los patrones de navegación.

Cómo funciona la recurrencia

GCM almacena recurrencia usando el estándar iCalendar RRULE (RFC 5545). Cuando eliges "Semanal en Lun, Mié, Vie hasta 31 Dic" en el formulario de evento, eso se guarda como:

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

Dos campos adicionales cubren las brechas:

  • exception_dates — un array de cadenas de fechas a omitir (ej. cancelar un domingo específico).
  • recurrence_end_date — una columna de fecha-fin redundante para filtrado SQL rápido.

Por compatibilidad hacia atrás también hay una columna heredada recurrence_rule que acepta weekly / monthly / yearly. Los eventos nuevos siempre escriben ambos — la RRULE es autoritativa.

Ve Patrones recurrentes y RRULE para la especificación completa del selector.

Excepciones

El array exception_dates maneja el caso simple ("solo omitir esta fecha"). Para anulaciones más ricas — cambiar el título por una ocurrencia, mover hora de inicio por una hora, cancelar solo esta fecha — hay una tabla event_exceptions:

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

Esto te permite convertir un Servicio Dominical regular en un "Servicio de Nochebuena" sin bifurcar todo el evento recurrente. Ve Excepciones de eventos.

Recordatorios

Cada org tiene una fila event_reminder_config que controla cuándo y cómo salen los recordatorios. Los offsets se almacenan como horas-antes, así que [24, 1] significa "24 horas antes y una hora antes." Los canales se eligen por slug — email, sms, whatsapp, push — y se rastrean por-ocurrencia en event_reminders_sent para prevenir doble-envío de eventos recurrentes.

Ve Recordatorios de eventos.

Alcance y sedes

Los eventos pueden filtrarse a una sola unidad organizacional (sede, centro, célula) vía org_unit_id. Un valor nulo significa todas las sedes lo ven — útil para anuncios de toda la org como Navidad.

El filtro de sede en la barra de herramientas del calendario aplica un SQL OR org_unit_id IS NULL para que los eventos globales sigan visibles mientras los específicos de sede tienen su alcance limitado. Los usuarios cuyo rol no abarca todas las sedes solo ven las opciones del menú desplegable a las que están asignados.

Permisos

AcciónAdminPastorLíderMiembro
Ver calendario
Crear eventono
Editar eventola propia unidad orgno
Eliminar eventola propia unidad orgno
Configurar reunionesnono
Configurar recordatoriosnonono

Las claves de permisos son events.view, events.create, events.edit, events.delete. Los miembros siempre pueden ver el calendario pero no pueden agregar a él a menos que se les otorgue explícitamente events.create.

Próximos pasos

  1. Crear un evento — tu primera fecha única.
  2. Reuniones y niveles de alcance — configura el Servicio Dominical.
  3. Patrones recurrentes y RRULE — más allá del simple semanal.
  4. Excepciones de eventos — cuando una ocurrencia difiere.
  5. Recordatorios de eventos — empujones automatizados por correo / SMS / WhatsApp.
  6. Vistas del calendario y detalle del día — cuadrícula del mes vs lista próxima.
  7. Vinculando eventos a asistencia — cómo el calendario alimenta la estación de check-in.