
    i'                     (   d dl mZmZmZmZ d dlmZmZ d dlm	Z	m
Z
 d dlZd dlmZmZ d dlmZ d dlmZ  e       Z G d d	e      Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zej7                  d      	 	 	 	 	 	 d>dede
e   de
e   de
e   de
e   dedefd       Zej7                  d e ed             g!      	 	 	 	 	 	 d?de
e   de
e   de
e   de
e   dedefd"       Zej7                  d# e ed$            g!      	 	 	 	 	 	 d@de
e   de
e   d%ed&ed'ed(efd)       Z ejC                  d* ee      g!       e ed+            fd,efd-       Z"ejC                  d. ee      g!       e ed+            fd/ed,efd0       Z#ejI                  d1 ee      g!       e ed+            fd/ed2efd3       Z%ej7                  d4 e ed             g!      d/efd5       Z&ej7                  d6      d7edefd8       Z'ejC                  d6 ee      g!      d7eded,efd9       Z(ejI                  d: ee      g!      d7edefd;       Z)ejI                  d< ee      g!      d,efd=       Z*y)A    )	APIRouterHTTPExceptionDependsRequest)	BaseModelField)ListOptionalN)requires_permissionassert_actor_match)verify_turnstile)
OrderModelc                   r    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<   dZ
ee   ed<   y)AddressPayloadNstreetcitystatecountryzipCode)__name__
__module____qualname__r   r
   str__annotations__r   r   r   r        </var/www/pod-logistic/pod-api/controller/order_controller.pyr   r      sH     FHSM D(3-E8C=!GXc]!!GXc]!r   r   c                   ^    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<   y)CustomerPayloadNnamephoneemailaddress)r   r   r   r    r
   r   r   r!   r"   r#   r   r   r   r   r   r      s;    D(3-E8C=E8C=(,GXn%,r   r   c                   ^    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed<   y	)
OrderItemPayloadstylequantitypricecolorsizedesignshippingtaxN)r   r   r   r   r   intfloatr   r   r   r%   r%      s*    JMLJ
IKO	Jr   r%   c                   <    e Zd ZU dZee   ed<   dZeee	      ed<   y)UpdateOrderRequestNcustomeritems)
r   r   r   r2   r
   r   r   r3   r	   r%   r   r   r   r1   r1   '   s&    *.Hh'..2E8D)*+2r   r1   c                   :    e Zd ZU  ee      Zee   ed<   eed<   y)PayOrdersRequestdefault_factoryorderIdsid_khach_hangN)	r   r   r   r   listr8   r	   r   r   r   r   r   r5   r5   ,   s    5Hd3i5r   r5   c                   J    e Zd ZU eed<   dZee   ed<   dZee   ed<   eed<   y)AdminUpdateOrderStatusRequeststatusNtrackingNumbertrackingLinkactorId)r   r   r   r   r   r>   r
   r?   r   r   r   r<   r<   1   s(    K$(NHSM("&L(3-&Lr   r<   c                   l    e Zd ZU  ee      Zee   ed<   eed<   dZ	e
e   ed<   dZe
e   ed<   eed<   y)!AdminBulkUpdateOrderStatusRequestr6   docIdsr=   Nr>   r?   r@   )r   r   r   r   r:   rC   r	   r   r   r>   r
   r?   r   r   r   rB   rB   8   s;    d3FDI3K$(NHSM("&L(3-&Lr   rB   /r9   keywordr=   dateFromdateTopagepageSizec           	         K   	 t        j                  | ||||||      }ddi|S # t        $ r}t        dt	        |            d }~wt
        $ r t        dd      w xY ww)N)r9   rE   r=   rF   rG   rH   	page_sizesuccessT  status_codedetail  zFailed to fetch orders)r   get_all_orders
ValueErrorr   r   	Exception)	r9   rE   r=   rF   rG   rH   rI   resultes	            r   rR   rR   @   s{     N**'
 4*6** <CF;; N4LMMNs$   A"!& A"	AAAA"z/admin/searchorder_search)dependenciesc                    K   	 t        j                  | |||||      }ddi|S # t        $ r}t        dt	        |            d }~wt
        $ r t        dd      w xY ww)N)rE   r=   rF   rG   rH   rK   rL   TrM   rN   rQ   zFailed to fetch admin orders)r   admin_get_all_ordersrS   r   r   rT   )rE   r=   rF   rG   rH   rI   rU   rV   s           r   rZ   rZ   [   sx     T00
 4*6** <CF;; T4RSSTs$   A! % A!	AAAA!z/admin/dashboard-summaryview_dashboard	salesPagesalesPageSizesalesSortBysalesSortOrderc                    K   	 t        j                  | |||||      }d|dS # t        $ r}t        dt	        |            d }~wt
        $ r t        dd      w xY ww)N)rF   rG   r\   r]   r^   r_   TrL   datarM   rN   rQ   z!Failed to fetch dashboard summary)r   admin_get_dashboard_summaryrS   r   r   rT   )rF   rG   r\   r]   r^   r_   rb   rV   s           r   rc   rc   s   ss     Y55'#)
  .. <CF;; Y4WXXYs$   A $ A 	AAAA z/admin/batch-statusorder_operationsreqc                   K   	 |d   }|j                  dd      }t        || j                         t        j                  | j
                  | j                  | j                  | j                        }d|d|d    d| j                   ||d	d
S # t        $ r}t        dt        |            d }~wt        $ r2}t        j                          t        ddt        |             d }~ww xY ww)Nidr     )doc_ids
new_statustracking_numbertracking_linkTzUpdated updatedCountz orders to rg   r    rL   rb   messageactedByrM   rN   rQ   z+Failed to update admin batch order status: )getr   r@   r   admin_batch_update_order_statusrC   r=   r>   r?   rS   r   r   rT   	traceback	print_exc)re   current_useractor_id
actor_namerb   rV   s         r   rs   rs      s     
l%!%%fb1
<599JJzz..**	
 !$~"6!7{3::,O"	
 	
  <CF;; l6abefgbhai4jkkls5   C/B
B C/	C,B..C,:-C''C,,C/z/admin/{identifier}/status
identifierc                   K   	 |d   }|j                  dd      }t        ||j                         t        j                  | |j
                  |j                  |j                        }d|d|  d|j
                   ||dd	S # t        $ r}t        d
t        |            d }~wt        $ r2}t        j                          t        ddt        |             d }~ww xY ww)Nrg   r    rh   )ry   rj   rk   rl   TOrder z updated to rn   ro   rM   rN   rQ   z%Failed to update admin order status: )rr   r   r@   r   admin_update_order_statusr=   r>   r?   rS   r   r   rT   rt   ru   )ry   re   rv   rw   rx   rb   rV   s          r   r|   r|      s     f%!%%fb1
<533!zz..**	
 
|<

|D"	
 	
  <CF;; f6[\_`a\b[c4deefs5   C"A=B C"	CB!!C--CCC"z/admin/{identifier}/cancelrequestc                   K   	 |d   }|j                  dd      }t        ||j                  j                  d             t        j                  | ||      }d|d   |d   |d	   d
|  d||ddS # t
        $ r}t        dt        |            d }~wt        $ r2}t        j                          t        ddt        |             d }~ww xY ww)Nrg   r    rh   z
x-actor-id)ry   admin_id
admin_nameTorderrefundAmount
refundTxIdr{   z( was cancelled and refunded successfullyrn   )rL   rb   r   r   rp   rq   rM   rN   rQ   zFailed to cancel admin order: )rr   r   headersr   admin_cancel_orderrS   r   r   rT   rt   ru   )ry   r}   rv   rw   rx   rU   rV   s          r   r   r      s     _%!%%fb1
<)<)<\)JK..!!
 7O">2 .
|+ST"

 
	
  <CF;; _6TUXYZU[T\4]^^_s5   CA,A1 0C1	C:BC-C		CCz/admin/{identifier}c                    K   	 t        j                  |       }d|dS # t        $ r}t        dt	        |            d }~wt
        $ r2}t        j                          t        ddt	        |             d }~ww xY ww)NTra     rN   rQ   z$Failed to fetch admin order detail: )r   admin_get_order_detailrS   r   r   rT   rt   ru   )ry   rb   rV   s      r   r   r      s{     e00<.. <CF;; e6Z[^_`[aZb4cddes.   A> A>	A;=A;	-A66A;;A>z/{order_id}order_idc                   K   	 t        j                  | |      }d|dS # t        $ r}t        dt	        |            d }~wt
        $ r2}t        j                          t        ddt	        |             d }~ww xY ww)NTra   r   rN   rQ   zFailed to fetch order detail: )r   get_order_detailrS   r   r   rT   rt   ru   )r   r9   rb   rV   s       r   r   r      s}     _**8]C.. <CF;; _6TUXYZU[T\4]^^_s.   A? A?	A<>A<
-A77A<<A?c                    K   	 |j                  dd      }t        j                  | ||      }d|ddS # t        $ r}t	        dt        |            d }~wt        $ r t	        dd      w xY ww)	NT)exclude_unsetexclude_nonezOrder updated successfully)rL   rb   rp   rM   rN   rQ   zFailed to update order)dictr   update_orderrS   r   r   rT   )r   r9   re   update_datarb   rV   s         r   r   r   	  s     NhhThE&&xL3
 	

  <CF;; N4LMMNs$   A0/4 A0	A-AA--A0z/{order_id}/cancelc                    K   	 t        j                  | |       dd|  ddS # t        $ r}t        dt	        |            d }~wt
        $ r t        dd      w xY ww)	NTr{   z has been cancelled)rL   rp   rM   rN   rQ   zFailed to cancel order)r   cancel_orderrS   r   r   rT   )r   r9   rV   s      r   r   r     sp     	N-8z)<=
 	
  <CF;; N4LMMNs$   A# A	AAAAz/payc                 :  K   	 | j                   st        d      t        j                  | j                   | j                        }d|d   |d   d|d    d|d   ddS # t        $ r}t        d	t        |      
      d }~wt        $ r t        dd
      w xY ww)NzNo orders selected for paymentT	paidCounttotalAmountzSuccessfully paid z orders totaling $z.2f)rL   r   r   rp   rM   rN   rQ   zFailed to pay orders)r8   rS   r   
pay_ordersr9   r   r   rT   )re   rU   rV   s      r   r   r   '  s     L||=>>&&s||S5F5FG ,!-0+F;,?+@@RSYZgShilRmn	
 	
  <CF;; L4JKKLs)   BAA B	B(A>>BB)NAllNN      )Nr   NNr   
   )NNr      revenuedesc)+fastapir   r   r   r   pydanticr   r   typingr	   r
   rt   utils.auth_helperr   r   utils.turnstile_helperr   model.order_modelr   routerr   r   r%   r1   r5   r<   rB   rr   r   r.   rR   rZ   rc   putrs   r|   postr   r   r   r   r   r   r   r   r   <module>r      s1   > > % !  E 3 (	"Y "-i -y 3 3
y 
I 	  C "!" NNc]N SMN sm	N
 SMN N N N4 O73F~3V+W*XY!!" Tc]TSMT smT SM	T
 T T ZT. &g>QRb>c6d5ef"   YsmYSMY Y 	Y
 Y Y gY. !9I1J0KL ,-?@Al	*l Ml@ (@P8Q7RS ,-?@Aff	&f TfB )AQ9R8ST ,-?@A___ U_D !9L^9\1]0^_eS e `e M_S _ _ _ M1A)B(CDN NS N?Q N EN !9I1J0KL
N 
NS 
N M
N V7+;#<"=>L* L ?Lr   