from pydantic import BaseModel
from typing import Optional, List
from schemas.base import UTCDatetime


class ShiftBreakOut(BaseModel):
    id: int
    shift_id: int
    started_at: UTCDatetime
    ended_at: Optional[UTCDatetime] = None

    model_config = {"from_attributes": True}


class WaiterShiftOut(BaseModel):
    id: int
    waiter_id: int
    waiter_name: Optional[str] = None
    business_day_id: int
    started_at: UTCDatetime
    ended_at: Optional[UTCDatetime] = None
    starting_cash: Optional[float] = None
    total_collected: Optional[float] = None
    net_to_deliver: Optional[float] = None
    is_active: bool = True
    notes: Optional[str] = None
    breaks: List[ShiftBreakOut] = []

    model_config = {"from_attributes": True}


class StartShiftRequest(BaseModel):
    starting_cash: Optional[float] = None
    waiter_id: Optional[int] = None  # manager use: start shift for a specific waiter


class EndShiftRequest(BaseModel):
    notes: Optional[str] = None
    counted_cash_end: Optional[float] = None  # Phase 2E: physical cash waiter hands over
