GolfManager Logo V3 API
Version 2025-07-21

Bookings Overview

The bookings module provides a comprehensive reservation system designed to handle complex scheduling scenarios across multiple industries including golf courses, tennis/padel clubs, spas, and any facility requiring resource reservation management.

Core Concepts

Areas: Physical locations where bookings occur (e.g., Tennis Center, Golf Course, Spa). Areas define operating hours, time increments, and general booking policies.

Resources: Individual bookable units within areas (e.g., Court 1, Tee 1, Treatment Room A). Resources have capacity (slots) and can have specific availability periods.

Booking Types: Define what can be booked, including duration, pricing, rules, and which resources can be used. Types control participant limits, advance booking windows, and special behaviors.

Crossings: Advanced feature where one booking automatically blocks other resources. Essential for golf courses where an 18-hole round starting at Tee 1 must block Tee 10 later to prevent player conflicts.

Participants: Optional feature for sports like padel or tennis where individual players can be specified and optionally pay separately. Not used in golf where bookings are typically made by one person.

Architecture Overview

Core Hierarchy

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   BookingArea     β”‚ (Tennis Center, Golf Course)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚ 1:n
          β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚BookingResourceType│◄───────▢│ BookingPeriod    β”‚ (seasonal availability)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚ 1:n
          β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ BookingResource   β”‚         β”‚ Slots (capacity)                 β”‚
β”‚                   β”‚         β”‚ β€’ Tee 1 = 4 slots                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚ β€’ Buggys = 30 slots              β”‚
          β”‚                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚ 1:n
          β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚     Booking       β”‚ (individual reservations)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Configuration System

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   BookingArea     │──────▢│   BookingType     │◄─────▢│  BookingExtra     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚                           β”‚                         (add-ons)
          β”‚                           β”‚ (rules & crossings)
          β–Ό                           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ BookingInterval   β”‚       β”‚  BookingCrossing    β”‚
β”‚ (time slots)      β”‚       β”‚ (blocks resources)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Booking Flow

    Customer Request
           β”‚
           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Availability    │──────▢│   Booking         │──────▢│ BookingParticipant  β”‚
β”‚   Search          β”‚       β”‚   (DRAFT)         β”‚       β”‚ (optional)          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                      β”‚
                                      β–Ό
                            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                            β”‚     Payment       β”‚
                            β”‚   Integration     β”‚
                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                      β”‚
                                      β–Ό
                            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                            β”‚     Booking       β”‚
                            β”‚   (CONFIRMED)     β”‚
                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Main Database Tables

Core Booking Entities

Configuration & Structure

Advanced Features

User Interface & Views

Extensions & Metadata

Booking Lifecycle

DRAFT (0) ────┐
              β”‚
              β”œβ”€β”€β–Ά NO_COST (1) ──┐
              β”‚                  β”‚
              β”œβ”€β”€β–Ά PENDING (2) ──┼──▢ Check-in/Check-out
              β”‚                  β”‚
              └──▢ PAID (3) β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
               CANCELED (4)

Status Flow: 1. Draft (0): Temporary reservation during booking process (expires automatically) 2. No Cost (1): Free bookings that require no payment 3. Pending (2): Awaiting payment confirmation 4. Paid (3): Confirmed and fully paid reservation 5. Canceled (4): Canceled reservation with potential refund processing

Crossings System (Golf & Complex Sports)

The crossings feature solves the complex problem of resource interdependency in sports like golf:

    Tee 1 Booking (10:00 AM, 18 holes)
              β”‚
              β”‚ (triggers crossing after offset)
              β–Ό
    Tee 10 Blocked (12:00-14:00 PM)
              β”‚
              β”‚ (prevents conflicts when players)
              β–Ό
    Players cross from hole 9 to hole 10

Configuration: - Duration: How long the crossing lasts - Offset: Delay before crossing starts - Resource Mapping: Which resources get blocked - Multiple: Support for multiple simultaneous bookings

Key Features

Multi-Resource Management: Single bookings can utilize multiple resources simultaneously.

Slot-based Capacity: Resources can have multiple slots (e.g., Tee 1 with 4 slots, Buggy resource with 30 slots) for concurrent bookings.

Flexible Pricing: Time-based, resource-based, or participant-based pricing models.

Rule Engine: Complex validation system supporting customer limits, advance booking windows, and conditional restrictions.

Online Integration: Customer-facing booking interfaces with real-time availability.

Payment Integration: Seamless connection with billing module for automated payment processing.

Automated Workflows: Email confirmations, reminders, and cancellation notifications.

Comprehensive Reporting: Detailed analytics on utilization, revenue, and customer behavior.

Business Rules

API Integration

The bookings module exposes comprehensive APIs for: - Real-time availability searching with complex filtering - Booking creation, modification, and cancellation - Group booking management with participant tracking - Check-in/check-out processing - Payment status synchronization - Customer booking history and preferences - Administrative tools for blocking and resource management

Advanced Configuration

Time Management: Configurable increments (15min, 30min, 1hr), operating hours, advance booking limits

Capacity Control: Slot-based capacity (multiple concurrent bookings per resource) with overbooking support and waiting lists

Customer Segmentation: Tag-based access control and pricing tiers

Seasonal Operations: Different rules and availability for various time periods

Multi-Location: Centralized management across multiple facilities

This system provides the foundation for any business requiring sophisticated reservation management with support for complex operational requirements, automated workflows, and comprehensive customer management capabilities.

↑