"""Settings response schemas."""
from decimal import Decimal
from typing import Optional, Any, Dict
from uuid import UUID
from datetime import datetime
from pydantic import BaseModel, ConfigDict, model_validator


class FeeItemResponse(BaseModel):
    model_config = ConfigDict(from_attributes=True)

    id: UUID
    tenant_id: UUID
    name: str
    category: str
    description: Optional[str] = None
    unit_price: Decimal
    is_taxable: bool
    is_active: bool
    sort_order: int
    created_at: datetime
    updated_at: datetime


class CemeteryProfileResponse(BaseModel):
    model_config = ConfigDict(from_attributes=True)

    id: UUID
    organization_name: str
    subdomain: str
    cemetery_type: Optional[str] = None
    contact_email: Optional[str] = None
    contact_phone: Optional[str] = None
    address: Optional[str] = None
    status: str
    plan: str
    config_json: Optional[Dict[str, Any]] = None
    created_at: datetime
    updated_at: datetime


class QRCodeResponse(BaseModel):
    model_config = ConfigDict(from_attributes=True)

    id: UUID
    tenant_id: UUID
    qr_type: str
    reference_id: str
    display_label: Optional[str]
    content_url: str
    is_generated: bool = False
    is_active: bool
    generated_at: Optional[datetime]
    created_at: datetime
    updated_at: datetime

    @model_validator(mode='after')
    def set_is_generated(self) -> 'QRCodeResponse':
        self.is_generated = self.generated_at is not None
        return self
