
    U+id!              
          d dl 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 d dlmZ  ed	d
g      Zej+                  d       ee       ee	      fdededefd       Zej/                  d       ee       ee	      fdededefd       Zej5                  d       ee       ee	      fdedededefd       Zej/                  d       ee       ee	      fdededefd       Zej/                  d      d ee       ee	      fdee   dedefd       Zej=                  d       ee       ee	      fdededefd       Zy)    )	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           	      D  K   	 t        |      }t        | d      r| j                         n| j                         }|j	                  |      }t        |t              rC|j                  d      dk(  r/t        t        j                  d|j                  dd      dd	      S t        t        j                  d
|j                  dd      d|j                  d      id	      S # t        $ r5}t        t        j                  ddt        |       dd	      cY d}~S d}~ww xY ww)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          J/var/www/pie360backend.cl/public_html/app/backend/routes/family_reports.pystore_family_reportr-      s
    
#B''.t\'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           	        K   	 t        |      }|j                  |       }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      dd      S t        t        j                  d	d
|d      S # t        $ r5}t        t        j                  ddt        |       dd      cY d}~S d}~ww xY ww)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A.B 2C3B C	C*CCCCCz/{id}r   c           	      N  K   	 t        |      }t        |d      r|j                  d      n|j                  d      }|j	                  | |      }t        |t              rC|j                  d      dk(  r/t        t        j                  d|j                  dd      d	d
      S t        t        j                  d|j                  dd      d|j                  d      id
      S # t        $ r5}t        t        j                  ddt        |       d	d
      cY d	}~S d	}~ww xY ww)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@|9T$///5Z^ZcZcrvZcZwG,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           	        K   	 t        |      }|j                  |       }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      dd      S t        t        j                  d	d
|d      S # t        $ r5}t        t        j                  ddt        |       dd      cY d}~S d}~ww xY ww)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           	        K   	 t        |      }|j                  |       }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      dd	      S t        t        j                  d
|rdnd|d	      S # t        $ r5}t        t        j                  ddt        |       dd	      cY d}~S d}~ww xY ww)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           	        K   	 t        |      }|j                  |       }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      dd      S t        t        j                  d	|j	                  dd
      dd      S # t        $ r5}t        t        j                  ddt        |       dd      cY d}~S d}~ww xY ww)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#A.B" 2C#3.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   