
    I8i$              
          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      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\R/                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R9                  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g)    )	APIRouterstatusDepends)JSONResponse)"GuardianAttendanceCertificateClass)get_db)get_current_active_user)	UserLogin"StoreGuardianAttendanceCertificate#UpdateGuardianAttendanceCertificate)Optional)Sessionz!/guardian_attendance_certificatesz.Guardian Attendance Certificates (Document 25))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)zOCrea un nuevo certificado de asistencia del apoderado (Documento 25 - Ley TEA).
model_dumpr   error  messagezError guardando certificadoNr   r   r   status_codecontent   zCertificado creado exitosamenteidzError creando certificado: )r   hasattrr   dictstore
isinstancegetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_201_CREATED	Exceptionstr)r   r   r   servicepayloadresultes          fC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\guardian_attendance_certificates.py%store_guardian_attendance_certificater-      s    
4R8'.t\'B'B$//#		w'fd##

8(<(G"AA!%zz)5RS   //!::i1RSvzz$/0
 	
  
==8QA
 	

sA   D#B"C$ &D#'<C$ #D#$
D .'DD D#D  D#z	/list/allN
student_idc           	        #     [        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)zWLista certificados de asistencia del apoderado, opcionalmente filtrados por student_id.)r.   r   r   r   r   zError listando certificadosNr   r      zCertificados encontradoszNo hay certificadoszError listando certificados: )r   get_allr"   r    r#   r   r   r$   HTTP_200_OKr&   r'   )r.   r   r   r(   r   r+   s         r,   %list_guardian_attendance_certificatesr3   9   s     
4R8*5dD!!dhhx&8G&C"AA!#xx	3PQ   **9=5CX
 	
  
==:3q6(C
 	

sA   CA/B 3C4$B C
C#'C
CCCCz/by-student/{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)uC   Obtiene el certificado más reciente por student_id (Documento 25).r   r     r   Certificado no encontradoNr   r   r0   Certificado encontrador   Error obteniendo certificado: )r   get_by_student_idr"   r    r#   r   r   HTTP_404_NOT_FOUNDr2   r&   r$   r'   )r.   r   r   r(   r*   r+   s         r,   .get_guardian_attendance_certificate_by_studentr;   a   s     
4R8**:6fd##

8(<(G"55!%zz)5PQ   **3
 	
  
==;CF8D
 	

A   CA1B 5C6B C
C'C	CC	CCz/by-id/{id}r   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)zObtiene un certificado por ID.r   r   r5   r   r6   Nr   r   r0   r7   r   r8   )r   r#   r"   r    r   r   r:   r2   r&   r$   r'   r   r   r   r(   r*   r+   s         r,   #get_guardian_attendance_certificater?      s     
4R8Rfd##

8(<(G"55!%zz)5PQ   **3
 	
  
==;CF8D
 	

r<   z/{id}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 certificado existente.r   T)exclude_unsetr   r   r5   r   zError actualizando certificadoNr   r   r0   z$Certificado actualizado exitosamenter   r   z Error actualizando certificado: )r   r   r   r    updater"   r#   r   r   r:   r2   r&   r$   r'   )r   r   r   r   r(   r)   r*   r+   s           r,   &update_guardian_attendance_certificaterC      s    
4R89@|9T9T$///5Z^ZcZcrvZcZw,fd##

8(<(G"55!%zz)5UV   **!::i1WXvzz$/0
 	
  
===c!fXF
 	

sA   D!B C" $D!%<C" !D!"
D,'DDD!DD!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 certificado.r   r   r5   r   r6   Nr   r   r0   z"Certificado eliminado exitosamenter   zError eliminando certificado: )r   deleter"   r    r#   r   r   r:   r2   r&   r$   r'   r>   s         r,   &delete_guardian_attendance_certificaterF      s     
4R8#fd##

8(<(G"55!%zz)5PQ   **!::i1UV
 	
  
==;CF8D
 	

sA   C!A1B" 5C!6+B" !C!"
C,'CCC!CC!) fastapir   r   r   fastapi.responsesr   9app.backend.classes.guardian_attendance_certificate_classr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   typingr   sqlalchemy.ormr    guardian_attendance_certificatespostr-   r#   intr3   r;   r?   putrC   rE   rF        r,   <module>rU      s   . . * h * > r r  "#,.
:	;$   "&&x0 &&=>&/%

,%
%
 	%
 1%
P "%%k2 $%&=>&/$
$
$
 	$
 3$
N "%%&@A &&=>&/$
$
$
 	$
 B$
N "%%m4 &&=>&/$
$
$
 	$
 5$
N "%%g. &&=>&/	&
&

-&
 &
 		&
 /&
R "((1 &&=>&/$
$
$
 	$
 2$
rT   