"""Sales response schemas."""
from datetime import date, datetime
from decimal import Decimal
from typing import Optional, List
from uuid import UUID
from pydantic import BaseModel, ConfigDict


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

    id: UUID
    tenant_id: UUID
    record_id: Optional[UUID] = None
    plot_id: Optional[UUID] = None
    contact_name: str
    contact_email: Optional[str] = None
    contact_phone: Optional[str] = None
    stage: str
    notes: Optional[str] = None
    created_at: datetime
    updated_at: datetime


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

    id: UUID
    description: str
    quantity: Decimal
    unit_price: Decimal
    discount: Decimal
    line_total: Decimal


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

    id: UUID
    tenant_id: UUID
    contract_number: str
    opportunity_id: Optional[UUID] = None
    record_id: Optional[UUID] = None
    plot_id: Optional[UUID] = None
    status: str
    signatory_name: str
    signatory_email: Optional[str] = None
    sign_date: Optional[date] = None
    total_amount: Decimal
    notes: Optional[str] = None
    pdf_s3_key: Optional[str] = None
    created_at: datetime
    updated_at: datetime
    line_items: List[ContractLineItemResponse] = []
