
    ?Di!7                         S r SSKJrJr  SSKJrJrJr  SSKJr  SSK	J
r
JrJrJrJr  S rS\\   S\\   4S	 jrSS\S\\   S\4S jjr " S S5      rg
)uV   Card 2: Registro de apoyos por curso y área (objetivos, estudiantes, intervenciones).    )datetimedate)OptionalAnyList)Session)CourseRecordSupportModelCourseRecordSupportStudentModel$CourseRecordSupportInterventionModelSupportAreaModelProfessionalModelc                 t    U c  g [        U S5      (       a  U R                  5       $ U (       a  [        U 5      $ S $ )N	isoformat)hasattrr   str)vs    aC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\classes\course_record_support_class.py_serialize_dater      s4    yq+{{}3q6 D     sreturnc                 &   U b*  [        U [        5      (       a  U R                  5       (       d  g [        U [        5      (       a  U $  [        R
                  " U R                  5       S S S5      R                  5       $ ! [        [        4 a     g f = f)N
   z%Y-%m-%d)
isinstancer   stripr   r   strptime
ValueError	TypeError)r   s    r   _parse_dater      sv    yZ3''		!T  3B<AACC	" s   5A= =BBNrowprofessional_namec                 L   U R                   U R                  U R                  [        U R                  5      U R
                  b  [        U R
                  5      OS U R                  U R                  UU R                  [        U R                  5      [        U R                  5      S.$ )N)id	course_idsupport_area_idr   pedagogicalHoursplaceprofessionalIdprofessionalNameactivitiesDescription
created_at
updated_at)r#   r$   r%   r   r   pedagogical_hoursfloatr'   professional_idactivities_descriptionr+   r,   )r    r!   s     r   _intervention_to_dictr1   "   s    ff]]..)<?<Q<Q<]E#"7"78cg---!$!;!;%cnn5%cnn5 r   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	\S\4S
 jrS\S\4S jrS\	S\4S jrS\S\	S\4S jrS\S\4S jrSrg)CourseRecordSupportClass2   dbc                     Xl         g Nr5   )selfr5   s     r   __init__!CourseRecordSupportClass.__init__3   s    r   r$   r   c           
          U R                   R                  [        5      R                  [        R                  R                  5       5      R                  5       nU R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU Vs0 s H  oDR                  U_M     nn/ nU GH  nUR                  UR                  5      nU(       a  UR                  OSn	U(       a  UR                  OSn
/ nU
(       aj  U R                   R                  [        R                  5      R                  [        R                   U
:H  5      R                  5        Vs/ s H  nUS   PM
     nnU R                   R                  ["        5      R                  ["        R                  U:H  ["        R                  UR                  :H  5      R                  ["        R$                  R'                  5       ["        R                  R'                  5       5      R                  5       nU Vs/ s H  oDR(                  c  M  UR(                  PM     nn0 nU(       a  U R                   R                  [*        5      R                  [*        R                  R-                  U5      5      R                  5        H  n[/        USS5      =(       a    [/        USS5      nU(       a8  UR0                   SUR2                   3R5                  5       UUR                  '   Mc  [/        USS5      =(       d    [7        UR                  5      UUR                  '   M     U Vs/ s H%  n[9        XOR                  UR(                  5      S9PM'     nnUR;                  UR                  UR                  =(       d    SU	UUS	.5        GM     S
US.$ s  snf s  snf s  snf s  snf ! [<         a  nS[7        U5      / S.s SnA$ SnAff = f)uZ   Lista por curso: todas las áreas con su registro (objetivos, student_ids, interventions).Nr   names	lastnames namer!    )r%   support_arealearning_objectivesstudent_idsinterventionssuccessstatusdataerrorrI   messagerJ   )r5   queryr   order_byrC   ascallr	   filterr$   r%   getr#   rD   r
   
student_idcourse_record_support_idr   r   descr/   r   in_getattrr=   r>   r   r   r1   append	Exception)r9   r$   areasrecordsrrecord_by_arearesultarearecrD   	record_idrE   r   interventions_rowsprofessional_ids
prof_namespr@   rF   es                       r   get_by_course_id)CourseRecordSupportClass.get_by_course_id6   sG   4	FGGMM"23<<=M=Z=Z=^=^=`aeegE670::iGH 
 =DDGq//2GNDF$((1ADc&=&=$#&)CFFt	  "&/N/Y/Y!Z ? X X\e ef"#"A !"   # GGMM"FGV<FF)S<LLPTPWPWW XBGGLLNPtPwPwP|P|P~SU # @R#s?Q!UfUf$5A$5$5?Q #s
#!WW]]+<=DDEVEYEYE]E]^nEopttv&q'48ZWQUY=Z23''!AKK=/I/O/O/QJqtt,/6q&$/G/T3qtt9Jqtt, w 0!/ *!~~aN_N_?`a/  ! '+ww$($5$5$;+>#.%2 E R (88W E# $t!  	F%#a&"EE	Fs]   B)O! +OB1O! 2OB7O! 8OODO! !,O?O! O! !
P+O?9P?PrJ   c           	      >    [        UR                  S5      5      n[        UR                  S5      5      nUR                  S5      =(       d    SR                  5       =(       d    SnUR                  S5      =(       d    / nU R                  R	                  [
        5      R                  [
        R                  U:H  [
        R                  U:H  5      R                  5       nU(       aG  XFl
        [        R                  " 5       Ul        U R                  R                  5         UR                  nOt[        UUU[        R                  " 5       [        R                  " 5       S9nU R                  R!                  U5        U R                  R                  5         UR                  nU R                  R	                  ["        5      R                  ["        R$                  U:H  5      R'                  SS	9  U HH  nUc  M  U R                  R!                  [#        U[        U5      [        R                  " 5       S
95        MJ     U R                  R)                  5         SSUSU0S.$ ! [*         a3  n	U R                  R-                  5         S[/        U	5      SS.s Sn	A	$ Sn	A	ff = f)zLCrea o actualiza course_record_support (objetivos) y sincroniza student_ids.r$   r%   rD   rB   NrE   )r$   r%   rD   r+   r,   F)synchronize_session)rU   rT   r+   rG   zDatos guardados.r#   rI   rM   r#   rJ   rK   rL   )intrS   r   r5   rN   r	   rR   r$   r%   firstrD   r   utcnowr,   flushr#   addr
   rU   deletecommitrZ   rollbackr   )
r9   rJ   r$   r%   rD   rE   ra   rb   sidrg   s
             r   save_record$CourseRecordSupportClass.save_recordn   s   .	HDHH[12I!$((+<"=>O#'88,A#B#Hb"O"O"Q"YUY((=17RK 67,66)C,<<O   *='!)!2FF	.'$3(;'0'0 C FF	GGMM9:AA/HHIUff/";;-6"3x'0  # GGNN'4Fibfhqarss 	HGG%#a&$GG	Hs   II 
J)(JJJr%   c           	      n    U R                   R                  [        5      R                  [        R                  U:H  [        R
                  U:H  5      R                  [        R                  R                  5       [        R                  R                  5       5      R                  5       nU Vs/ s H  oDR                  c  M  UR                  PM     nn0 nU(       a  U R                   R                  [        5      R                  [        R                  R                  U5      5      R                  5        H  n[        USS5      =(       a    [        USS5      nU(       a7  UR                   SUR                    3R#                  5       XgR                  '   Mb  [        USS5      =(       d    [%        UR                  5      XgR                  '   M     U Vs/ s H%  n['        XFR)                  UR                  5      S9PM'     n	nSU	S.$ s  snf s  snf ! [*         a  n
S	[%        U
5      / S
.s Sn
A
$ Sn
A
ff = f)u'   Lista intervenciones por curso y área.Nr=   r>   r?   r@   rA   rG   rH   rK   rL   )r5   rN   r   rR   r$   r%   rO   r   rV   r#   rQ   r/   r   rW   rX   r=   r>   r   r   r1   rS   rZ   )r9   r$   r%   rowsr]   rd   re   rf   r@   rJ   rg   s              r   get_interventions*CourseRecordSupportClass.get_interventions   s   	FBC8BBiO8HHO[ >CCHHJLpLsLsLxLxLz{  <@a4aCTCT 1 1 14aJ'89@@ARAUAUAYAYZjAklpprA"1gt4VKQU9VD./ggYa}+E+K+K+M
44(+21fd+C+Ps144y
44( s lppkofg)!~~aN_N_?`akoDp'66  b q 	F%#a&"EE	FsC   B+H -HHDH ,H H 
H 
H4H/)H4/H4r#   c                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSSS.$ SnUR                  (       a  U R                   R                  [        5      R                  [        R                  UR                  :H  5      R                  5       nU(       aT  [        USS5      =(       d    SS-   [        USS5      =(       d    S-   nUR                  5       =(       d    [        US	S5      n[        X#S
9nSUS.$ ! [         a  nS[        U5      SS.s SnA$ SnAff = f)u!   Obtiene una intervención por id.rK      Intervención no encontrada.NrL   r=   rB   r?   r>   r@   rA   rG   rH   )r5   rN   r   rR   r#   rn   r/   r   rX   r   r1   rZ   r   )r9   r#   r    	prof_namerf   rJ   rg   s          r   get_intervention_by_id/CourseRecordSupportClass.get_intervention_by_id   s#   	H''-- DELLMqMtMtxzMz{  B  B  DC")6T^bccI""GGMM"34;;<M<P<PTWTgTg<ghnnp!(GR!8!>B# EQRT_acIdIjhj kI ) 1 MWQ5MI(JD'66 	H%#a&$GG	Hs%   AD/ CD/ /
E9EEEc                 "    [        UR                  S5      5      n[        UR                  S5      5      n[        UR                  S5      5      nU(       d  SSSS.$ UR                  S5      nUb  [        U5      nUR                  S	5      =(       d    S
R	                  5       =(       d    SnUR                  S5      nUb  [        U5      OSnUR                  S5      =(       d    S
R	                  5       =(       d    Sn[        UUUUUUU[        R                  " 5       [        R                  " 5       S9	n	U R                  R                  U	5        U R                  R                  5         U R                  R                  U	5        Sn
U	R                  (       a  U R                  R                  [        5      R                  [        R                   U	R                  :H  5      R#                  5       nU(       a@  [%        USS
5      =(       d    S
S-   [%        USS
5      =(       d    S
-   n
U
R	                  5       n
['        XS9nSSU	R                   US.$ ! [(         a3  nU R                  R+                  5         S[-        U5      SS.s SnA$ SnAff = f)u(   Crea una intervención (Ingresar apoyo).r$   r%   r   rK   zIndique la fecha.NrL   r-   r'   rB   r/   r0   )	r$   r%   r   r-   r'   r/   r0   r+   r,   r=   r?   r>   rA   rG   zApoyo registrado.rl   )rm   rS   r   r.   r   r   r   ro   r5   rq   rs   refreshr/   rN   r   rR   r#   rn   rX   r1   rZ   rt   r   )r9   rJ   r$   r%   dtr-   r'   r/   r0   r    r~   rf   outrg   s                 r   store_intervention+CourseRecordSupportClass.store_intervention   s   &	HDHH[12I!$((+<"=>OTXXf-.B")6ISWXX $)< = ,$)*;$<!XXg&,"335=E"hh'89O6E6Qc/2W[O&*hh/G&H&NB%U%U%W%_[_"6# /"3 /'=#??,#??,
C GGKKGGNNGGOOC I""GGMM"34;;<M<P<PTWTgTg<ghnnp!(GR!8!>B# EQRT_acIdIjhj kI ) 1I'IC'4Gsvv_bcc 	HGG%#a&$GG	Hs%   AI G3I 
J(J	J	Jc                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSSS.$ SU;   a%  US   (       a  [        US   5      nU(       a  XCl        SU;   a  US   b  [        US   5      OSUl	        SU;   a*  US   =(       d    SR                  5       =(       d    SUl        S	U;   a  US	   b  [        US	   5      OSUl        S
U;   a*  US
   =(       d    SR                  5       =(       d    SUl        [        R                   " 5       Ul        U R                   R%                  5         U R                   R'                  U5        SnUR                  (       a  U R                   R                  [(        5      R                  [(        R                  UR                  :H  5      R                  5       nU(       a@  [+        USS5      =(       d    SS-   [+        USS5      =(       d    S-   nUR                  5       n[-        X5S9nSSXS.$ ! [.         a3  nU R                   R1                  5         S[3        U5      SS.s SnA$ SnAff = f)u#   Actualiza una intervención por id.rK   r}   NrL   r   r-   r'   rB   r/   r0   r=   r?   r>   rA   rG   u   Intervención actualizada.rl   )r5   rN   r   rR   r#   rn   r   r   r.   r-   r   r'   rm   r/   r0   r   ro   r,   rs   r   r   rX   r1   rZ   rt   r   )	r9   r#   rJ   r    r   r~   rf   r   rg   s	            r   update_intervention,CourseRecordSupportClass.update_intervention   s   	H''-- DELLMqMtMtxzMz{  B  B  DC")6T^bcc~$v, f.!H"d*LPQdLeLqd3F.G(Hw{%$!']0b779AT	 D(FJK\F]Fic$/@*A&Bos#'4/.23K.L.RPR-Y-Y-[-c_c*%__.CNGGNNGGOOC I""GGMM"34;;<M<P<PTWTgTg<ghnnp!(GR!8!>B# EQRT_acIdIjhj kI ) 1I'IC'4PXZhh 	HGG%#a&$GG	Hs%   AH8 GH8 8
I5(I0*I50I5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)u!   Elimina una intervención por id.rK   r}   )rI   rM   rG   u   Intervención eliminada.N)r5   rN   r   rR   r#   rn   rr   rs   rZ   rt   r   )r9   r#   r    rg   s       r   delete_intervention,CourseRecordSupportClass.delete_intervention  s    		:''-- DELLMqMtMtxzMz{  B  B  DC")6TUUGGNN3GGNN'4NOO 	:GG%#a&99	:s$   AB 9B 
C'CCCr8   N)__name__
__module____qualname____firstlineno__r   r:   rm   r   rh   dictrv   rz   r   r   r   r   __static_attributes__ r   r   r3   r3   2   s    7 6F# 6F# 6Fp0H 0H 0HdF3 F F F4H H H"(Ht (H (HTHc H H# HB:c :c :r   r3   r7   )__doc__r   r   typingr   r   r   sqlalchemy.ormr   app.backend.db.modelsr	   r
   r   r   r   r   r   r   r   r1   r3   r   r   r   <module>r      sm    \ # & & " !8C= Xd^ C X`adXe qu  o: o:r   