
    Żfo              
          d dl Z d dlZd dlmZmZmZ d dlmZ ddlm	Z	m
Z
mZ ddlmZmZmZmZmZmZ d dl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j3                  d      dedefd       Zej3                  d      dedefd       Zej3                  d       eddd       ed d       fdededed efd!       Zej3                  d"      ded#ed$efd%       ZejA                  d&      dedefd'       Z!ejE                  d      deded(efd)       Z#ejI                  d      dedefd*       Z%ejA                  d+      deded,e
fd-       Z&y).    N)	APIRouterRequestQuery)JSONResponse   )InterventionRescheduleInterventionUpdateIntervention)MONGODB_DATABASE	get_roles
get_sectorget_user_submongodb_connectcheck_access)	ASCENDINGz/interventionsinterventions  descriptionz	Not found)prefixtags	responses requestinterventionc                   K   	 | j                   d   j                  dd      }t        |dg       t        t           d   j                  d|j                  iddd	      }t        t           d
   j                  d|d   idddd      }i }t        t        j                               |d<   |j                  |d<   |j                  |d<   |j                  |d<   |d   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 intervention.authorizationBearer r   seepoolssubr      )_id
client_subclientsr#   )r"   maintenance_infouser_subdatehourpool_subr%   durationr&   r   successCreateInterventionu!   Intervention créée avec succèsstatusendpointmessage   contentstatus_codeerroru.   Error lors de la création de l'intervention:   N)headersreplacer   mongodb_clientr   find_oner)   struuiduuid4r'   r(   
insert_oner   	Exception)r   r   
auth_tokenpool_cursorclient_cursorintervention_dictresponseObjectes           WC:\Users\ChattiNader\Documents\EpsilonGroupe\api-vastappli\app\routers\interventions.pycreate_interventionrG      s    &E___5==iL
Z%)$%56w?HHL))*Q'

 ''78CLLK-.1!<

 #&tzz|#4% $0$5$5&!$0$5$5&!(4(=(=*%(56H(I*(U*%(5j(A*%'(9DD	

  ,:

 NDD E,GAxP

 NDDEs5   EDD E	E%E	EE	EE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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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
           d0   j                  |            }d1d2d3|d   d4}t        |d56      S # t        $ r)}d7d8d9t        |       d:}t        |d;6      cY d<}~S d<}~ww xY ww)=zGet intervention.r   r   r   *$matchr    $lookupr   r)   poolfrom
localFieldforeignFieldas$unwind$poolr$   pool.client_subclient$clientusersclient.user_subtech$tech	anomaliesintervention_sub$projectr"   r   r!   r'   r(   r*   state
started_at	closed_atstartingPhotoendingPhotostep1step2step3chlorephstabilisantcompteur)r    r   gpsphoto)
r    nameclient_typeaddressrj   accessaccess_notecontactssyndicr%   )r    	firstnamelastname)r    typer   r.   urgencyLevelsolution)reportnoterL   rU   rY   r[   r   r+   GetInterventionListu&   Interventions récupéré avec succèsr.   r/   r0   r3   r1   r2   r5   GetUserListu4   Error lors de la récupération de l'interventions: r-   r6   N)
r7   r8   r   listr9   r   	aggregater   r?   r;   )r   r    r@   pipeliner   rD   rE   s          rF   get_interventionr   <   s    pE___5==iL
Z#' s|$#",$) 	  %"3$)"	 	"#"3$) 	  '"'$6%	  31313 A3 A	3
 3 Q3 !!3  3 $Q3 "13 Q3 Q3 Q3 a3 !3  "1!3" #3$   '( !"	  ! !'(#$ "#'($%"#,-  !%&$%  ! !'("#()$%"W35K[
z ^,<=oNXXYabc  -?$Q'	
 NDD E%McRSfXV

 NDDEs5   D.C4C9 8D.9	D+D& D+!D.&D++D.z/date/{date}r'   c                   K   	 | j                   d   j                  dd      }t        |dg       t        |      }t	        |      }t        d |D              r;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ddddddddddddddig}nt        d |D              rHt        |      }dd	d
dddiddiddddddiddidd|i|diddddddiddidddddddddddddddig}n[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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ig}t        t        t           d.   j                  |            }d/d0d1t        |      d2}t        |d34      S # t        $ r)}	d5d6d7t        |	       d8}t        |d94      cY d:}	~	S d:}	~	ww xY ww);zGet all interventions by date.r   r   r   rI   c              3   $   K   | ]  }|d v  
 yw)ae1ae2ae3ae4N .0roles     rF   	<genexpr>z0get_intervention_list_by_date.<locals>.<genexpr>        It33I   rJ   r'   r&   rK   r   r)   r    rL   rM   rR   rS   r$   rT   rU   rV   rW   rX   rY   rZ   r]   r   r!   )r"   r    r'   r(   r*   r^   pool.subpool.description
client.subclient.nametech.subtech.firstnametech.lastnamec              3   $   K   | ]  }|d v  
 yw)	formateurcsNr   r   s     rF   r   z0get_intervention_list_by_date.<locals>.<genexpr>        B,,Br   $eqzclient.sectorr'   r'   r"   r(   r*   r^   rf   rg   rh   r   r   r   r   r   r   r   r   r+   rz   0   Liste des interventions récupéré avec succèsr{   r1   r2   r5   r|   3   Error lors de la récupération des interventions: r-   r6   Nr7   r8   r   r   r   anyr   r}   r9   r   r~   r   r?   r;   )
r   r'   r@   my_user_submy_rolesr   	my_sectorr   rD   rE   s
             rF   get_intervention_list_by_dater      s    lE___5==iL
Z#'":.Z(IIIDkBC '&0(-$	  G$ )&7(-&	  I& '&7(-$	  G$   ! !$%!"$%,-&''($%*+)*!;.H^ BBB":.I  '&0(-$	  G$ )&7(-&	  I&	0BDQ  '&7(-$	  G$   ! !$%!"$%,-&''($%*+)*!?0Hf FD>* '&0(-$	  G$ )&7(-&	  I& '&7(-$	  G$ !q!q! ! 	!
 #A!  ! !!! a! &q! #A! +A! %a! &q! #A! )!!  (!!;1Hf ^,<=oNXXYabc  -IM*	
 NDD E%LSQRVHU

 NDDEs5   GFF G	F?F:4F?5G:F??Gz/month/{month}d   r!   i  )defaultgele)r   r   monthlimitskipc           
        K   	 | j                   d   j                  dd      }t        |dg       t        |      }t	        |      }t
        t           d   j                  dt        fg       ddd| ii}d	d
d
d
d
d
d
d
d
d	}t        d |D              r||d<   nt        d |D              r|t        |      }	t        t
        t           d   j                  dd|	i            }
t        t
        t           d   j                  dddt        |
      ii            }dt        |      i|d<   t        t
        t           d   j                  ||      j                  dd
      j!                  |      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Get all interventions by month.r   r   r   rI   r   r'   z$regex^r   r!   )	r"   r    r'   r(   r*   r^   rf   rg   rh   c              3   $   K   | ]  }|d v  
 ywr   r   r   s     rF   r   z1get_intervention_list_by_month.<locals>.<genexpr>v  r   r   r&   c              3   $   K   | ]  }|d v  
 ywr   r   r   s     rF   r   z1get_intervention_list_by_month.<locals>.<genexpr>x  r   r   r$   r    sectorr   r#   z$inr)   r+   rz   r   r{   r1   r2   r5   r|   r   r-   r6   N)r7   r8   r   r   r   r9   r   create_indexr   r   r   setdistinctr}   findsortr   r   r   r?   r;   )r   r   r   r   r@   r   r   
base_query
projectionr   client_subs	pool_subsr   rD   rE   s                  rF   get_intervention_list_by_monthr   b  s    )E___5==iL
Z#'":.Z( 	'(9FFQZH[G\]x1UG56
q!QAXYefno  AB  C
III%0Jz"BBB":.In-=>yIRRSX[cenZopqKN+;<WENNuWcfkmqr}m~e  WA  B  CI&+T)_%=Jz" ^,<=oN"d:z:"d61o"d4j#eEl	,  -I$	
 NDD E%LSQRVHU

 NDDEs5   GFF G	GF?9G:G?GGz/week/{start_date}/{end_date}
start_dateend_datec                   K   	 | j                   d   j                  dd      }t        |dg       t        |      }t	        |      }t        d |D              r`d||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ig}nt        d+ |D              rmt        |      }d	d
ddddiddid	dddddiddi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ig}n^d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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ig}t        t        t           d.   j                  |            }d/d0d1|d2}	t        |	d34      S # t        $ r)}
d5d0d6t        |
       d7}	t        |	d84      cY d9}
~
S d9}
~
ww xY ww):z*Get all interventions for a specific week.r   r   r   rI   c              3   $   K   | ]  }|d v  
 ywr   r   r   s     rF   r   z0get_intervention_list_by_week.<locals>.<genexpr>  r   r   rJ   )z$gtez$lter   rK   r   r)   r    rL   rM   rR   rS   r$   rT   rU   rV   rW   rX   rY   rZ   r]   r"   r   r!   r'   r(   r*   r^   rf   rg   rh   r   r   r   r   r   r   r   c              3   $   K   | ]  }|d v  
 ywr   r   r   s     rF   r   z0get_intervention_list_by_week.<locals>.<genexpr>  r   r   r   r   r   r+   GetInterventionListByWeeku1   Liste des interventions récupérée avec succèsr{   r1   r2   r5   u4   Erreur lors de la récupération des interventions: r-   r6   Nr   )r   r   r   r@   r   r   r   r   r   rD   rE   s              rF   get_intervention_list_by_weekr     s    xE___5==iL
Z#'":.Z(III%/B + 
  '&0(-$	  G$ )&7(-&	  I& '&7(-$	  G$ !q!q! ! 	!
 #A!  ! !!! a! &q! #A! +A! %a! &q! #A! )!!  (!!A4Hj BBB":.I  '&0(-$	  G$ )&7(-&	  I&*/);)3X F  '&7(-$	  G$ !q!q! ! 	!
 #A!  ! !!! a! &q! #A! +A! %a! &q! #A! )!!  (!!E6Hr FZ$JKL '&0(-$	  G$ )&7(-&	  I& '&7(-$	  G$ !q!q! ! 	!
 #A!  ! !!! a! &q! #A! +A! %a! &q! #A! )!!  (!!;1Hf ^,<=oNXXYabc  3J$	
 NDD E3McRSfXV

 NDDEs5   HGG H	HG>8H9H>HHz/intervention/start/{sub}c                   K   	 | j                   d   j                  dd      }t        |dg       dt        t        j                  j                               d}t        t           d   j                  d|i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Start intervention.r   r   r   rI   doing)r^   r_   r   r    $setr+   StartInterventionu%   Interventions démarrée avec succèsr{   r1   r2   r5   r|   u-   Error lors du démarrage de l'interventions: r-   r6   N)r7   r8   r   r;   datetimenowr9   r   
update_oner   r?   )r   r    r@   
start_dictrD   rE   s         rF   start_interventionr   R  s     E___5==iL
Z#'&c(:K:K:O:O:Q6RS
'(9DDCLZ 	
  +>!	
 NDD E%Fs1vhO

 NDDEs5   CBB C	CB?9C:C?CCintervensionc                   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<   d|v r|d   dk(  rd|d<   |j                         D ci c]
  \  }}||| }}}d|v r7|d   dk(  r/d|d<   t        t        j                  j                               |d<   t        t           d   j                  d|id|i       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 intervention.r   r   r   rI   r   r    r"   r   r5   r
   Intervention '' n'existe pasr-   r   r2   ra   Nrb   re   Tdoner^   r`   r   r+   u'   Interventions mise à jour avec succèsr{   r1   u2   Error lors de la mise à jour de l'interventions: r6   )r7   r8   r   r9   r   r:   r   
model_dumpitemsr;   r   r   r   r?   )
r   r    r   r@   intervention_cursorrD   intervension_dictkeyvaluerE   s
             rF   update_interventionr   o  s    /E___5==iL
Z#',-=>OXXCLAJ

 #!0+C5?N
  CHH(335//4Eo4VZ^4^13o.--2CM2RVZ2Z/1m, 0557N -C5;L !%Z N N'',=g,F$,N)/g&-01B1B1F1F1H-Ik*'(9DDCL&'	
  ,@(	
 NDD#N$  E,KCPQF8T

 NDDEsU   E2A(D= ,E2-AD= 2D7A5D= 6E27D= =	E/E*$E/%E2*E//E2c                   K   	 | j                   d   j                  dd      }t        |dg       t        t           d   j                  d|i      }|j                  dk(  rdd	d
| dd}t        |d      S 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Delete intervention.r   r   r   r   r   r    r   r5   DeleteInterventionr   r   r-   r   r2   r+   u$   Intervention supprimée avec succèsr1   z0Error lors de la suppression de l'intervention: r6   N)
r7   r8   r   r9   r   
delete_onedeleted_countr   r?   r;   )r   r    r@   resultrD   rE   s         rF   delete_interventionr     s     E___5==iL
Z%) 01/BMMCL
 1$!0+C5?N
  CHH  ,=

 NDD E,I#a&R

 NDDEsA   B?A2B
 6B?7B
 	B?
	B<B71B<2B?7B<<B?z/intervention/reschedule/{sub}newSchedulec                   K   	 | j                   d   j                  dd      }t        |dg       t        |      }|j	                         }t
        t           d   j                  d|id|i      }|j                  dk(  rd	d
d| dd}t        |d      S d|v r}|d   j                  d      }t
        t           d   j                  d|d   iddd|d    d|d    d|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Reschedule intervention.r   r   r   rI   r   r    r   r   r5   r	   r   r   r-   r   r2   anomaly_subr'   -r[   closedu#   Intervention reprogrammée pour le r   r!   u    à r(   )r.   rw   	closed_byr`   r+   u'   Intervention reprogrammée avec succèsr1   z4Error lors de la reprogrammation de l'intervention: r6   N)r7   r8   r   r   r   r9   r   r   matched_countr   splitr;   r   r   r?   )
r   r    r   r@   r   reschedule_dictreschedule_cursorrD   r'   rE   s
             rF   reschedule_interventionr     s    (E___5==iL
Z#'":.%002*+;<_MXXCL_%

 **a/!4+C5?N
  CHHO+"6*005D+,[9DD67H<_`def`g_hhijnopjqirrstxyzt{s|  }A  BQ  RX  BY  AZ  ;[  ju  DG  HP  HY  HY  H]  H]  H_  D`  a  b  0@
 NDD E0McRSfXV

 NDDEsB   EBD) EBD) (E)	E2EEEEE)'r   r<   fastapir   r   r   fastapi.responsesr   models.interventionsr   r	   r
   utilsr   r   r   r   r   r   pymongor   r9   routerpostrG   getr;   r   r   intr   r   putr   patchr   deleter   r   r       rF   <module>r      sT     - - * [ [ h h  "	
	]K01
 R(Ew (El (E (EV HrEG rE# rE rEh NnE nE nE nE`  sqT2aA&	0E0E0E 0E 	0E 0Ed +,zE zEc zEUX zE -zEx '(Eg EC E )E8 h1Ew 1ES 1EHZ 1E 1Ef xEw ES E E@ ,-*E7 *E *EKa *E .*Er   