
    oic"              
          S SK JrJrJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJrJr  S SKJr  S SKJr  \" S	S
/S9r\R+                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R/                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R5                  S5      \" \5      \" \	5      4S\S\S\S\4S jj5       r\R/                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R/                  S5      S\" \5      \" \	5      4S\\   S\S\4S jj5       r\R=                  S5      \" \5      \" \	5      4S\S\S\4S jj5       rg)    )	APIRouterstatusDepends)JSONResponse)FamilyReportClass)get_db)get_current_active_user)	UserLoginStoreFamilyReportUpdateFamilyReport)Optional)Sessionz/family_reportszFamily Reports)prefixtagsz/storedatasession_userdbc           	      J  #     [        U5      n[        U S5      (       a  U R                  5       OU R                  5       nUR	                  U5      n[        U[        5      (       aA  UR                  S5      S:X  a,  [        [        R                  SUR                  SS5      SS.S	9$ [        [        R                  S
UR                  SS5      SUR                  S5      0S.S	9$ ! [         a2  n[        [        R                  SS[        U5       3SS.S	9s SnA$ SnAff = f7f)z-Crea un nuevo Informe Familiar (Documento 7).
model_dumpr   error  messagez Error guardando informe familiarNr   r   r   status_codecontent   z$Informe familiar creado exitosamenteidz Error creando informe familiar: )r   hasattrr   dictstore
isinstancegetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_201_CREATED	Exceptionstr)r   r   r   servicepayloadresultes          TC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\family_reports.pystore_family_reportr-      s    
#B''.t\'B'B$//#		w'fd##

8(<(G"AA!%zz)5WX   //!::i1WXvzz$/0
 	
  
===c!fXF
 	

sA   D#B"C$ &D#'<C$ #D#$
D .'DD D#D  D#z/by-id/{student_id}
student_idc           	        #     [        U5      nUR                  U 5      n[        U[        5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      SS.S9$ [        [        R                  S	S
US.S9$ ! [         a2  n[        [        R                  SS[        U5       3SS.S9s SnA$ SnAff = f7f)u@   Obtiene el informe familiar más reciente por ID del estudiante.r   r     r   Informe familiar no encontradoNr   r      Informe familiar encontrador   #Error obteniendo informe familiar: r   get_by_student_idr"   r    r#   r   r   HTTP_404_NOT_FOUNDHTTP_200_OKr&   r$   r'   r.   r   r   r(   r*   r+   s         r,   get_family_report_by_idr:   8        
#B'**:6fd##

8(<(G"55!%zz)5UV   **8
 	
  
==@QI
 	

A   CA1B 5C6B C
C'C	CC	CCz/{id}r   c           	      F  #     [        U5      n[        US5      (       a  UR                  SS9OUR                  SS9nUR	                  X5      n[        U[        5      (       aA  UR                  S5      S:X  a,  [        [        R                  SUR                  SS5      S	S
.S9$ [        [        R                  SUR                  SS5      SUR                  S5      0S
.S9$ ! [         a2  n[        [        R                  SS[        U5       3S	S
.S9s S	nA$ S	nAff = f7f)z(Actualiza un informe familiar existente.r   T)exclude_unsetr   r   r0   r   z#Error actualizando informe familiarNr   r   r2   z)Informe familiar actualizado exitosamenter   r   z%Error actualizando informe familiar: )r   r   r   r    updater"   r#   r   r   r7   r8   r&   r$   r'   )r   r   r   r   r(   r)   r*   r+   s           r,   update_family_reportr@   `   s    
#B'9@|9T9T$///5Z^ZcZcrvZcZw,fd##

8(<(G"55!%zz)5Z[   **!::i1\]vzz$/0
 	
  
==B3q6(K
 	

sA   D!B C" $D!%<C" !D!"
D,'DDD!DD!z/{student_id}c           	        #     [        U5      nUR                  U 5      n[        U[        5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      SS.S9$ [        [        R                  S	S
US.S9$ ! [         a2  n[        [        R                  SS[        U5       3SS.S9s SnA$ SnAff = f7f)u9   Obtiene el informe familiar más reciente por student_id.r   r   r0   r   r1   Nr   r   r2   r3   r   r4   r5   r9   s         r,   get_family_report_by_studentrB      r;   r<   z	/list/allNc           	        #     [        U5      nUR                  U S9n[        U[        5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      SS.S	9$ [        [        R                  S
U(       a  SOSUS.S	9$ ! [         a2  n[        [        R                  SS[        U5       3SS.S	9s SnA$ SnAff = f7f)zBLista informes familiares, opcionalmente filtrados por student_id.)r.   r   r   r   r   z"Error listando informes familiaresNr   r   r2   zInformes familiares encontradoszNo hay informes familiaresz$Error listando informes familiares: )r   get_allr"   r    r#   r   r   r$   r8   r&   r'   )r.   r   r   r(   r   r+   s         r,   list_family_reportsrE      s     
#B'*5dD!!dhhx&8G&C"AA!#xx	3WX   **@D<Jf
 	
  
==A#a&J
 	

sA   CA/B 3C4$B C
C#'C
CCCCc           	        #     [        U5      nUR                  U 5      n[        U[        5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      SS.S9$ [        [        R                  S	UR	                  SS
5      SS.S9$ ! [         a2  n[        [        R                  SS[        U5       3SS.S9s SnA$ SnAff = f7f)zElimina un informe familiar.r   r   r0   r   r1   Nr   r   r2   z'Informe familiar eliminado exitosamenter   z#Error eliminando informe familiar: )r   deleter"   r    r#   r   r   r7   r8   r&   r$   r'   )r   r   r   r(   r*   r+   s         r,   delete_family_reportrH      s     
#B'#fd##

8(<(G"55!%zz)5UV   **!::i1Z[
 	
  
==@QI
 	

sA   C!A1B" 5C!6+B" !C!"
C,'CCC!CC!) fastapir   r   r   fastapi.responsesr   'app.backend.classes.family_report_classr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   typingr   sqlalchemy.ormr   family_reportspostr-   r#   intr:   putr@   rB   rE   rG   rH        r,   <module>rW      s   . . * E * > P P  "
	
 X &&=>&/%

%
%
 	%
 %
P )* &&=>&/$
$
$
 	$
 +$
N G &&=>&/	&
&

&
 &
 		&
 &
R O$ &&=>&/$
$
$
 	$
 %$
N K  $%&=>&/$
$
$
 	$
 !$
N w &&=>&/$
$
$
 	$
  $
rV   