o
    Ej\t                     @   s  d dl m Z mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 ddlT d dlT d dlmZ d	Zd
Zdd Zdd Zdd ZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd  d ejZG d!d" d"ejZG d#d$ d$ejZG d%d& d&ejZG d'd( d(ejZ G d)d* d*ejZ!G d+d, d,ejZ"G d-d. d.ejZ#G d/d0 d0ejZ$G d1d2 d2ejZ%G d3d4 d4ejZ&G d5d6 d6ejZ'G d7d8 d8ejZ(G d9d: d:ejZ)G d;d< d<ejZ*G d=d> d>ejZ+G d?d@ d@ejZ,G dAdB dBejZ-G dCdD dDejZ.G dEdF dFejZ/G dGdH dHejZ0G dIdJ dJejZ1G dKdL dLej2Z3G dMdN dNejZ4G dOdP dPejZ5G dQdR dRejZ6dSS )T    )datetimetimezone)JsonResponse)serializers)getLanguagevalidateParentId)create_payment_intent   )*)FisDetail1c                 C   sF   | j dr| j d jdd }|S | j dr| j d }|S d }|S )Nrequestr   )context__contains__query_paramsget)selfr    r   ]/var/www/snowflake_co_dev_github/snow_flake_back_end_deploy/mama_care_api/shop/serializers.pygetIsDetail   s   
r   c                 C   s&   | d urt jj| d}|jr|jS d S Nid)Currencyobjectsr   	isEnabledr   )
currencyIdselectedCurrencyr   r   r   getCurrencyRecord   s
   r   c                 C   sR   | j dr| j d jtd }t|S | j tr#| j t }t|S d }t|S )Nr   )r   r   headersr   currencyKeyr   )r   r   r   r   r   getCurrency!   s   
r"   c                   @   *   e Zd Ze ZG dd dZdd ZdS )CurrencySerializerc                   @      e Zd ZeZg dZdS )zCurrencySerializer.Meta)r   symbolcoder   createdDateupdatedDatenameN)__name__
__module____qualname__r   modelfieldsr   r   r   r   Meta0       r0   c                 C   J   t | }|d ur!tjjt|jdj|d}| dkr#|d jS d S d S )Nr   
languageIdr   )r   CurrencyLanguager   filterstrr   __len__r*   )r   instancer5   currencyLanguageListr   r   r   get_name<      
zCurrencySerializer.get_nameNr+   r,   r-   r   SerializerMethodFieldr*   r0   r<   r   r   r   r   r$   -       r$   c                   @      e Zd ZG dd dZdS )CurrencyLanguageSerializerc                   @   r%   )zCurrencyLanguageSerializer.Meta)r   r*   r(   r)   r5   r   N)r+   r,   r-   r6   r.   r/   r   r   r   r   r0   G   r1   r0   Nr+   r,   r-   r0   r   r   r   r   rB   F       rB   c                   @   r#   )PaymentMethodSerializerc                   @   r%   )zPaymentMethodSerializer.Meta)r   keyNamer(   r)   r*   N)r+   r,   r-   PaymentMethodr.   r/   r   r   r   r   r0   W   r1   r0   c                 C   r2   )N)paymentMethodIdr4   r   )r   PaymentMethodLanguager   r7   r8   r   r9   r*   )r   r:   r5   paymentMethodLanguageListr   r   r   r<   [   r=   z PaymentMethodSerializer.get_nameNr>   r   r   r   r   rE   T       rE   c                   @   rA   )PaymentMethodLanguageSerializerc                   @   r%   )z$PaymentMethodLanguageSerializer.Meta)r   r*   r(   r)   r5   rH   N)r+   r,   r-   rI   r.   r/   r   r   r   r   r0   f   r1   r0   NrC   r   r   r   r   rL   e   rD   rL   c                   @   :   e Zd Ze Ze ZG dd dZdd Zdd Z	dS )StoreSerializerc                   @   r%   )zStoreSerializer.Meta)r   rF   r(   r)   r   r*   currencyN)r+   r,   r-   Storer.   r/   r   r   r   r   r0   w   r1   r0   c                 C   r2   )N)storeIdr4   r   )r   StoreLanguager   r7   r8   r   r9   r*   )r   r:   r5   storeLanguageListr   r   r   r<      r=   zStoreSerializer.get_namec                 C   s   t jj|jjd}t|jS r   )r   r   r   r   r   r$   data)r   r:   selectedr   r   r   get_currency   s   
zStoreSerializer.get_currencyN)
r+   r,   r-   r   r?   r*   rO   r0   r<   rV   r   r   r   r   rN   s   s    	rN   c                   @   rA   )StoreLanguageSerializerc                   @   r%   )zStoreLanguageSerializer.Meta)r   r*   r(   r)   r5   rQ   N)r+   r,   r-   rR   r.   r/   r   r   r   r   r0      r1   r0   NrC   r   r   r   r   rW      rD   rW   c                   @   r#   )ShoppingAccountSerializerc                   @   r%   )zShoppingAccountSerializer.Meta)r   
isSelectedr(   r)   parentIdrQ   storeN)r+   r,   r-   ShoppingAccountr.   r/   r   r   r   r   r0      r1   r0   c                 C   s   t | }t|jt|idjS )Nr   )r   rN   rQ   languageKeyrT   )r   r:   r5   r   r   r   	get_store   s   z#ShoppingAccountSerializer.get_storeN)r+   r,   r-   r   r?   r[   r0   r_   r   r   r   r   rX      r@   rX   c                   @   s2   e Zd Ze ZG dd dZdd Zdd ZdS )AddressBookSerializerc                   @   r%   )zAddressBookSerializer.Meta)	r   phonecountrycityaddresspostCoderY   shoppingAccountIdisAuthorizedN)r+   r,   r-   AddressBookr.   r/   r   r   r   r   r0      r1   r0   c                 C   s   t | |jjjS )N)r   rf   rZ   r   )r   r:   r   r   r   get_isAuthorized   s   z&AddressBookSerializer.get_isAuthorizedc                 C   sT   d}d}d|v rt | |d jj}nd}|dkr|S t|dkr(td|gid S )N Frf   Parent Id does not exitTr   error)r   rZ   r   lenr   ValidationError)r   rT   errorMessageisCheckr   r   r   validate   s   zAddressBookSerializer.validateN)	r+   r,   r-   r   r?   rg   r0   ri   rq   r   r   r   r   r`      s
    r`   c                   @   r#   )CollectionSerializerc                   @   r%   )zCollectionSerializer.Meta)r   rF   r(   r)   r*   collectionIdN)r+   r,   r-   
Collectionr.   r/   r   r   r   r   r0      r1   r0   c                 C   r2   )N)rs   r4   r   )r   CollectionLanguager   r7   r8   r   r9   r*   )r   r:   r5   collectionLanguageListr   r   r   r<      r=   zCollectionSerializer.get_nameNr>   r   r   r   r   rr      rK   rr   c                   @   rA   )CollectionLanguageSerializerc                   @   r%   )z!CollectionLanguageSerializer.Meta)r   r*   r(   r)   r5   rs   N)r+   r,   r-   ru   r.   r/   r   r   r   r   r0      r1   r0   NrC   r   r   r   r   rw      rD   rw   c                   @   r#   )StoreCollectionSerializerc                   @   r%   )zStoreCollectionSerializer.Meta)r   rs   rQ   
collectionN)r+   r,   r-   StoreCollectionr.   r/   r   r   r   r   r0      r1   r0   c                 C   s,   t | }tjj|jjd}t|d|idjS )Nr   r5   r]   )r   rt   r   r   rs   r   rr   rT   r   r:   r5   rU   r   r   r   get_collection      z(StoreCollectionSerializer.get_collectionN)r+   r,   r-   r   r?   ry   r0   r|   r   r   r   r   rx      rK   rx   c                   @   r#   )SellerShippingCostSerializerc                   @   r%   )z!SellerShippingCostSerializer.Meta)r   rF   r(   r)   shippingCostListN)r+   r,   r-   SellerShippingCostr.   r/   r   r   r   r   r0      r1   r0   c                 C      t jj|jd}t|ddjS )N)sellerShippingCostIdTmany)ShippingCostr   r7   r   ShippingCostSerializerrT   )r   r:   dataListr   r   r   get_shippingCostList     z1SellerShippingCostSerializer.get_shippingCostListN)r+   r,   r-   r   r?   r   r0   r   r   r   r   r   r~      rK   r~   c                   @   r#   )ProductBasicSerializerc                   @   s   e Zd ZeZddgZdS )zProductBasicSerializer.Metar   r*   Nr+   r,   r-   Productr.   r/   r   r   r   r   r0     r1   r0   c                 C   r2   N	productIdr4   r   r   ProductLanguager   r7   r8   r   r9   r*   r   r:   r5   productLanguageListr   r   r   r<     r=   zProductBasicSerializer.get_nameNr>   r   r   r   r   r     rK   r   c                   @   s   e Zd Ze Ze Ze Ze Ze Z	e Z
G dd dZdd Zdd Zdd Zd	d
 Zdd Zdd Zdd ZdS )ProductSerializerc                   @   r%   )zProductSerializer.Meta)r   rF   	isDigitalisFree	isVisibler(   r)   r*   description
optionListoptionValueListskuListskuOptionValueListNr   r   r   r   r   r0   !  r1   r0   c                 C   sJ   | j d}| j d}|o|jdk}|r|jdnd }|r#|r#dS dS )Nr   viewGETr   TF)r   r   methodkwargs)r   r   r   is_read
product_idr   r   r   r   3  s   zProductSerializer.getIsDetailc                 C   r2   r   r   r   r   r   r   r<   <  r=   zProductSerializer.get_namec                 C   r2   r   )r   r   r   r7   r8   r   r9   r   r   r   r   r   get_descriptionE  r=   z!ProductSerializer.get_descriptionc                 C   8   |   rt| }tjj|jd}t|t|iddjS g S )Nr   Tr   r   )	r   r   ProductOptionr   r7   r   ProductOptionSerializerr^   rT   r   r:   r5   r   r   r   r   get_optionListN  s   
z ProductSerializer.get_optionListc                 C   r   )N)productOptionId__productIdTr   )	r   r   ProductOptionValuer   r7   r   ProductOptionValueSerializerr^   rT   r   r   r   r   get_optionValueListW  s   
z%ProductSerializer.get_optionValueListc                 C   sr   t | }|  dkr#tjj|j|dd }t|t	|iddj
gS tjj|j|dd}t|t	|iddj
S )NF)r   sku_skuprice__currencyIdsku_skuprice__salePricer   T)r"   r   SKUr   r7   r   order_byfirstSKUSerializerr!   rT   r   r:   r   r   r   r   r   get_skuListb  s.   	

zProductSerializer.get_skuListc                 C   s*   |   rtjj|jd}t|ddjS g S )N)skuId__productIdTr   )r   SKUOptionValuer   r7   r   SKUOptionValueSerializerrT   )r   r:   datalistr   r   r   get_skuOptionValueList{  s   z(ProductSerializer.get_skuOptionValueListN)r+   r,   r-   r   r?   r*   r   r   r   r   r   r0   r   r<   r   r   r   r   r   r   r   r   r   r     s    				r   c                   @   rA   )ProductLanguageSerializerc                   @   r%   )zProductLanguageSerializer.Meta)r   r*   r   r(   r)   r5   r   N)r+   r,   r-   r   r.   r/   r   r   r   r   r0     r1   r0   NrC   r   r   r   r   r     rD   r   c                   @   rM   )ProductCollectionSerializerc                   @   r%   )z ProductCollectionSerializer.Meta)r   r(   r)   r   rs   ry   productN)r+   r,   r-   ProductCollectionr.   r/   r   r   r   r   r0     r1   r0   c                 C   s,   t | }tjj|jjd}t|t|idjS Nr   r]   )	r   rt   r   r   rs   r   rr   r^   rT   r{   r   r   r   r|     r}   z*ProductCollectionSerializer.get_collectionc                 C   s8   t | }t| }tjj|jjd}t|t|t	|idj
S r   )r   r"   r   r   r   r   r   r   r^   r!   rT   )r   r:   r5   r   rU   r   r   r   get_product  s   z'ProductCollectionSerializer.get_productN)
r+   r,   r-   r   r?   ry   r   r0   r|   r   r   r   r   r   r     s    r   c                   @   r#   )r   c                   @   r%   )zProductOptionSerializer.Meta)r   rF   r(   r)   r   r*   N)r+   r,   r-   r   r.   r/   r   r   r   r   r0     r1   r0   c                 C   r2   )N)productOptionIdr4   r   )r   ProductOptionLanguager   r7   r8   r   r9   r*   )r   r:   r5   productOptionLanguageListr   r   r   r<     r=   z ProductOptionSerializer.get_nameNr>   r   r   r   r   r     rK   r   c                   @   rA   )ProductOptionLanguageSerializerc                   @   r%   )z$ProductOptionLanguageSerializer.Meta)r   r*   r(   r)   r5   r   N)r+   r,   r-   r   r.   r/   r   r   r   r   r0     r1   r0   NrC   r   r   r   r   r     rD   r   c                   @   rM   )r   c                   @   r%   )z!ProductOptionValueSerializer.Meta)r   rF   valuer(   r)   r   r*   productOptionN)r+   r,   r-   r   r.   r/   r   r   r   r   r0     r1   r0   c                 C   r2   )N)productOptionValueIdr4   r   )r   ProductOptionValueLanguager   r7   r8   r   r9   r*   )r   r:   r5   productOptionValueLanguageListr   r   r   r<     r=   z%ProductOptionValueSerializer.get_namec                 C   X   t | }|tkr(t| }tjj|jjd}| dkr*t	|d t
|ttidjS d S d S Nr   r   r]   )r   isDetailValuer   r   r   r7   r   r   r9   r   r^   isDetailKeyrT   r   r:   r   r5   r   r   r   r   get_productOption  s   
z.ProductOptionValueSerializer.get_productOptionN)
r+   r,   r-   r   r?   r*   r   r0   r<   r   r   r   r   r   r     s    	r   c                   @   rA   )$ProductOptionValueLanguageSerializerc                   @   r%   )z)ProductOptionValueLanguageSerializer.Meta)r   r*   r(   r)   r5   r   N)r+   r,   r-   r   r.   r/   r   r   r   r   r0     r1   r0   NrC   r   r   r   r   r     rD   r   c                   @   rM   )r   c                   @   r%   )zSKUSerializer.Meta)r   serialstockr(   r)   r   	priceList	imageListNr+   r,   r-   r   r.   r/   r   r   r   r   r0     r1   r0   c                 C   .   t | }tjj|jdj|d}t|ddjS NskuIdr3   Tr   r"   SKUPricer   r7   r   SKUPriceSerializerrT   r   r   r   r   get_priceList  
   zSKUSerializer.get_priceListc                 C   r   Nr   Tr   SKUImager   r7   r   SKUImageSerializerrT   r   r:   r   r   r   r   get_imageList  r   zSKUSerializer.get_imageListN)
r+   r,   r-   r   r?   r   r   r0   r   r   r   r   r   r   r     s    r   c                   @   rA   )r   c                   @   r%   )zShippingCostSerializer.Meta)
r   isFreeShippingminDeliveryDaysmaxDeliveryDayscostdefaultCostr(   r)   
skuPriceIdr   N)r+   r,   r-   r   r.   r/   r   r   r   r   r0      r1   r0   NrC   r   r   r   r   r     rD   r   c                   @   r#   )r   c                   @   r%   )zSKUOptionValueSerializer.Meta)r   r(   r)   r   r   productOptionValueN)r+   r,   r-   r   r.   r/   r   r   r   r   r0   3  r1   r0   c                 C   r   r   )r   r   r   r   r   r7   r   r   r9   r   r^   r   rT   r   r   r   r   get_productOptionValue>  s   
z/SKUOptionValueSerializer.get_productOptionValueN)r+   r,   r-   r   r?   r   r0   r   r   r   r   r   r   0  s    r   c                   @   rA   )r   c                   @   r%   )zSKUImageSerializer.Meta)r   imageUrlr(   r)   r   N)r+   r,   r-   r   r.   r/   r   r   r   r   r0   M  r1   r0   NrC   r   r   r   r   r   L  rD   r   c                   @   r#   )r   c                   @   r%   )zSKUPriceSerializer.Meta)r   	salePriceoriginalPricer(   r)   r   r   shippingCostN)r+   r,   r-   r   r.   r/   r   r   r   r   r0   U  r1   r0   c                 C   s>   t jj|jd}| dkr|d jr|d jS |d jS d S )N)r   r   )r   r   r7   r   r9   r   r   r   )r   r:   r   r   r   r   get_shippingCostb  s   


z#SKUPriceSerializer.get_shippingCostN)r+   r,   r-   r   r?   r   r0   r   r   r   r   r   r   R  s    r   c                   @   sZ   e Zd Ze Ze Ze Ze ZG dd dZ	dd Z
dd Zdd Zd	d
 ZdS )SKUDetailSerializerc                   @   r%   )zSKUDetailSerializer.Meta)
r   r   r   r(   r)   r   r   r   r   r   Nr   r   r   r   r   r0   q  r1   r0   c                 C   r   r   r   r   r   r   r   r     r   z!SKUDetailSerializer.get_priceListc                 C   r   r   r   r   r   r   r   r     r   z!SKUDetailSerializer.get_imageListc                 C   sD   t | }|tkr t| }tjj|jd}t|t|t	tiddj
S d S )Nr   Tr   )r   r   r   r   r   r7   r   r   r^   r   rT   r   r   r   r   r     s   
z'SKUDetailSerializer.get_optionValueListc                 C   s@   t jj|jjd}| dkrt| }t|d t|idj	S d S r   )
r   r   r7   r   r   r9   r   r   r^   rT   )r   r:   r   r5   r   r   r   r     s   zSKUDetailSerializer.get_productN)r+   r,   r-   r   r?   r   r   r   r   r0   r   r   r   r   r   r   r   r   r   k  s    r   c                   @   rM   )CartSerializerc                   @   r%   )zCartSerializer.Meta)r   quantityr(   r)   r   rf   rg   skuN)r+   r,   r-   Cartr.   r/   r   r   r   r   r0     r1   r0   c                 C   s@   t | }|dkrt| }t| }t|jt|t|t|idjS d S )Nr   r]   )	r   r"   r   r   r   r^   r!   r   rT   )r   r:   r   r   r5   r   r   r   get_sku  s   zCartSerializer.get_skuc                 C   sD  d}d }d }| j dr| j d jdd }n| j dr"| j d }| j dr3| j d jdd }n| j dr>| j d }d }|d urIt|}n
d}td|gi|d ur\t|}n
d}td|gitjj	|d}|
 d	krx|d	 }n
d
}td|gi|d ur||jjkrdS d}td|gid}td|gi)Nrj   r   rZ   rf   zParent Id is Requiredrl   zShopping Account Id is Requiredr   r   zShopping Account Not FoundTzParent Id do not MatchzShopping Account is None)r   r   r   r   intr   rn   r\   r   r7   r9   rZ   r   )r   r:   ro   rf   rZ   currentShoppingAccountcurrentShoppingAccountListr   r   r   ri     sH   




zCartSerializer.get_isAuthorizedN)
r+   r,   r-   r   r?   rg   r   r0   r   ri   r   r   r   r   r     s    r   c                   @   rA   )OrderStatusSerializerc                   @   r%   )zOrderStatusSerializer.Meta)r   rF   r(   r)   N)r+   r,   r-   OrderStatusr.   r/   r   r   r   r   r0     r1   r0   NrC   r   r   r   r   r     rD   r   c                   @   rA   )OrderStatusLanguageSerializerc                   @   r%   )z"OrderStatusLanguageSerializer.Meta)r   r*   r(   r)   r5   orderStatusIdN)r+   r,   r-   OrderStatusLanguager.   r/   r   r   r   r   r0     r1   r0   NrC   r   r   r   r   r     rD   r   c                   @   s<   e Zd Ze Ze Ze Ze Zdd Z	dd Z
dS )PlaceOrderSerializerc                 C   s  d}d}d|v rt | |d }nd}|d}|d ur9tjj|d}| dkr7|d }|jj|d kr6d}nd	}|d
}|d ur^tjj|d}| dkr\|d }|j	j|kr[d}nd}|d}	|	d urvt
jj|	d}
|
 dkrvd}|dkr||S t|dkrtd|gid S )Nrj   TrZ   rk   rf   r   r   z.Parent Id does not match with Shopping AccountzShopping Account does not exitaddressBookIdz4Shopping Account Id does not match with Address BookzAddress Book does not exitrH   zPayment Method does not exitrl   )r   r   r\   r   r7   r9   rZ   r   rh   rf   rG   rm   r   rn   )r   rT   ro   rp   rf   shoppingAccountListrU   r  addressBookListrH   paymentMethodListr   r   r   rq     sD   


zPlaceOrderSerializer.validatec                 C   s  t jj|d d }tjj|d d}tjj|d }tjj|d d}| dkr3t	
dditjjddtjjd	d||j|t t d
}tjj|j|j|j|j|j|t t d d}|D ]}}t||d |j|jjjdddj}	||	d d d d |	d d d d  |j 7 }tjj|	d d d d |	d d d d |	d d d d |jt t tjj|	d d d ||jjd	 tjj|	d d djtd|j t d qf||j  }tjj|d d!  t"||j|jjj#}
t$|
ddS )NrH   r   rf   )rf   r   rl   zCart is emptyg        r	   )deliverytaxr   rH   rQ   rf   r(   r)   )ra   rb   rc   rd   re   orderIdr(   r)   rZ   r   )rZ   rf   r   r   r]   r   r   r   r   r   r   )	pricePerItemoriginalPricePerItemr   r   r(   r)   r   r  r   r   )r   r)   F)safe)%rG   r   r7   r   r\   r   rh   r   r9   r   rn   Ordercreater   rQ   r   nowShippingAddressra   rb   rc   rd   re   r   r   r   rT   r   	OrderItemr   updater   r  deleter   r'   r   )r   validated_datapaymentMethodrU   addressBookcartListordersubTotalcartserpaymentIntentr   r   r   r  7  s   


zPlaceOrderSerializer.createN)r+   r,   r-   r   IntegerFieldrZ   rf   r  rH   rq   r  r   r   r   r   r     s    *r   c                   @   rA   )OrderSerializerc                   @   r%   )zOrderSerializer.Meta)	r   r  r  r(   r)   r   rH   rQ   rf   N)r+   r,   r-   r  r.   r/   r   r   r   r   r0     r1   r0   NrC   r   r   r   r   r    rD   r  c                   @   rA   )OrderItemSerializerc                   @   r%   )zOrderItemSerializer.Meta)
r   r  r	  r   r   r(   r)   r   r  r   N)r+   r,   r-   r  r.   r/   r   r   r   r   r0     r1   r0   NrC   r   r   r   r   r    rD   r  c                   @   rA   )ShippingAddressSerializerc                   @   r%   )zShippingAddressSerializer.Meta)	r   ra   rb   rc   rd   re   r  r(   r)   N)r+   r,   r-   r  r.   r/   r   r   r   r   r0     r1   r0   NrC   r   r   r   r   r    rD   r  N)7r   r   django.httpr   rest_frameworkr   common.commonr   r   payment.methodsr   modelsmama_care_api.settingsdjango.db.modelsr   r   r   r   r   r"   ModelSerializerr$   rB   rE   rL   rN   rW   rX   r`   rr   rw   rx   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
Serializerr   r  r  r  r   r   r   r   <module>   s^    $i&5S 