from pydantic import BaseModel
from typing import Optional, List
from datetime import datetime
from .product import ProductResponse


class OrderItemCreate(BaseModel):
    product_id: int
    quantity: int
    size: Optional[str] = None
    color: Optional[str] = None


class OrderItemResponse(BaseModel):
    id: int
    product_id: int
    quantity: int
    price: float
    size: Optional[str]
    color: Optional[str]
    product: ProductResponse

    class Config:
        from_attributes = True


class OrderCreate(BaseModel):
    shipping_address: str
    shipping_city: str
    shipping_postal_code: str
    shipping_country: str


class OrderResponse(BaseModel):
    id: int
    order_number: str
    user_id: int
    status: str
    total_amount: float
    shipping_address: str
    shipping_city: str
    shipping_postal_code: str
    shipping_country: str
    created_at: datetime
    items: List[OrderItemResponse]

    class Config:
        from_attributes = True
