"""
Demo Session Service Configuration
"""

import os
from typing import Optional
from shared.config.base import BaseServiceSettings


class Settings(BaseServiceSettings):
    """Demo Session Service Settings"""

    # Service info (override base settings)
    APP_NAME: str = "Demo Session Service"
    SERVICE_NAME: str = "demo-session"
    VERSION: str = "1.0.0"
    DESCRIPTION: str = "Demo session management and orchestration service"

    # Database (override base property)
    @property
    def DATABASE_URL(self) -> str:
        """Build database URL from environment"""
        return os.getenv(
            "DEMO_SESSION_DATABASE_URL",
            "postgresql+asyncpg://postgres:postgres@localhost:5432/demo_session_db"
        )

    # Redis configuration (demo-specific)
    REDIS_KEY_PREFIX: str = "demo:session"
    REDIS_SESSION_TTL: int = 1800  # 30 minutes

    # Demo session configuration
    DEMO_SESSION_DURATION_MINUTES: int = 30
    DEMO_SESSION_MAX_EXTENSIONS: int = 3
    DEMO_SESSION_CLEANUP_INTERVAL_MINUTES: int = 60

    # Demo account credentials (public)
    # Contains complete user, tenant, and subscription data matching fixture files
    DEMO_ACCOUNTS: dict = {
        "professional": {
            "email": "demo.professional@panaderiaartesana.com",
            "name": "Panadería Artesana Madrid - Demo",
            "subdomain": "demo-artesana",
            "base_tenant_id": "a1b2c3d4-e5f6-47a8-b9c0-d1e2f3a4b5c6",
            "subscription_tier": "professional",
            "tenant_type": "standalone",
            # User data from fixtures/professional/01-tenant.json
            "user": {
                "id": "c1a2b3c4-d5e6-47a8-b9c0-d1e2f3a4b5c6",
                "email": "maria.garcia@panaderiaartesana.com",
                "full_name": "María García López",
                "role": "owner",
                "is_active": True,
                "is_verified": True
            },
            # Tenant data
            "tenant": {
                "business_type": "bakery",
                "business_model": "production_retail",
                "description": "Professional tier demo tenant for bakery operations"
            }
        },
        "enterprise": {
            "email": "central@panaderiaartesana.es",
            "name": "Panadería Artesana España - Central",
            "subdomain": "artesana-central",
            "base_tenant_id": "80000000-0000-4000-a000-000000000001",
            "subscription_tier": "enterprise",
            "tenant_type": "parent",
            # User data from fixtures/enterprise/parent/01-tenant.json
            "user": {
                "id": "d2e3f4a5-b6c7-48d9-e0f1-a2b3c4d5e6f7",
                "email": "director@panaderiaartesana.es",
                "full_name": "Director",
                "role": "owner",
                "is_active": True,
                "is_verified": True
            },
            # Tenant data
            "tenant": {
                "business_type": "bakery_chain",
                "business_model": "multi_location",
                "description": "Central production facility and parent tenant for multi-location bakery chain"
            },
            "children": [
                {
                    "name": "Madrid - Salamanca",
                    "base_tenant_id": "A0000000-0000-4000-a000-000000000001",
                    "location": {"city": "Madrid", "zone": "Salamanca", "latitude": 40.4284, "longitude": -3.6847},
                    "description": "Premium location in upscale Salamanca district"
                },
                {
                    "name": "Barcelona - Eixample",
                    "base_tenant_id": "B0000000-0000-4000-a000-000000000001",
                    "location": {"city": "Barcelona", "zone": "Eixample", "latitude": 41.3947, "longitude": 2.1616},
                    "description": "High-volume tourist and local area in central Barcelona"
                },
                {
                    "name": "Valencia - Ruzafa",
                    "base_tenant_id": "C0000000-0000-4000-a000-000000000001",
                    "location": {"city": "Valencia", "zone": "Ruzafa", "latitude": 39.4623, "longitude": -0.3645},
                    "description": "Trendy artisan neighborhood with focus on quality"
                },
                {
                    "name": "Seville - Triana",
                    "base_tenant_id": "D0000000-0000-4000-a000-000000000001",
                    "location": {"city": "Seville", "zone": "Triana", "latitude": 37.3828, "longitude": -6.0026},
                    "description": "Traditional Andalusian location with local specialties"
                },
                {
                    "name": "Bilbao - Casco Viejo",
                    "base_tenant_id": "E0000000-0000-4000-a000-000000000001",
                    "location": {"city": "Bilbao", "zone": "Casco Viejo", "latitude": 43.2567, "longitude": -2.9272},
                    "description": "Basque region location with focus on quality and local culture"
                }
            ]
        }
    }

    # Service URLs - these are inherited from BaseServiceSettings
    # but we can override defaults if needed:
    # - GATEWAY_URL (inherited)
    # - AUTH_SERVICE_URL, TENANT_SERVICE_URL, etc. (inherited)
    # - JWT_SECRET_KEY, JWT_ALGORITHM (inherited)
    # - LOG_LEVEL (inherited)

    class Config:
        env_file = ".env"
        case_sensitive = True


settings = Settings()
