
    6i                         S SK JrJrJr  S SKJr  S SKJrJrJr  S SK	J
r
  S\\   4S jrS\\   4S jr " S S	5      rg
)    )OptionalAnyList)Session)datetimedatetime)"GuardianAttendanceCertificateModelreturnc                     U c  g[        U [        5      (       a  U $ [        U [        5      (       a)   [        R                  " U SS S5      R                  5       $ g! [
        [        4 a     gf = f)z(Convierte string a date si es necesario.N
   %Y-%m-%d)
isinstancer   strr   strptime
ValueError	TypeError)values    kC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\classes\guardian_attendance_certificate_class.py_parse_dater      sn    }%%	$$U3BZ<AACC  I& 		s   'A A.-A.c                    U c  g[        U [        5      (       a  U $ [        U [        5      (       aF  U R                  5       nU(       d  gS H(  n [        R
                  " X5      R                  5       s  $    g! [         a     M:  f = f)z;Convierte string a time si es necesario (HH:MM o HH:MM:SS).N)z%H:%M:%S%H:%M)r   r	   r   stripr   r   r   )r   sfmts      r   _parse_timer      s|    }%%KKM(C((05577 )
   s   #A88
BBc                       \ rS rSrS\4S jrS\S\4S jrS\	S\
4S jrS	\	S\
4S
 jrSS	\\	   S\
4S jjrS\S\
4S jrS\	S\S\
4S jrS\	S\
4S jrSrg)"GuardianAttendanceCertificateClass'   dbc                     Xl         g Nr    )selfr    s     r   __init__+GuardianAttendanceCertificateClass.__init__(   s        objr   c                    S nUR                   UR                  UR                  UR                  UR                  (       a  UR                  R                  S5      OSU" UR                  5      U" UR                  5      UR                  (       a  UR                  R                  S5      OSUR                  (       a  UR                  R                  S5      S.	$ SS.	$ )z*Convierte el modelo a dict para respuesta.c                 d    U c  g [        U S5      (       a  U R                  S5      $ [        U 5      $ )Nstrftimer   )hasattrr+   r   )ts    r   	_time_str>GuardianAttendanceCertificateClass._to_dict.<locals>._time_str-   s.    y*1!Z*@*@1::g&Lc!fLr'   r   Nz%Y-%m-%d %H:%M:%S)	id
student_iddocument_type_idprofessional_idcertificate_date
start_timeend_time
added_dateupdated_date)
r0   r1   r2   r3   r4   r+   r5   r6   r7   r8   )r$   r(   r.   s      r   _to_dict+GuardianAttendanceCertificateClass._to_dict+   s    	M
 &&.. # 4 4"22MPMaMa 4 4 = =j Igk#CNN3!#,,/JM..#..112EF^bNQN^N^C,,556IJ

 
	
 ei

 
	
r'   r0   c                 "    U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       a  U R                  U5      $ SSS.$ ! [         a  nS[        U5      S.s SnA$ SnAff = f)zObtiene un certificado por ID.errorCertificado no encontrado.statusmessageN)	r    queryr
   filterr0   firstr9   	Exceptionr   r$   r0   r(   es       r   get&GuardianAttendanceCertificateClass.get=   sx    	:''-- BCJJKmKpKptvKvw}}C}}S))%2NOO 	:%#a&99	:s$   A$A, 'A, ,
B6B	B	Br1   c                     U R                   R                  [        5      R                  [        R                  U:H  [        R
                  S:H  5      R                  [        R                  R                  5       5      R                  5       nU(       a  U R                  U5      $ SSS.$ ! [         a  nS[        U5      S.s SnA$ SnAff = f)u4   Obtiene el certificado más reciente por student_id.   r<   uM   No se encontró certificado de asistencia del apoderado para este estudiante.r>   N)r    rA   r
   rB   r1   r2   order_byr0   descrC   r9   rD   r   )r$   r1   r(   rF   s       r   get_by_student_id4GuardianAttendanceCertificateClass.get_by_student_idG   s    	:@A6AAZO6GG2M <??DDFG  }}S))%  3B  C  C 	:%#a&99	:s$   B!B) $B) )
C3C CCNc                     U R                   R                  [        5      R                  [        R                  S:H  5      nUb"  UR                  [        R
                  U:H  5      nUR                  [        R                  R                  5       5      R                  5       nU Vs/ s H  o@R                  U5      PM     sn$ s  snf ! [         a  nS[        U5      S.s SnA$ SnAff = f)z;Lista certificados, opcionalmente filtrados por student_id.rJ   Nr<   r>   )r    rA   r
   rB   r2   r1   rK   r0   rL   allr9   rD   r   )r$   r1   rA   itemsirF   s         r   get_all*GuardianAttendanceCertificateClass.get_allY   s    		:GGMM"DELL2CCrIE %%G%R%RV`%`aNN#E#H#H#M#M#OPTTVE.34eMM!$e444 	:%#a&99	:s0   B#C %C?C C 
C)C$C)$C)datac                 ^    UR                  S5      nUc  SSS.$ [        UUR                  SS5      UR                  S5      [        UR                  S	5      5      [        UR                  S
5      5      [        UR                  S5      5      S9nU R                  R                  U5        U R                  R                  5         U R                  R                  U5        SSUR                  S.$ ! [         a2  nU R                  R                  5         S[        U5      S.s SnA$ SnAff = f)ur   Crea un nuevo certificado. Si ya existe uno para el estudiante, puede actualizarse o crearse otro según criterio.r1   Nr<   zstudent_id es requerido.r>   r2   rJ   r3   r4   r5   r6   )r1   r2   r3   r4   r5   r6   successzCertificado creado exitosamenter?   r@   r0   )rG   r
   r   r   r    addcommitrefreshr0   rD   rollbackr   )r$   rU   r1   new_objrF   s        r   store(GuardianAttendanceCertificateClass.storef   s    	:,/J!")6PQQ8%!%*<b!A $): ;!,TXX6H-I!J&txx'=>$TXXj%9:G GGKK GGNNGGOOG$'4U]d]g]ghh 	:GG%#a&99	:s#   C0 CC0 0
D,:'D'!D,'D,c                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSS.$ S1nSS1nUR                  5        H[  u  pg[        X65      (       d  M  Xd;   a  [        X6[        U5      5        M3  Xe;   a  [        X6[        U5      5        MO  [        X6U5        M]     [        R                  " 5       Ul        U R                   R                  5         U R                   R                  U5        SSUR                  S	.$ ! [          a2  nU R                   R#                  5         S[%        U5      S.s S
nA$ S
nAff = f)z#Actualiza un certificado existente.r<   r=   r>   r4   r5   r6   rW   z$Certificado actualizado exitosamenterX   N)r    rA   r
   rB   r0   rC   rQ   r,   setattrr   r   r   utcnowr8   rZ   r[   rD   r\   r   )	r$   r0   rU   r(   date_fieldstime_fieldskeyr   rF   s	            r   update)GuardianAttendanceCertificateClass.update}   s    	:''-- BCJJKmKpKptvKvw}}C")6RSS-.K'4K"jjl
3$$)+e*<=++e*<=%0 +  (0CGGNNGGOOC '4Zbebhbhii 	:GG%#a&99	:s+   AD0 *D0 	B&D0 0
E,:'E'!E,'E,c                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSS.$ U R                   R                  U5        U R                   R                  5         SSS.$ ! [         a2  nU R                   R                  5         S[        U5      S.s SnA$ SnAff = f)zElimina un certificado.r<   r=   r>   rW   z"Certificado eliminado exitosamenteN)r    rA   r
   rB   r0   rC   deleterZ   rD   r\   r   rE   s       r   ri   )GuardianAttendanceCertificateClass.delete   s    		:''-- BCJJKmKpKptvKvw}}C")6RSSGGNN3GGNN'4XYY 	:GG%#a&99	:s$   AB 9B 
C'CCCr#   r"   )__name__
__module____qualname____firstlineno__r   r%   r
   dictr9   intr   rG   rM   r   rS   r^   rf   ri   __static_attributes__ r'   r   r   r   '   s    7 
> 
4 
$:c :c ::C :C :$:(3- :3 ::$ :3 :.: :D :S :6: : :r'   r   N)typingr   r   r   sqlalchemy.ormr   r   r   r	   app.backend.db.modelsr
   r   r   r   rr   r'   r   <module>rv      sC    & & " ) ) D(4. (4. $|: |:r'   