"""
Dashboard constants for Aimantis hotel management platform.

All magic numbers, configuration values, and enum-like constants
are centralized here for maintainability.
"""

# Cache configuration
DASHBOARD_CACHE_TIMEOUT = 60  # seconds
DASHBOARD_CACHE_KEY_PREFIX = "dashboard"

# Upcoming events configuration
DEFAULT_UPCOMING_EVENTS_LIMIT = 5
MAX_UPCOMING_EVENTS_LIMIT = 20

# Occupancy forecast windows (in days)
OCCUPANCY_WINDOWS = {
    "today": 1,
    "next_7_days": 7,
    "next_30_days": 30,
}

# Monthly chart configuration
MONTHLY_CHART_MONTHS = 12  # Last N months for chart

# Channel normalization mapping
CHANNEL_DISPLAY_NAMES = {
    "airbnb": "Airbnb",
    "booking": "Booking.com",
    "booking.com": "Booking.com",
    "expedia": "Expedia",
    "experia": "Expedia",  # Handle common typo
    "website": "Direct",
    "direct": "Direct",
}

DEFAULT_CHANNEL_NAME = "Direct"

# Event types (stable enum values)
EVENT_TYPE_CHECK_IN = "check_in"
EVENT_TYPE_CHECK_OUT = "check_out"

EVENT_TYPE_CHOICES = [
    (EVENT_TYPE_CHECK_IN, "Check-in"),
    (EVENT_TYPE_CHECK_OUT, "Check-out"),
]

# Occupancy calculation precision
OCCUPANCY_ROUNDING = 0  # Round to nearest integer percentage
RATE_ROUNDING = 2  # Round monetary values to 2 decimal places
