
    +f0                     F   d dl Z d dlZd dlmZmZ d dlmZ ddlmZm	Z	m
Z
mZmZ ddlmZmZ  e	       Z eddgd	d
dii      Zej%                  d      dedefd       Zej)                  d      defd       Zej)                  d      dedefd       Zej1                  d      dededefd       Zej5                  d      dedefd       Zej9                  d      dedefd       Zej)                  d      dedefd       Zej)                  d      defd       Zy)    N)	APIRouterRequest)JSONResponse   )MONGODB_DATABASEmongodb_connectcheck_accessget_user_sub	get_roles)
UpdateUserUserz/usersusers  descriptionz	Not found)prefixtags	responses requestuserc                 N  K   	 | j                   d   j                  dd      }t        |dg       t        |      }t	        |      }t
        t           d   j                  d|j                  i      }|r!ddd	|j                   d
d}t        |d      S t        t        j                               }|j                         }||d<   d|d<   d|d<   ||d<   t        j                         }	t        j                   |j"                  j%                  d      |	      }
|
j'                  d      |d<   |j)                  d       t
        t           d   j+                  |       ddd|d}t        |d      S # t,        $ r)}dddt        |       d}t        |d      cY d}~S d}~ww xY ww)zCreate a new user.authorizationBearer r   seer   emailfailed
CreateUseru<   Erreur, un utilisateur est déjà enregistré avec l'email ''statusendpointmessagei  contentstatus_codesubTactiveverifiedcreated_by_subutf8hashed_passwordpasswordsuccessu    Utilisateur créé avec succès.)r    r!   r"   r&      errorz1Error lors de l'enregistrement de l'utilisateur:   N)headersreplacer	   r   r
   mongodb_clientr   find_oner   r   struuiduuid4
model_dumpbcryptgensalthashpwr,   encodedecodepop
insert_one	Exception)r   r   
auth_tokenrolesmy_user_subuser_cursorresponseObjectr&   	user_dictsaltr+   es               OC:\Users\ChattiNader\Documents\EpsilonGroupe\api-vastappli\app\routers\users.pycreate_userrJ      s    +E___5==iL
Z%)*%":.$%56w?HHdjj!#"(YZ^ZdZdYeefgN
  CHH$**,OO%		%"	( $	*&1	"#~~ --(<(<V(DdK'6'='=f'E	#$j!'(1<<YG$9	
 NDD E$J3q6(S

 NDDEsB   F%BE0 F%CE0 /F%0	F"9FF"F%F""F%c                 ^  K   	 | j                   d   j                  dd      }t        |dg       t        |      }t	        |      t        fddD              sUt        t           d   j                  d|id	d
d      }t        t           d   j                  ddid|i|d   ddd	d	d      }n+t        t           d   j                  ddid|iddd	d	d      }dddt        |      d}t        |d      S # t        $ r)}dddt        |       d}t        |d      cY d}~S d}~ww xY ww)zGet all users.r   r   r   *c              3   &   K   | ]  }|v  
 y wN .0rolemy_roless     rI   	<genexpr>z get_user_list.<locals>.<genexpr>L        @48#@   rootr   r   r&   r      _idsector$nerX   r\   Tloginr&   r\   r'   r[   r+   r_   r&   r'   r-   GetUserListu-   Liste d'utilisateurs récupéré avec succèsr    r!   r"   r$   r.   r#   r/   2   Error lors de la récupération des utilisateurs: r   r0   Nr1   r2   r	   r
   r   anyr3   r   r4   findlistr   r@   r5   r   rA   my_sub	my_sectorr   rE   rH   rS   s          @rI   get_user_listrl   C   s[    "E___5==iL
Z#'j)Z(@@@&'78AJJQ'I ##34W=BB &/5&/YW_M`lpqa0E
 ##34W=BB &/5&/TRa0E  %FE{	
 NDD E%KCPQF8T

 NDDEs5   D-C2C8 7D-8	D*D%D* D-%D**D-z/{sub}r&   c                 z  K   	 | j                   d   j                  dd      }t        |dg       t        t           d   j                  d|iddd      }|sd	d
d| dd}t        |d      S dd
d| d|d}t        |d      S # t        $ r)}d	d
dt        |       d}t        |d      cY d}~S d}~ww xY ww)zGet a user by his sub.r   r   r   rL   r   r&   r   r`   r/   GetUserUtilisateur '' n'existe pasr   r   r#   r-      ' récupéré avec succèsrc   r.   2   Error lors de la récupération de l'utilisateur: r0   N)	r1   r2   r	   r3   r   r4   r   r@   r5   )r   r&   rA   r   rE   rH   s         rI   get_userrs   k   s     E___5==iL
Z#'./8AACL!,

 !%*3%~>N
  CHH  !&se+EF	
 NDD E!KCPQF8T

 NDDEsA   B;A)B -B;.B B;	B8B3-B8.B;3B88B;c                 .  K   	 | j                   d   j                  dd      }t        |dg       t        t           d   j                  d|iddi      }|j                         }d	|v r|d	   d
k(  rd|d	<   |j                         D ci c]
  \  }}||| }}}t        j                         }d|v rTt        j                  |j                  j                  d      |      }	|	j                  d      |d<   |j                  d       |sddd| dd}
t        |
d      S t        t           d   j!                  d|id|i       ddd| dd}
t        |
d      S c c}}w # t"        $ r)}dddt%        |       d}
t        |
d      cY d
}~S d
}~ww xY ww)zupdate a user by his sub.r   r   r   rL   r   r&   r[   r   photoNr,   r*   r+   r/   r   ro   rp   r   r   r#   $setr-   u   ' mis à jour avec succèsr.   rr   r0   )r1   r2   r	   r3   r   r4   r8   itemsr9   r:   r;   r,   r<   r=   r>   r   
update_oner@   r5   )r   r&   r   rA   rD   rF   keyvaluerG   r+   rE   rH   s               rI   update_userr{      s    .E___5==iL
Z#'$%56w?HHCLAJ

 OO%	iIg$6$$>!#Ig (oo/F %C53D %Z F	 F ~~"$mmDMM,@,@,H$OO+:+A+A&+II'(MM*%!(*3%~>N
  CHH'(1<<CLY	
  $&se+EF

 NDD7F8  E$KCPQF8T

 NDDEsT   FBE  EBE  F:E  FE   	F)FFFFFc                 t  K   	 | j                   d   j                  dd      }t        |dg       t        t           d   j                  |dddd	d
ii      }|sdddd}t        |d      S ddd| dd}t        |d      S # t        $ r)}dddt        |       d}t        |d      cY d}~S d}~ww xY ww)zDisable a user by his sub.r   r   r   r   r   Tr&   r'   rv   r'   Fr/   DisableUser4   Vous n'avez pas le droit d'accès à cette ressourcer     r#   r-   ro   u   ' désactivé avec succèsr.   u2   Error lors de la désactivation de l'utilisateur: r0   N	r1   r2   r	   r3   r   find_one_and_updater   r@   r5   r   r&   rA   resultrE   rH   s         rI   disable_userr      s     E___5==iL
Z%) 01':NN4(6He3D*E
 !)QN
  CHH  %&se+EF

 NDD E%KCPQF8T

 NDDEA   B8A'B +B8,B B8	B5B0*B5+B80B55B8c                 t  K   	 | j                   d   j                  dd      }t        |dg       t        t           d   j                  |dddd	d
ii      }|sdddd}t        |d      S ddd| dd}t        |d      S # t        $ r)}dddt        |       d}t        |d      cY d}~S d}~ww xY ww)zActivate a user by his sub.r   r   r   r   r   Fr}   rv   r'   Tr/   ActivateUserr   r   r   r#   r-   ro   u   ' activé avec succèsr.   z-Error lors de l'activation de l'utilisateur: r0   Nr   r   s         rI   activate_userr      s     E___5==iL
Z%) 01':NN5)FXt4D+E
 !*QN
  CHH  &&se+AB

 NDD E&Fs1vhO

 NDDEr   z/role/{role}rR   c                   K   | j                   d   j                  dd      }t        |dg       |j                  d      }	 t        t
           d   j                  d|idd	d
di      }ddd| dt        |      d}t        |d      S # t        $ r)}dddt        |       d}t        |d      cY d}~S d}~ww xY ww)z!Get all users filtered by a role.r   r   r   rL   -r   z$inT)rB   r'   r[   r   r-   GetUserListByRolez$Liste d'utilisateurs ayant le role 'rq   rc   r.   r#   r/   rd   r   r0   N)r1   r2   r	   splitr3   r   rg   rh   r   r@   r5   )r   rR   rA   rB   r   rE   rH   s          rI   get_users_by_roler     s      199)RHJcU#JJsOEE/09>>en5qzC  +=dVC]^E{	
 NDD E+KCPQF8T

 NDDEs6   >B>AB	 B>		B;B60B;1B>6B;;B>z/archive/listc                 ^  K   | j                   d   j                  dd      }t        |dg       t        |      }t	        |      	 t        fddD              sUt        t           d   j                  d|id	d
d      }t        t           d   j                  ddid|i|d   ddd	d	d      }n+t        t           d   j                  ddid|iddd	d	d      }dddt        |      d}t        |d      S # t        $ r)}dddt        |       d}t        |d      cY d}~S d}~ww xY ww)zGet all archived users.r   r   r   rL   c              3   &   K   | ]  }|v  
 y wrN   rO   rP   s     rI   rT   z%get_archived_users.<locals>.<genexpr>%  rU   rV   rW   r   r&   r   rY   rZ   r]   rX   r\   Fr^   r`   ra   r-   GetArchivedUserListu7   Liste d'utilisateurs archivés récupéré avec succèsrc   r.   r#   r/   rd   r   r0   Nre   ri   s          @rI   get_archived_usersr     s]     199)RHJcU#*%F$HE@@@&'78AJJQ'I ##34W=BB &/5&/YW_M`lqra0E
 ##34W=BB &/5&/USa0E  -PE{	
 NDD E-KCPQF8T

 NDDEs7   AD-B0C8 7D-8	D*D%D* D-%D**D-) r6   r9   fastapir   r   fastapi.responsesr   utilsr   r   r	   r
   r   models.usersr   r   r3   routerpostrJ   getrl   r5   rs   patchr{   deleter   putr   r   r   rO       rI   <module>r      s     & * \ \ + "	
]K01
 R-Ew -Ed -E -E` B$E $E $EN HEG E# E ED h0Ew 0ES 0E
 0E 0Ef xE Ec E E@ HE Es E E@ NEW EC E E0 O#Eg #E #Er   