from pydantic import BaseModel
from typing import Optional, List

class SeatLayoutItem(BaseModel):
    position_number: str
    row_index: int
    col_index: int
    side: Optional[str] = None     # 'kuning' or 'biru'
    section: Optional[str] = None  # 'samping_kiri', 'samping_kanan', 'depan'

class SeatLayoutSave(BaseModel):
    items: List[SeatLayoutItem]

class SeatLayoutResponse(BaseModel):
    id: int
    position_number: str
    row_index: int
    col_index: int
    side: Optional[str] = None
    section: Optional[str] = None

    class Config:
        from_attributes = True

class SeatLayoutWithAssignment(BaseModel):
    id: int
    position_number: str
    row_index: int
    col_index: int
    side: Optional[str] = None
    section: Optional[str] = None
    asim_id: Optional[int] = None
    asim_name: Optional[str] = None
    asim_no: Optional[int] = None
    asim_photo: Optional[str] = None
    position_type_code: Optional[str] = None
    position_type_label: Optional[str] = None
    position_type_color: Optional[str] = None
