
    Żfn*                        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	 ddl
mZmZmZmZmZmZ  e       Z eddgd	d
dii      Zej'                  d      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fd       Zej5                  d      dedede	fd       Zej9                  d      dedefd       Zy)    N)	APIRouterRequest)JSONResponse   )AnomalyUpdateAnomaly)MONGODB_DATABASEcheck_access
get_sectorget_user_submongodb_connectsend_push_notificationz
/anomalies	anomalies  descriptionz	Not found)prefixtags	responses requestc                 n  K   	 | j                   d   j                  dd      }t        |dg       t        t        t
           d   j                  ddidd	d	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 anomalies authorizationBearer r   *r   statusopenr      _idsubtyper   urgencyLevelneedHelpr   solutionsuccessGetAnomaliesr   endpointcontent   r)   status_codeerroru0   Erreur lors de la récupératioin des anomalies r   r(   message  N
headersreplacer
   listmongodb_clientr	   findr   	Exceptionstrr   
auth_tokenr   responseObjectes        SC:\Users\ChattiNader\Documents\EpsilonGroupe\api-vastappli\app\routers\anomalies.pyget_anomaliesr>      s     E___5==iL
Z#'(89+FKKva1a]^jkyz{
 	  &I

 NDD E&I#a&R

 NDDE5   B5A;B  ?B5 	B2	B-'B2(B5-B22B5z/closedc                 n  K   	 | j                   d   j                  dd      }t        |dg       t        t        t
           d   j                  ddidd	d	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 closed anomalies r   r   r   r   r   r   closedr   r   r   r%   GetClosedAnomaliesr'   r*   r+   r-   u9   Erreur lors de la récupératioin des anomalies fermées r.   r0   Nr1   r9   s        r=   get_closed_anomaliesrC   *   s     E___5==iL
Z#'(89+FKKx a1a]^jkyz{
 	  ,I

 NDD E,RSVWXSYRZ[

 NDDEr?   z/{sub}r    c                 ~  K   	 | j                   d   j                  dd      }t        |dg       dd|iiddd	dd
diddiddddddiddiddddddiddiddddddiddidi ddddddddd dd!dd"dd#dd$dd%dd&dd'dd(dd
dddd)dddd*ddddd+ig
}t        t        t
           d,   j                  |            }|sd-d.d/| d0d1}t        |d23      S t        |      dkD  r|d   }d4d.|d5}t        |d63      S # t        $ r)}d-d7d8t        |       d1}t        |d93      cY d:}~S d:}~ww xY ww);z Get anomaly by sub r   r   r   r   z$matchr    z$lookupinterventionsintervention_subintervention)from
localFieldforeignFieldasz$unwindz$interventionpoolszintervention.pool_subpoolz$poolclientszpool.client_subclientz$clientuserszintervention.user_subtechz$techz$projectr   r   r   r!   r   r"   photor#   r   r$   
created_by
created_at	closed_by	closed_at)r    datehour)r    name)r    	firstnamelastnamer   r-   
GetAnomaly
Anomalie 'z' introuvabler.   r   r+   r%   r'   r*   zGet anomalyu0   Erreur lors de la récupératioin de l'anomalie r0   N)r2   r3   r
   r4   r5   r	   	aggregater   lenr7   r8   )r   r    r:   pipelineanomalyr;   r<   s          r=   get_anomalyrb   D   s~    ZE___5==iL
Z#' s|$'0 %$	  (5 %	   !/ %	  	"5 %	    qq  q	
   A ! A a a Q Q !& '. !" !/ =;
z ~&67DNNxXY!('uM:N
  CHHw<!ajG  $

 NDD E%I#a&R

 NDDEsA   D=CD !D="%D D=	D:D5/D:0D=5D::D=ra   c                 v  K   	 | j                   d   j                  dd      }t        |dg       t        |      }t        t
           d   j                  d|iddddd	      }t        t        j                               }|j                         }||d<   d
|d<   ||d<   t        t        j                  j                               |d<   t        t
           d   j                  |       d|v r<t        t        t
           d   j                  ddid|d   dgd|idddd            }n1t        t        t
           d   j                  dd|idddd            }t!        |d|d    d|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 Create a new anomaly r   r   r   r   rP   r    r   r   )r   rZ   r[   sectorr   r   rS   rT   r   rd   rolesseecs)re   rd   z$ne)z$orr    )r   r    )re   r    AnomalierZ    r[   u)    vient de déclarer une nouvelle anomalier%   CreateAnomaly)r   r(   r       r+   r-   u*   Erreur lors de la création de l'anomalie r.   r0   N)r2   r3   r
   r   r5   r	   find_oner8   uuiduuid4
model_dumpdatetimenow
insert_oner4   r6   r   r   r7   )
r   ra   r:   my_user_submy_user_cursorr    anomaly_dictrP   r;   r<   s
             r=   create_anomalyrv      s    *E___5==iL
Z#'":.'(89'BKKK A1B

 $**,))+!U!'X%0\"%():):)>)>)@%A\"'(5@@N~%(89'BGG!5)T^T\E]+^_inp{h|}!$ E
 (89'BGG(<=!$ E 	uj^K5P4QQRSablSmRn  oX  3Y  	Z  '

 NDD E'CCF8L

 NDDEs5   F9E?F F9	F6F1+F6,F91F66F9c                 8  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 |j                         }d|v r|d   dk(  rd|d<   |j                         D ci c]
  \  }}||| }}}t        t           d   j                  d|id|i       dd
d|d}y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 an anomaly r   r   r   r   r   r    r   r   r-   r   r]   ' n'existe pasr.   r   r+   rR   N$setr%   u"   Anomalie mise à jour avec succès)r   r(   r/   r)   u-   Erreur lors de la mise à jour de l'anomalie r0   )r2   r3   r
   r5   r	   rl   r   ro   items
update_oner7   r8   )
r   r    ra   r:   anomaly_cursorr;   ru   keyvaluer<   s
             r=   update_anomalyr      sr    )E___5==iL
Z#''(89+FOOCLAJ

 !+'uN;N
  CHH))+l"|G'<'D$&L! +002I (se6G U
 I I 	'(5@@CL\"	
  ';#	
I  E'Fs1vhO

 NDDEsS   DA(C% ,D-4C% !C0.C% DC% %	D.DDDDDz/close/{sub}c                    K   	 | j                   d   j                  dd      }t        |dg       t        |      }t        t
           d   j                  d|iddi      }|sd	d
d| dd}t        |d      S t        t
           d   j                  d|iddd|t        t        j                  j                               di       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 Close an anomaly r   r   r   r   r   r    r   r   r-   CloseAnomalyr]   rx   r.   r   r+   ry   rA   u   Anomalie fermée)r   r$   rU   rV   r%   u   Anomalie fermée avec succèsr*   z*Erreur lors de la fermeture de l'anomalie r0   N)r2   r3   r
   r   r5   r	   rl   r   r{   r8   rp   rq   r7   )r   r    r:   rs   r|   r;   r<   s          r=   close_anomalyr      sV    #E___5==iL
Z#'":.'(89+FOOCLAJ

 !*'uN;N
  CHH'(5@@CL6HWbqtu}  vG  vG  vK  vK  vM  rN  O  P	
  &6

 NDD E&CCF8L

 NDDEsB   DA3C 7D8A C D	D"D DDDD)rp   rm   fastapir   r   fastapi.responsesr   models.anomalyr   r   utilsr	   r
   r   r   r   r   r5   routergetr>   rC   r8   rb   postrv   patchr   putr        r=   <module>r      sX     & * 3 u u "	
]K01
 BE E E2 IE E E2 H\Ew \ES \E \E| R,E' ,EG ,E ,E\ h+E' +E +Em +E +EZ N%E %Es %E %Er   