Skip to main content

Calendar

The Calendar module provides event scheduling, RSVP management, and recurring event support. It is managed by the CalendarController.

Calendar View

Authorization: Schedule_View policy

The main calendar view displays:

  • All department calendar events
  • Color-coded by event type
  • IANA timezone conversion for proper display
  • Upcoming items list

Creating Events

Authorization: Schedule_Create policy

Event Fields

FieldRequiredDescription
TitleYesEvent name
DescriptionNoEvent description (HTML supported, sanitized on display)
Start Date/TimeYesEvent start (defaults to now + 3 hours)
End Date/TimeYesEvent end (defaults to now + 4 hours)
LocationNoEvent location (geocodable for map display)
Item TypeNoEvent category/type
EntitiesNoTarget department or specific groups

Validation

  • Start date must be before end date
  • Recurrence end date validated if recurrence is set

Recurrence

Events can recur on these schedules:

  • Weekly — Repeats every week
  • Monthly — Repeats every month
  • Yearly — Repeats every year

Recurring events have a recurrence end date.

Notifications

Event creation triggers a notification delivery to relevant personnel. Fires CalendarEventAddedEvent.

Editing Events

Authorization: Schedule_Update policy + CanUserModifyCalendarEntry runtime check

Only department admins and the original event creator can modify events.

Fires CalendarEventUpdatedEvent.

Deleting Events

Authorization: Schedule_Delete policy

Single Event Deletion

Deletes a single calendar item after department ownership validation.

Recurring Event Deletion

The DeleteAllCalendarItems action deletes a calendar item and all its recurrences. Requires CanUserModifyCalendarEntry check.

RSVP / Signup

Authorization: Schedule_View policy

Personnel can RSVP to events:

  • Sign up with an optional note
  • RSVP type set to CalendarItemAttendeeTypes.RSVP

Removing RSVP

The RemoveFromEvent action removes an attendee from a calendar event.

Calendar Types

Calendar item types provide categorization and color coding.

Managing Types

ActionAuthorizationDescription
View TypesSchedule_ViewList all item types
Create TypeSchedule_CreateNew type (validates name uniqueness)
Edit TypeSchedule_CreateModify type (validates department ownership)
Delete TypeSchedule_CreateRemove type (validates department ownership)

Calendar Data Formats

FullCalendar v2 Format

The GetV2CalendarEntriesForCal endpoint returns events in FullCalendar-compatible JSON format:

  • Start/end times in ISO format
  • Type-based background colors
  • URL links to event detail pages
  • Admin/creator flags for edit permissions

Calendar Items JSON

The GetDepartmentCalendarItems endpoint returns all items with:

  • Time zone-converted timestamps
  • Recurrence parent validity check
  • IsAdminOrCreator flag for permissions

Map Integration

The GetMapDataForItem endpoint geocodes a calendar item's location and returns lat/lon coordinates for map display.

Data Endpoints

EndpointPurpose
GetDepartmentCalendarItemsAll calendar items as JSON
GetV2CalendarEntriesForCalFullCalendar v2 format events
GetDepartmentCalendarItemTypesItem types (includes "None" default)
GetDepartmentEnititesDepartment + groups as entities for targeting
GetMapDataForItemGeocoded coordinates for event location

Interactions with Other Modules

ModuleInteraction
GroupsEvents can target specific groups
DepartmentTimezone affects all time displays
MappingEvent locations can be geocoded and displayed on maps
NotificationsEvent creation/update triggers notifications
Department SettingsModule can be enabled/disabled