
    i`                     (   d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZ  ej                  d      Zej                   j#                  dd	      Z ej&                  ed
        G d de      Z G d de      Z G d d      Zy)    N)datetime)	BaseModel)Optional)ObjectId)tickets_collectionusers_collectionzAsia/Ho_Chi_Minhuploads
upload_imgT)exist_okc                   r    e Zd ZU eed<   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)TicketCreatePayloadorderIdreasonNimageUrl	imageNameid_khach_hangten_khach_hang)
__name__
__module____qualname__str__annotations__r   r   r   r   r        3/var/www/pod-logistic/pod-api/model/ticket_model.pyr   r      sD    LK"Hhsm"#Ix}##'M8C='$(NHSM(r   r   c                   J    e Zd ZU eed<   eed<   eed<   eed<   dZee   ed<   y)TicketUpdateRequestticketIdtypestatusprocessedByNrejectReason)r   r   r   r   r   r"   r   r   r   r   r   r      s%    M
IK"&L(3-&r   r   c                       e Zd Zeddee   defd       Zedefd       Z	eddeded	ed
edef
d       Z
edefd       Zy)TicketModelNvn_nowreturnc           	         | xs t        j                  t              } | j                  d      | j                  dz  dz   }d| d}t        j                  dt        j                  |       d      }t        j                  dd	dt        j                  |       d
iiddi      }d}|D ]X  }t        |j                  d      xs d      }|j                  |      }|s5t        |t        |j                  d                  }Z |dz   }		 | t        |	      j!                  d       }
t        j"                  d|
iddi      }|s|
S |	dz  }	B)Nz%Y%m%d%H%M%Si  03dzTK--^z(\d{4})$idz$regexz\d{4}$   r       _id)r   nowVN_TZstrftimemicrosecondrecompileescaper   findr   getmatchmaxintgroupzfillfind_one)r%   timestamp_partbase_prefixregexlatest_docsmax_seqdoc	ticket_idr9   next_seq	generatedexisteds               r   _generate_ticket_idzTicketModel._generate_ticket_id$   sX   .8<<.  8f>P>PTX>XY\=]^N+1-

a		+ 67zBC(--H299[#9":(CDE1I

  	<CCGGDM/R0IKK	*Egs5;;q>':;		< Q;&-H(;(;A(>'?@I(1142CeQZPG  MH r   payloadc           	         t        j                  t              }t        j	                  |      }d }| j
                  r| j                  r	 d| j
                  v r | j
                  j                  dd      \  }}n| j
                  }| j                  j                  d      d   }| d| }t        j                  j                  t        |      }t        |d      5 }	|	j                  t        j                  |             d d d        |}|| j$                  | j&                  || j(                  | j*                  d|j-                         d}t/        j0                  |       y	# 1 sw Y   bxY w# t         $ r}
t#        d|
        Y d }
~
d }
~
ww xY w)
N,r,   .wbu   Lỗi khi lưu ảnh: pending)r+   r   r   r   r   r   r    	createdAt)TzTicket created successfully)r   r0   r1   r$   rI   r   r   splitospathjoin
UPLOAD_DIRopenwritebase64	b64decode	Exceptionprintr   r   r   r   	isoformatr   
insert_one)rJ   r0   rE   saved_image_name_encodedfile_extunique_filenamefilepathfe
new_tickets               r   create_ticketzTicketModel.create_ticketC   s`   ll5!33C8	 1 14'***!(!1!1!7!7Q!?JAw%..G",,2237;%.Kq
";77<<
OD(D) 7QGGF,,W567#2 
 nn)$22%44	

 	%%j12%7 7  4.qc2334s1   
BE+ %E>
E+ E($E+ +	F4FFbase_urlr    dateFromdateTor   c                    i }|r||d<   |r&|j                         dk7  r|j                         |d<   |s|ri }|r| d|d<   |r| d|d<   |r||d<   t        j                  |      j                  dd	      }t	        |      }g }	|D ]  }
d
|
v r|
d
= |
j                  d      }d|
d<   |r8	 t        j                  d
t        |      i      }|r|j                  dd      |
d<   |
j                  d      }|r|  d| nd |
d<   |
j                  d      r,t        j                  |
d         }|j                  d      |
d<   |	j                  |
        |	S # t        $ r Y |w xY w)Nr   allr    z	T00:00:00z$gtez	T23:59:59z$lterQ   rN   r/   zN/Aemailr   z/uploads/upload_img/r   z%d/%m/%Y %H:%M:%S)lowerr   r7   sortlistr8   r   r>   r   r[   r   fromisoformatr2   append)ri   r    rj   rk   r   query
date_querycursorresultsformatted_datarD   user_id_str	user_infoimg_namedts                  r   get_ticketszTicketModel.get_ticketsh   s   %2E/"flln-$llnE(OvJ(0z%;
6"(.xy%9
6"%/k"#((/44["Ev, 	'C|J''/2K CL 0 9 95(;BW:X YI '0}}We'DG ww{+HMU
*>xjI[_C
Oww{#++C,<=#%;;/B#CK !!#&+	'.  ! s   *7E	EEreqc                 R   t        j                  d| j                  i      }|sy| j                  j	                         | j
                  d}| j                  j	                         dk(  r| j                  r| j                  |d<   t        j                  d| j                  id|i       y)Nr+   )Fu-   Không tìm thấy phiếu khiếu nại nàyi  )r    r!   rejectedr"   z$set)Tu:   Đã cập nhật trạng thái khiếu nại thành công   )r   r>   r   r    ro   r!   r"   
update_one)r~   ticketupdate_fieldss      r   update_ticket_statusz TicketModel.update_ticket_status   s    #,,dCLL-ABN jj&&(??

 ::+0@0@,/,<,<M.)%%tS\\&:V]<STVr   )N)NNNN)r   r   r   staticmethodr   r   r   rI   r   rh   r}   r   r   r   r   r   r$   r$   #   s    HX$6 #  < "32 "3 "3H *c *3 * *UX *ps * *X W"5 W Wr   r$   )r4   rS   rY   r   pytzpydanticr   typingr   bsonr   MongoDBConnectionr   r   timezoner1   rT   rU   rV   makedirsr   r   r$   r   r   r   <module>r      s{    	 	       B()WW\\)\2
 J &)) )') 'AW AWr   