
    fA,                        d dl 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 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j3                  d      dededefd       Zej7                  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   )#regenerate_interventions_for_client)MONGODB_DATABASEmongodb_connectcheck_accessget_user_sub	get_roles)ClientUpdateClientz/clientsclients  descriptionz	Not found)prefixtags	responses requestclientc                   K   	 | j                   d   j                  dd      }t        |dg       t        |      }t	        t        j                               }|j                         }||d<   d|d<   ||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 client.authorizationBearer r   seesubTactivecreated_by_subr   successCreateClientu   Client créé avec succès.)statusendpointmessager      contentstatus_codeerrorz*Error lors de l'enregistrement du client: r!   r"   r#     N)headersreplacer
   r   struuiduuid4
model_dumpmongodb_clientr   
insert_oner   	Exception)r   r   
auth_tokenmy_user_subr   client_dictresponseObjectes           QC:\Users\ChattiNader\Documents\EpsilonGroupe\api-vastappli\app\routers\clients.pycreate_clientr:      s     E___5==iL
Z%)":.$**,'') E $H(3$%'(3>>{K&4	
 NDD E&CCF8L

 NDDEs5   CB%B* )C*	C3CCCCCc                 P  K   	 | j                   d   j                  dd      }t        |dg       t        |      }t	        |      dddiidd	d
dddidddddddddddddig}t        fddD              s3t        t           d	   j                  d|iddd      }|d   |d   d   d<   t        t        t           d   j                  |            }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 clients.r   r   r   *$matchr   T$lookupusersuser_subr   techfrom
localFieldforeignFieldas$projectr      _idr   nameclient_typesectoraddressgpsztech.subztech.firstnameztech.lastnamez
tech.rolesc              3   &   K   | ]  }|v  
 y wN .0rolemy_roless     r9   	<genexpr>z"get_client_list.<locals>.<genexpr>W        @48#@   rootr   rJ   rM   rM   r   r   GetClientListu)   Liste de clients récupéré avec succèsr!   r"   r#   r&   r$   r%   r(   -   Error lors de la récupération des clients: r)   r*   Nr+   r,   r
   r   r   anyr1   r   find_onelist	aggregater   r3   r-   	r   r4   my_subpipeline	my_sectorr   r7   r8   rV   s	           @r9   get_client_listri   2   s    8E___5==iL
Z#'j)Z( $'(#",$) 	 #$  !&'%&"#
8 @@@&'78AJJQ'I /8.AHQK!(+~&67	BLL   'BG}	
 NDD E'Fs1vhO

 NDDE5   D&C+C1 0D&1	D#:DD#D&D##D&z/{sub}r   c                 x  K   	 | j                   d   j                  dd      }t        |dg       t        t           d   j                  d|iddi      }|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 client by his sub.r   r   r   r<   r   r   rJ   r   r(   	GetClientClient '' n'existe pasr)   r   r%   r   u   ' récupéré avec succèsr^   r$   u+   Error lors de la récupération du client: r*   N)	r+   r,   r
   r1   r   rb   r   r3   r-   )r   r   r4   r   r7   r8   s         r9   
get_clientro   p   s     E___5==iL
Z#' 01)<EECLAJ

 !'%cU.9N
  CHH  #!#&@A	
 NDD E#DSVHM

 NDDEsA   B:A(B ,B:-B B:	B7B2,B7-B:2B77B:c                 ^  K   	 | j                   d   j                  dd      }t        |dg       t        t           d   j                  d|iddi      }|j                         }|j                         D ci c]
  \  }}||| }}}|sd
dd| dd}t        |d      S t        t           d   j                  d|id|i       t        |       d	{    ddd| dd}t        |d      S c c}}w 7 !# t        $ r)}	d
ddt        |	       d}t        |d      cY d	}	~	S d	}	~	ww xY ww)zupdate a client by his sub.r   r   r   r   r   r   rJ   r   Nr(   r   rm   rn   r)   r   r%   $setr   u   ' mis à jour avec succèsr$   u)   Error lors de la mise à jour du client: r*   )r+   r,   r
   r1   r   rb   r0   itemsr   
update_oner   r3   r-   )
r   r   r   r4   client_cursorr6   keyvaluer7   r8   s
             r9   update_clientrw      s}    'E___5==iL
Z%)&'78CLLCLAJ

 '') + 1 1 3J 'cu7H Ez J J !*%cU.9N
  CHH'(3>>CL[!	

 2#666  &!#&@A

 NDD/J  	7  E&B3q6(K

 NDDEs_   D-A3C8 7C0C8 !D-"2C8 C6C8 /D-0C8 8	D*D%D* D-%D**D-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 client by his sub.r   r   r   r   r   Tr   r   rq   r   Fr(   DisableClient4   Vous n'avez pas le droit d'accès à cette ressourcer)     r%   r   rm   u   ' désactivé avec succèsr$   u+   Error lors de la désactivation du client: r*   N	r+   r,   r
   r1   r   find_one_and_updater   r3   r-   r   r   r4   resultr7   r8   s         r9   disable_clientr      s     E___5==iL
Z%) 01)<PP4(6He3D*E
 !+QN
  CHH  '!#&@A

 NDD E'DSVHM

 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 client by his sub.r   r   r   r   r   Fry   rq   r   Tr(   ActivateClientr{   r)   r|   r%   r   rm   u   ' activé avec succèsr$   z&Error lors de l'activation du client: r*   Nr}   r   s         r9   activate_clientr      s     E___5==iL
Z%) 01)<PP5)FXt4D+E
 !,QN
  CHH  (!#&<=

 NDD E(?AxH

 NDDEr   z/archive/listc                 P  K   	 | j                   d   j                  dd      }t        |dg       t        |      }t	        |      dddiidd	d
dddidddddddddddddig}t        fddD              s3t        t           d	   j                  d|iddd      }|d   |d   d   d<   t        t        t           d   j                  |            }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 clients.r   r   r   r<   r=   r   Fr>   r?   r@   r   rA   rB   rG   r   rH   rI   c              3   &   K   | ]  }|v  
 y wrQ   rR   rS   s     r9   rW   z'get_archived_clients.<locals>.<genexpr>'  rX   rY   rZ   r\   rM   r   r   GetArchivedClientsListu3   Liste de clients archivés récupéré avec succèsr^   r$   r%   r(   GetArchivedClientListr_   r)   r*   Nr`   re   s	           @r9   get_archived_clientsr     s    8E___5==iL
Z#'j)Z( %()#",$) 	 #$  !&'%&"#
8 @@@&'78AJJQ'I /8.AHQK!(+~&67	BLL   0LG}	
 NDD E/Fs1vhO

 NDDErj   ) r.   fastapir   r   fastapi.responsesr   	schedulerr   utilsr   r	   r
   r   r   models.clientsr   r   r1   routerpostr:   getri   r-   ro   patchrw   deleter   putr   r   rR       r9   <module>r      s    & * ; \ \ 1 "	
]K01
 RE E& E E< B:E7 :E :Ez HEg EC E ED h)E )Es )EL )E )EX xE' E E E@ HE7 E E E@ O:E :E :Er   