
    >gEiS                     J   d Z ddlmZmZmZmZmZmZmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZmZmZ ddlmZmZ dd	lmZmZ dd
lmZ ddlZddlZ e       Zej?                  de       ed       ed       ed       ed       ed       ed       ed       ed       e        ee       ee      fde de de de de de dee!   dee!   dedede
fd       Z"ejG                  de       ed       ed       ed       ed       ed       ed       ed       ed       ed       ee       ee      fde$dee    dee    dee    dee    dee    dee!   dee!   dee    dee   dede
fd       Z%ejM                  dee          ee      fde
fd       Z'ejM                  dee          ee       ee      fdede
fd        Z(ejM                  de       ee      fde$de
fd!       Z)ejU                  d       ee       ee      fde$dede
fd"       Z+y)#u:   
Endpoints pour les signalements d'événements de santé
    )	APIRouterDependsHTTPExceptionstatus
UploadFileFileForm)Session)get_db)User)HealthReport)HealthReportCreateHealthReportResponseHealthReportUpdate)get_current_userget_current_admin)ListOptional)datetimeN/)response_model.titledescriptionreport_typehealth_center_namelocation
event_datelatitude	longitudephotocurrent_userdbc                   K   d}|r|j                   r|j                  j                  d      st        t        j
                  d      d}t        j                  |d       t        j                  j                  |j                         d   }t        j                          | }t        j                  j                  ||      }t        |d	      5 }|j                          d{   }|j                  |       ddd       	 t!        j"                  |d
      }t'        |	j(                  | ||||||||
      }|
j+                  |       |
j-                          |
j/                  |       |S 7 # 1 sw Y   uxY w# t$        $ rC 	 t!        j"                  |d      }n(# t$        $ r t        t        j
                  d      w xY wY w xY ww)uS   
    Création d'un signalement d'événement de santé avec photo optionnelle
    Nimage/   Le fichier doit être une imagestatus_codedetailuploads/health_reportsTexist_ok   wb%Y-%m-%dT%H:%M:%S%Y-%m-%dR   Format de date d'événement invalide. Utilisez YYYY-MM-DD ou YYYY-MM-DDTHH:MM:SS.)
user_idr   r   r   r   r   r   r   r   r    )filenamecontent_type
startswithr   r   HTTP_400_BAD_REQUESTosmakedirspathsplitextuuiduuid4joinopenreadwriter   strptime
ValueErrorr   idaddcommitrefresh)r   r   r   r   r   r   r   r   r    r!   r"   
photo_path
upload_dirfile_extensionr2   fcontentevent_datetime
new_reports                      K/home/www/lebenam.kofcorporation.com/app/api/v1/endpoints/health_reports.pycreate_health_reportrN      s    " J!!,,X6"778  .

J.))%..9!<jjl^N#34WW\\*h7
*d# 	q!JJL(GGGG	
!**:7JK -!J FF:IIKJJzE )	 	  	%..z:FN 	"77k 	 sm   CGE0&E.'E0<GE< AG.E00E95G<	GFG%GGGGGz/{report_id}	report_idc                 ^  K   |j                  t              j                  t        j                  | k(  t        j                  |
j                  k(        j                         }|st        t        j                  d      |	rY|	j                  rL|j                  rHt        j                  j                  |j                        rt        j                  |j                         d}t        j                  |d       |	j                   j#                  d      st        t        j$                  d      t        j                  j'                  |	j                        d   }t)        j*                          | }t        j                  j-                  ||      }t/        |d	      5 }|	j1                          d
{   }|j3                  |       d
d
d
       ||_
        |||||||d}|j5                         D ]  \  }}|	t7        |||        |	 t9        j:                  |d      }||_        |jA                          |jC                  |       |S 7 # 1 sw Y   xY w# t<        $ rC 	 t9        j:                  |d      }n(# t<        $ r t        t        j$                  d      w xY wY w xY ww)uV   
    Mise à jour d'un signalement d'événement de santé avec photo optionnelle
       Signalement non trouvér&   r)   Tr*   r$   r%   r,   r-   N)r   r   r   r   r   r   r   r.   r/   r0   )"queryr   filterrB   r1   firstr   r   HTTP_404_NOT_FOUNDr2   r    r6   r8   existsremover7   r3   r4   r5   r9   r:   r;   r<   r=   r>   r?   itemssetattrr   r@   rA   r   rD   rE   )rO   r   r   r   r   r   r   r   r   r    r!   r"   reportrG   rH   r2   rF   rI   rJ   update_datafieldvaluerK   s                          rM   update_health_reportr^   Z   sT    $ XXl#**9$/ eg 
 11,
 	
 <<BGGNN6<<8IIfll# .

J.!!,,X6"778 
 ))%..9!<jjl^N#34WW\\*h7
*d# 	q!JJL(GGGG	 " {;0h9K $))+ *uFE5)*
 	%..z;NON +IIKJJvMG )	 	,  	!)!2!2:z!J # & ; ;o  	sr   F J-"I6I7I1J->J-I &*J-IIJ-	J*(I?>J*?%J$$J*'J-)J**J-z
/all/usersc                    K   | j                  t              j                  t        j                  j	                               j                         }|S w)z 
    Liste des signalements
    )rR   r   order_by
created_atdescall)r"   reportss     rM   get_all_reportsre      s>      hh|$--l.E.E.J.J.LMQQSGNs   AAc                    K   |j                  t              j                  t        j                  | j                  k(        j                  t        j                  j                               j                         }|S w)u;   
    Liste des signalements de l'utilisateur connecté
    )	rR   r   rS   r1   rB   r`   ra   rb   rc   )r!   r"   rd   s      rM   get_my_reportsrg      s\      hh|$++/h|&&++-.ssu  Ns   A;A=c                    K   |j                  t              j                  t        j                  | k(        j	                         }|st        t        j                  d      |S w)u#   
    Détails d'un signalement
    rQ   r&   )rR   r   rS   rB   rT   r   r   rU   )rO   r"   rZ   s      rM   
get_reportri      s\      XXl#**9$eg  11,
 	

 Ms   A#A%c                   K   |j                  t              j                  t        j                  | k(  t        j                  |j                  k(        j                         }|st        t        j                  d      |j                  rHt        j                  j                  |j                        rt        j                  |j                         |j                  |       |j                          dddS w)z&
    Suppression d'un signalement
    rQ   r&   Tu"   Signalement supprimé avec succès)r   message)rR   r   rS   rB   r1   rT   r   r   rU   r    r6   r8   rV   rW   deleterD   )rO   r!   r"   rZ   s       rM   delete_reportrm      s      XXl#**9$/ eg 
 11,
 	

 ||v||4
		&,,IIfIIK 7 s   C7C9),__doc__fastapir   r   r   r   r   r   r	   sqlalchemy.ormr
   app.db.sessionr   app.models.userr   app.models.health_reportr   app.schemas.health_reportr   r   r   app.core.securityr   r   typingr   r   r   r6   r:   routerpoststrfloatrN   putintr^   getre   rg   ri   rl   rm        rM   <module>r      sJ   V U U " !   1 b b A !  	 	S!56cCyCy"3iI3i $T
!%d !12&/DDD D 	D
 D D uoD D D D 	D 7DL N+?@  :!%d!%d(,T
"4j $T
!%d $T
"&t* !12&/TTC=T #T #	T
 !T smT uoT T T JT T 	T ATn L.B)CD&/ E C%9 :; !12&/ < N+?@ &/ A& ~ !!12&/ 	 r   