from pydantic import BaseModel
from typing import Optional, List

class TemplatePositionCreate(BaseModel):
    position_number: str
    position_type_code: str
    posisi_id: Optional[int] = None

class TemplatePositionResponse(BaseModel):
    id: int
    position_number: str
    position_type_code: str
    position_type_label: Optional[str] = None
    position_type_color: Optional[str] = None
    sort_order: int = 0
    posisi_id: Optional[int] = None

    class Config:
        from_attributes = True

class MassTemplateCreate(BaseModel):
    name: str
    mass_type: str
    day_of_week: Optional[int] = None
    time: Optional[str] = None
    is_first_friday: bool = False
    num_positions: int = 8

class MassTemplateUpdate(BaseModel):
    name: Optional[str] = None
    mass_type: Optional[str] = None
    day_of_week: Optional[int] = None
    time: Optional[str] = None
    is_first_friday: Optional[bool] = None
    is_active: Optional[bool] = None

class MassTemplateResponse(BaseModel):
    id: int
    name: str
    mass_type: str
    day_of_week: Optional[int] = None
    time: Optional[str] = None
    is_first_friday: bool
    is_active: bool
    positions: List[TemplatePositionResponse] = []

    class Config:
        from_attributes = True
