
    =Ii                         d dl m Z  d dlmZmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZ d dlmZmZmZmZ d dlmZ d dlmZ  G d	 d
e      Z G d de      Z G d de      Zy)    )datetime)LiteralOptional)HTTPException)Field)INTEGERVARCHARDateTimeEnumDoubletext)MappedSessionmapped_columnrelationship)Base)CustomModelc                   D   e Zd ZU dZ ed      Zedz  ed<    ed      Ze	dz  ed<    ed      Z
e	dz  ed<    ed      Ze	dz  ed<    ed      Ze	dz  ed<    ed      Ze	dz  ed	<    ed
      Zed   ed<    ed      Zedz  ed<    ed      Zedz  ed<   y)UserBasetbl_userNdefaultuser_id
first_name	last_nameemail_idpasswordmobile_numberadmin)
superadminr   rolesimulation_countsimulation_log)__name__
__module____qualname____tablename__r   r   int__annotations__r   strr   r   r   r   r!   r   r"   r#        ;/var/www/html/retail-simulation-api/app/models/main/user.pyr   r   
   s    M-GS4Z-"40Jd
0!$/IsTz/ .HcDj. .HcDj.!&t!4MC$J4+0+AD''
(A$)$$7sTz7"'"5NS4Z5r,   r   c                   R    e Zd ZU  ed      Zedz  ed<    ed      Zedz  ed<   y)
UserFilterNr   r   r   )	r$   r%   r&   r   r   r(   r)   r   r*   r+   r,   r-   r/   r/      s(    -GS4Z- .HcDj.r,   r/   c            	          e Zd ZU dZ ededd      Zee   e	d<    ed e
d      dd      Zee   e	d<    ed	 e
d      dd      Zee   e	d	<    ed
 e
d      dd      Zee   e	d
<    ed e
d      dd      Zee   e	d<    ed eddd      dd      Zee   e	d<    ed e
d      dd      Zee   e	d<    e e
d      dd      Zeee      e	d<    eed      Zeee      e	d<    eded ed            Zee   e	d<    eded ed            Zee   e	d<    edd      Zededed d fd!       Z ededed d fd"       Z!edededed d fd#       Z"ed$e#e$z  ded edz  fd%       Z%y)&TblUserr   r   T)primary_keyautoincrementr      N)nullableserver_defaultr   r   r   r!   r    r   
user_roles)nameFr   
      otp)r5   
otp_expiryr"   0r#   TblUserSimulationuser)back_populatesdatadbreturnc                 x    |j                         } | di |}|j                  |       |j                          |S )Nr+   )
model_dumpaddflush)clsrA   rB   	data_dictnew_datas        r-   createzTblUser.create,   s5    OO%	##
x

r,   c                     |j                  |       j                  | j                  |k(        j                         }|st	        dd      |S Ni  zUser not found)status_codedetail)queryfilterr   firstr   )rH   r   rB   get_datas       r-   
get_usr_idzTblUser.get_usr_id4   sB    88C=''w(>?EEGC8HIIr,   c                 F   |j                  |       j                  | j                  |k(        j                         }|st	        dd      |j                         }|j                         D ]  \  }}t        |||        |j                  |       |j                          |S rM   )
rP   rQ   r   rR   r   rE   itemssetattrrF   rG   )rH   r   rA   rB   rS   rI   keyvalues           r-   updatezTblUser.update;   s    88C=''w(>?EEGC8HIIOO%	#//+JCHc5) ,
x

r,   requestc                     t        |t              r|}n|j                  d      } |j                  |       j                  di |j                         }|sy t        di |j                  S )NT)exclude_noner+   )
isinstancedictrE   rP   	filter_byrR   r   __dict__)rH   r[   rB   filter_dataget_user_datas        r-   get_by_user_filterzTblUser.get_by_user_filterG   sd    gt$!K!,,$,?K///>+>DDF1-0011r,   )&r$   r%   r&   r'   r   r   r   r   r(   r)   r	   r   r*   r   r   r   r   r!   r   r;   r   r
   r<   r   r   r"   r#   r   user_sim_userclassmethodr   r   rK   rT   rZ   r_   r/   rd   r+   r,   r-   r1   r1      s*   M(G]abGVC[b+L'#,QUfjkJsk*;tdhiIvc{i)*gclTbfgHfSkg)*gclTbfgHfSkg%fd<|.\gl  ~E  FD&+  F"/W[lp"qMF3Kq!.wqzDY]!^C	^-:8d-SJx)*S%23EwY]nrsvnw%xvc{x#01A7UYjnorjs#tNVC[t !4VLM (  I    ' i   	S 	 	g 	) 	 	 	2
): 	2 	2HW[O 	2 	2r,   r1   N)r   typingr   r   fastapir   pydanticr   
sqlalchemyr   r	   r
   r   r   r   sqlalchemy.ormr   r   r   r   app.models.mainr   app.utils.schemas_utilsr   r   r/   r1   r+   r,   r-   <module>rn      sG     $ !  F F G G   /6{ 6/ /62d 62r,   