from datetime import date

from src.data.model.schemas.base_schemas import BaseSchemaModel
from typing import List
from src.data.model.schemas.shop import Shop
from typing import Optional


class DoOrder(BaseSchemaModel):
    partner_id: int
    agent_id: int | None
    sales_order_type: int | None
    shop: Shop


class GetOrder(BaseSchemaModel):
    partner_id: int
    agent_id: int | None
    sales_order_type_code: int | None
    shop: Shop
    from_item: int
    take: int
    current_season: bool | None


class OrderItem(BaseSchemaModel):
    article_number: str
    size: int
    color: str
    quantity: int
    price: float
    sales_order_type: int
    partner_delivery_number: str | None
    date_to: date
    date_from: date


class Order(BaseSchemaModel):
    id: int
    partner: str | None
    partner_id: int
    date: str
    agent_id: int | None
    sales_order_type_code: int | None
    items: List[OrderItem]
    sum: float


class OrdersList(BaseSchemaModel):
    orders: List[Order]
    page_count: int
    total_orders_count: int


class PagedOrders(BaseSchemaModel):
    page_count: int
    total_orders_count: int
    orders: List[Order]
