from decimal import Decimal
from typing import Optional
from pydantic import BaseModel, EmailStr, Field, field_validator
from src.core.validators import validate_phone


class AvailabilityEnquiryRequest(BaseModel):
    sender_name: str = Field(min_length=2, max_length=255)
    sender_email: EmailStr
    sender_phone: Optional[str] = None
    plot_number: str = Field(min_length=1, max_length=50)
    section_name: str = Field(min_length=1, max_length=100)
    listed_price: Optional[Decimal] = Field(default=None, ge=0)
    message: Optional[str] = Field(default=None, max_length=2000)

    @field_validator('sender_phone', mode='before')
    @classmethod
    def _validate_phone(cls, v):
        return validate_phone(v)
