from pydantic import BaseModel from typing import Optional from datetime import datetime, date from decimal import Decimal class ServiceBase(BaseModel): customer_id: Optional[int] = None customer_name: Optional[str] = None customer_address: Optional[str] = None customer_town: Optional[str] = None customer_state: Optional[str] = None customer_zip: Optional[str] = None type_service_call: Optional[int] = None scheduled_date: Optional[datetime] = None description: Optional[str] = None service_cost: Optional[Decimal] = None payment_type: Optional[int] = None payment_card_id: Optional[int] = None payment_status: Optional[int] = None class ServiceResponse(ServiceBase): id: int when_ordered: Optional[datetime] = None class Config: from_attributes = True class ServiceCreateRequest(BaseModel): customer_id: int expected_delivery_date: str type_service_call: Optional[int] = None description: Optional[str] = None class ServiceUpdateRequest(BaseModel): scheduled_date: Optional[str] = None type_service_call: Optional[int] = None description: Optional[str] = None service_cost: Optional[Decimal] = None class ServiceCostUpdateRequest(BaseModel): service_cost: Decimal class ServicePartsBase(BaseModel): customer_id: Optional[int] = None oil_filter: Optional[str] = None oil_filter_2: Optional[str] = None oil_nozzle: Optional[str] = None oil_nozzle_2: Optional[str] = None hot_water_tank: Optional[int] = None class ServicePartsResponse(ServicePartsBase): id: Optional[int] = None class Config: from_attributes = True class ServicePartsUpdateRequest(BaseModel): oil_filter: Optional[str] = None oil_filter_2: Optional[str] = None oil_nozzle: Optional[str] = None oil_nozzle_2: Optional[str] = None hot_water_tank: Optional[int] = None class ServicePlanBase(BaseModel): customer_id: Optional[int] = None contract_plan: Optional[int] = None contract_years: Optional[int] = None contract_start_date: Optional[date] = None class ServicePlanResponse(ServicePlanBase): id: Optional[int] = None customer_name: Optional[str] = None customer_address: Optional[str] = None customer_town: Optional[str] = None class Config: from_attributes = True class ServicePlanCreateRequest(BaseModel): customer_id: int contract_plan: int contract_years: int contract_start_date: str class ServicePlanUpdateRequest(BaseModel): contract_plan: Optional[int] = None contract_years: Optional[int] = None contract_start_date: Optional[str] = None class CalendarEvent(BaseModel): id: int title: str start: Optional[str] = None end: Optional[str] = None backgroundColor: Optional[str] = None textColor: Optional[str] = None borderColor: Optional[str] = None extendedProps: Optional[dict] = None