Skip to content

Instantly share code, notes, and snippets.

@MrAntix
Last active December 9, 2023 17:11
Show Gist options
  • Save MrAntix/f5473690eae5912b63b76b63b5c0962f to your computer and use it in GitHub Desktop.
Save MrAntix/f5473690eae5912b63b76b63b5c0962f to your computer and use it in GitHub Desktop.
Booking Sequence
sequenceDiagram
    participant Customer
    participant Database
    participant Book_Handler as Book Handler
    participant Room
    participant Booked_Handler as Booked Handler
    participant Email_Service as Email Service

    Customer->>Database: Search available rooms
    activate Database
    Database-->>Customer: Return search results
    deactivate Database

    Customer->>Book_Handler: Send booking command
    activate Book_Handler
    Book_Handler->>Room: Check availability

    activate Room
    Room-->>Book_Handler: Availability response
    deactivate Room
        
    alt Room is available
        Book_Handler->>Room: Book room
        
        activate Room
        Room->>Room: Update state
        Room-)Booked_Handler: Raise booked event (async)
        activate Booked_Handler
        Room-->>Book_Handler: Book response
        deactivate Room

        Booked_Handler->>Database: Update booking details and availability
        deactivate Booked_Handler

        Book_Handler-)Email_Service: Send confirmation email to Customer (async)
        Book_Handler-)Email_Service: Send notification email to Room Owner (async)
        Note over Customer,Email_Service: Booking process completed successfully

    else Room not available

        Book_Handler-->>Customer: Return error
        
    end
    deactivate Book_Handler
Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment