
    U+i#              
          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      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ej/                  d       ee       ee	      fdededefd       Zej9                  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y)    )	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           	      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)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          \/var/www/pie360backend.cl/public_html/app/backend/routes/guardian_attendance_certificates.py%store_guardian_attendance_certificater-      s
    
4R8'.t\'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           	        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)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           	        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)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A.B 2C3B C	C*CCCCCz/by-id/{id}r   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)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           	      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 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@|9T$///5Z^ZcZcrvZcZwG,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           	        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 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#A.B" 2C#3.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   