
    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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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j)                  d       e        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),SchoolIntegrationProgramExitCertificateClass)get_db)get_current_active_user)	UserLogin,StoreSchoolIntegrationProgramExitCertificate-UpdateSchoolIntegrationProgramExitCertificate+SchoolIntegrationProgramExitCertificateList)Sessionz-/school_integration_program_exit_certificatesz,School Integration Program Exit Certificates)prefixtagsz/storedatasession_userdbc           	        K   	 t        |      }|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)uI   Crea un nuevo certificado de egreso del programa de integración escolar.r   error  messagezError guardando certificadoNr   r   r   status_codecontent   zCertificado creado exitosamenteidzError creando certificado: )r   storedict
isinstancegetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_201_CREATED	Exceptionstr)r   r   r   serviceresultes         h/var/www/pie360backend.cl/public_html/app/backend/routes/school_integration_program_exit_certificates.py1store_school_integration_program_exit_certificater*      s     
>rBtyy{+fd#

8(<(G"AA!%zz)5RS   //!::i1RSvzz$/0
 	
  
==8QA
 	

sA   DA<C  D?C  D	C?
*C:4C?5D:C??Dz/list/{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
|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)z.Lista todos los certificados de un estudiante.r+   r   r   r   r   Error listando certificadosNr   r      Certificados encontradosz(No hay certificados para este estudianteError listando certificados: )r   get_allr    r   r!   r   r   r"   HTTP_200_OKr$   r%   )r+   r   r   r&   r   r(   s         r)   list_certificates_by_studentr4   :   s     
>rB*5dD!dhhx&8G&C"AA!#xx	3PQ   **9=5Cm
 	
  
==:3q6(C
 	

sA   CA/B 3C4"B C	C *C
CCCCz/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)u8   Obtiene el último certificado por el ID del estudiante.r   r     r   z,Certificado no encontrado para el estudianteNr   r   r/   Certificado encontrador   Error obteniendo certificado: )r   get_by_student_idr    r   r!   r   r   HTTP_404_NOT_FOUNDr3   r$   r"   r%   )r+   r   r   r&   r'   r(   s         r)   get_certificate_by_studentr;   `   s     
>rB**:6fd#

8(<(G"55!%zz)5cd   **3
 	
  
==;CF8D
 	

A   CA.B 2C3B C	C*CCCCCz/{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 su ID.r   r   r6   r   zCertificado no encontradoNr   r   r/   r7   r   r8   )r   r!   r    r   r   r   r:   r3   r$   r"   r%   r   r   r   r&   r'   r(   s         r)   get_certificater?      s     
>rBRfd#

8(<(G"55!%zz)5PQ   **3
 	
  
==;CF8D
 	

r<   /filtersc           	        K   	 t        |      }|j                  | 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)z3Lista certificados. Filtro opcional por student_id.r-   r   r   r   r   r.   Nr   r   r/   r0   zNo hay certificados registradosr1   )r   r2   r+   r    r   r!   r   r   r"   r3   r$   r%   )rA   r   r   r&   r   r(   s         r)   list_certificatesrC      s     
>rB'*<*<=dD!dhhx&8G&C"AA!#xx	3PQ   **9=5Cd
 	
  
==:3q6(C
 	

sA   C"A9B! =C">"B!  C"!	C**CCC"CC"c           	        K   	 t        |      }|j                  | |j                  d            }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.T)exclude_unsetr   r   r6   r   zError actualizando certificadoNr   r   r/   z$Certificado actualizado exitosamenter   r   z Error actualizando certificado: )r   updater   r    r!   r   r   r:   r3   r$   r"   r%   )r   r   r   r   r&   r'   r(   s          r)   update_certificaterG      s     
>rBDIIDI$ABfd#

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

8(<(G"55!%zz)5ST   **!::i1UV
 	
  
==;CF8D
 	

sA   C#A.B" 2C#3.B" !C#"	C +*CC C#C  C#N) fastapir   r   r   fastapi.responsesr   Eapp.backend.classes.school_integration_program_exit_certificate_classr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   r   sqlalchemy.ormr   ,school_integration_program_exit_certificatespostr*   r!   intr4   r;   r?   rC   putrG   rI   rJ        r)   <module>rX      s_   . . * ~ * >  #/8:
8	90 , .228< &&=>&/"

6"
"
 	"
 ="
J .112FG &&=>&/"
"
"
 	"
 H"
J .112IJ &&=>&/"
"
"
 	"
 K"
J .11': &&=>&/"
"
"
 	"
 ;"
J .2237;f;h%&=>&/"
8"
"
 	"
 8"
J .11': &&=>&/	#
#

7#
 #
 		#
 ;#
L .44W= &&=>&/"
"
"
 	"
 >"
rW   