o
    9]Ègð  ã                   @   s´   d dl m Z  d dlmZmZ d dlmZmZmZ G dd„ deƒZG dd„ deƒZ	G dd	„ d	e	ƒZ
G d
d„ de	ƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )é    )Údatetime)ÚOptionalÚList)Ú	BaseModelÚ	validatorÚFieldc                   @   s>   e Zd ZU eed< eed< eed< eed< eed< eed< dS )ÚShippingDetailsÚnameÚaddressÚcityÚpostal_codeÚcountryÚphoneN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__© r   r   ú/app/app/schemas/order.pyr      s   
 r   c                   @   s   e Zd ZU eed< eed< dS )ÚOrderItemBaseÚ
product_idÚquantityN)r   r   r   Úintr   r   r   r   r   r      s   
 r   c                   @   s   e Zd ZdS )ÚOrderItemCreateN)r   r   r   r   r   r   r   r      s    r   c                   @   st   e Zd ZU eed< eed< eed< eed< eed< dZee ed< dZ	ee ed< dZ
ee ed	< G d
d„ dƒZdS )ÚOrderItemResponseÚidÚorder_idÚpoints_per_itemÚtotal_pointsÚ
created_atNÚproduct_nameÚproduct_imageÚproduct_pricec                   @   ó   e Zd ZdZdS )zOrderItemResponse.ConfigTN©r   r   r   Úorm_moder   r   r   r   ÚConfig   ó    r'   )r   r   r   r   r   r   r!   r   r   r"   r#   r'   r   r   r   r   r      s   
 r   c                   @   sp   e Zd ZU dZee ed< dZee ed< dZ	ee
 ed< dZee ed< eddƒdd„ ƒZedƒd	d
„ ƒZdS )Ú	OrderBaseNÚ
address_idÚshipping_detailsFÚsave_addressÚaddress_titlec                 C   s(   d|v r|d d u r|d u rt dƒ‚|S )Nr*   z6Either address_id or shipping_details must be provided)Ú
ValueError©ÚclsÚvÚvaluesr   r   r   Úcheck_shipping_info'   s   zOrderBase.check_shipping_infoc                 C   s$   |  d¡r|  d¡r|stdƒ‚|S )Nr,   r+   z3address_title is required when save_address is True)Úgetr.   r/   r   r   r   Úvalidate_address_title.   s   z OrderBase.validate_address_title)r   r   r   r*   r   r   r   r+   r   r,   Úboolr-   r   r   r3   r5   r   r   r   r   r)   !   s   
 
r)   c                   @   r$   )ÚOrderCreatez0Request model for creating a new order from cartN)r   r   r   Ú__doc__r   r   r   r   r7   5   s    r7   c                   @   sd   e Zd ZU eed< eed< eed< eed< eed< g Zee ed< e	ed< e	ed< G d	d
„ d
ƒZ
dS )ÚOrderResponser   Úuser_idÚorder_numberr   ÚstatusÚitemsr    Ú
updated_atc                   @   r$   )zOrderResponse.ConfigTNr%   r   r   r   r   r'   C   r(   r'   N)r   r   r   r   r   r   r=   r   r   r   r'   r   r   r   r   r9   9   s   
 r9   c                   @   s6   e Zd ZU eed< eed< eed< eed< eed< dS )ÚOrderSummaryZunique_users_countZorder_countr   Ú
start_dateÚend_dateN)r   r   r   r   r   r   r   r   r   r   r?   G   s   
 r?   N)r   Útypingr   r   Úpydanticr   r   r   r   r   r   r   r)   r7   r9   r?   r   r   r   r   Ú<module>   s    