Events Domain
UML diagrams for event booking, availability management, and calendar
Events Domain
The Events domain handles event scheduling, booking management, availability tracking, and instructor management.
Domain Overview
graph TB
subgraph "Event Management"
EVENT[Events]
CATEGORY[Categories]
INSTRUCTOR[Instructors]
end
subgraph "Booking"
BOOKING[Bookings]
AVAILABILITY[Availability]
WAITLIST[Waitlist]
end
subgraph "Calendar"
CALENDAR[Calendar View]
SLOTS[Time Slots]
RECURRENCE[Recurring Events]
end
subgraph "Customer"
CONTACT[Contacts]
HISTORY[Booking History]
CREDITS[Event Credits]
end
EVENT --> CATEGORY
EVENT --> INSTRUCTOR
EVENT --> SLOTS
BOOKING --> EVENT
BOOKING --> CONTACT
AVAILABILITY --> SLOTS
CALENDAR --> EVENT
RECURRENCE --> EVENT
CONTACT --> HISTORY
CONTACT --> CREDITS
CREDITS --> BOOKING
style EVENT fill:#e1f5fe
style BOOKING fill:#fff3e0Entity Relationship Diagram
erDiagram
TENANT ||--o{ EVENT : has
TENANT ||--o{ EVENT_CATEGORY : has
TENANT ||--o{ INSTRUCTOR : has
EVENT }o--|| EVENT_CATEGORY : belongs_to
EVENT }o--o| INSTRUCTOR : led_by
EVENT ||--o{ EVENT_BOOKING : has
EVENT ||--o{ EVENT_OCCURRENCE : scheduled_as
EVENT_BOOKING }o--|| CONTACT : made_by
EVENT_BOOKING }o--|| EVENT_OCCURRENCE : for
EVENT_BOOKING ||--o| PAYMENT_TRANSACTION : paid_by
CALENDAR ||--o{ EVENT : displays
AVAILABILITY ||--o{ TIME_SLOT : defines
EVENT {
string id PK
string tenantId FK
string categoryId FK
string instructorId FK
string title
text description
int capacity
int duration
decimal price
enum status
json recurrenceRule
boolean requiresApproval
}
EVENT_BOOKING {
string id PK
string eventId FK
string occurrenceId FK
string contactId FK
enum status
int participants
timestamp bookedAt
string notes
boolean checkedIn
timestamp checkedInAt
}
EVENT_OCCURRENCE {
string id PK
string eventId FK
timestamp startTime
timestamp endTime
int availableSpots
enum status
}Booking States
stateDiagram-v2
[*] --> PENDING: Create Booking
PENDING --> CONFIRMED: Auto-Confirm
PENDING --> AWAITING_APPROVAL: Requires Approval
PENDING --> CANCELLED: User Cancels
AWAITING_APPROVAL --> CONFIRMED: Approved
AWAITING_APPROVAL --> REJECTED: Rejected
CONFIRMED --> CHECKED_IN: Check In
CONFIRMED --> NO_SHOW: No Show
CONFIRMED --> CANCELLED: Cancel
CHECKED_IN --> COMPLETED: Event Ends
NO_SHOW --> COMPLETED: Event Ends
COMPLETED --> [*]
CANCELLED --> [*]
REJECTED --> [*]
note right of PENDING
Awaiting payment
or confirmation
end noteKey Business Processes
Booking Flow
Event booking and confirmation process. View Booking Details
Availability Management
Time slot and capacity management. View Availability Details
Event Types
| Type | Description | Example |
|---|---|---|
| Single | One-time event | Workshop |
| Recurring | Repeating schedule | Weekly class |
| Multi-day | Spans multiple days | Conference |
| Drop-in | No booking required | Open gym |
Booking Flow Overview
flowchart TD
BROWSE[Browse Events] --> SELECT[Select Event]
SELECT --> CHECK{Spots Available?}
CHECK -->|Yes| BOOK[Create Booking]
CHECK -->|No| WAITLIST[Join Waitlist]
BOOK --> APPROVAL{Requires Approval?}
APPROVAL -->|Yes| WAIT[Await Approval]
APPROVAL -->|No| PAYMENT{Paid Event?}
WAIT --> APPROVED{Approved?}
APPROVED -->|Yes| PAYMENT
APPROVED -->|No| REJECT[Booking Rejected]
PAYMENT -->|Yes| PAY[Process Payment]
PAYMENT -->|No| CONFIRM[Confirm Booking]
PAY --> SUCCESS{Payment OK?}
SUCCESS -->|Yes| CONFIRM
SUCCESS -->|No| FAIL[Payment Failed]
CONFIRM --> NOTIFY[Send Confirmation]
NOTIFY --> CALENDAR[Add to Calendar]
WAITLIST --> SPOT_OPEN[Spot Opens]
SPOT_OPEN --> NOTIFY_WL[Notify Waitlist]
NOTIFY_WL --> BOOK
style CONFIRM fill:#e8f5e9
style REJECT fill:#ffebee