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


class OpportunityCreateRequest(BaseModel):
    record_id: Optional[UUID] = None
    plot_id: Optional[UUID] = None
    contact_name: str
    contact_email: Optional[str] = None
    contact_phone: Optional[str] = None
    notes: Optional[str] = None


class OpportunityUpdateRequest(BaseModel):
    stage: Optional[str] = None
    plot_id: Optional[UUID] = None
    notes: Optional[str] = None


class ContractLineItemRequest(BaseModel):
    description: str
    quantity: Decimal = Decimal("1")
    unit_price: Decimal
    discount: Decimal = Decimal("0")


class ContractCreateRequest(BaseModel):
    opportunity_id: Optional[UUID] = None
    record_id: Optional[UUID] = None
    plot_id: Optional[UUID] = None
    signatory_name: str
    signatory_email: Optional[str] = None
    sign_date: Optional[date] = None
    notes: Optional[str] = None
    line_items: List[ContractLineItemRequest] = []


class ContractUpdateRequest(BaseModel):
    status: Optional[str] = None
    signatory_name: Optional[str] = None
    sign_date: Optional[date] = None
    notes: Optional[str] = None
