from pydantic import BaseModel
from typing import Optional, List
from app.schemas.area import AreaResponse


class PositionTypeInSlot(BaseModel):
    code: str
    label: str
    color: str

    class Config:
        from_attributes = True


class PositionSlotCreate(BaseModel):
    area_id: int
    nomor: str
    position_type_codes: List[str]
    sort_order: int = 0


class PositionSlotUpdate(BaseModel):
    area_id: Optional[int] = None
    nomor: Optional[str] = None
    position_type_codes: Optional[List[str]] = None
    sort_order: Optional[int] = None
    is_active: Optional[bool] = None


class PositionSlotResponse(BaseModel):
    id: int
    area_id: int
    nomor: str
    sort_order: int
    is_active: bool
    area: AreaResponse
    position_types: List[PositionTypeInSlot]

    class Config:
        from_attributes = True
