
    i1*                     t    S 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	J
r
Jr  S rS\
S\4S	 jr " S
 S5      rg)zFLogic for 5. Estrategias de trabajo con la familia y con la comunidad.    )datetime)OptionalAnyList)Session) FamilyCommunityStrategyTypeModelCourseFamilyCommunityModel%CourseFamilyCommunityObservationModelc                 t    U c  g [        U S5      (       a  U R                  5       $ U (       a  [        U 5      $ S $ )N	isoformat)hasattrr   str)vs    cC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\classes\course_family_community_class.py_serialize_dater      s4    yq+{{}3q6 D     rreturnc                    U R                   U R                  U R                  U R                  U R                  U R
                  [        U R                  5      [        U R                  5      [        U R                  5      S.	$ )N)	id	course_id!family_community_strategy_type_iddescripcionseguimiento
evaluacion
added_dateupdated_datedeleted_date)
r   r   r   r   r   r   r   r   r   r   )r   s    r   _row_to_dictr      s\    dd[[-.-P-P}}}}ll%all3'7'7
 
r   c                       \ rS rSrS\4S j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rS\S\4S jrS\S\S\4S jrS\S\4S jrSrg)CourseFamilyCommunityClass#   dbc                     Xl         g )Nr#   )selfr#   s     r   __init__#CourseFamilyCommunityClass.__init__$   s    r   r   c           	          U R                   R                  [        5      R                  [        R                  R                  S5      5      R                  [        R                  5      R                  5       nSU Vs/ s H2  nUR                  UR                  UR                  UR                  S.PM4     snS.$ s  snf ! [         a  nS[        U5      / S.s SnA$ SnAff = f)zBList strategy types (deleted_date is None), ordered by sort_order.Nsuccessr   keylabel
sort_orderstatusdataerrorr0   messager1   )r#   queryr   filterr   is_order_byr.   allr   r,   r-   	Exceptionr   )r&   rowsr   es       r   	get_types$CourseFamilyCommunityClass.get_types'   s    	F>?8EEII$OP:EEF	  $ "! 44q||\! 
  	F%#a&"EE	Fs0   A;C  =9B;6C  ;C   
C#
CC#C#r   c           	          U R                   R                  [        5      R                  [        R                  R                  S5      5      R                  [        R                  5      R                  5       nU R                   R                  [        5      R                  [        R                  U:H  [        R                  R                  S5      5      R                  5       nU Vs0 s H  oDR                  U_M     nnU R                   R                  [        5      R                  [        R                  U:H  [        R                  R                  S5      5      R                  5       nU(       a  UR                  OSn/ nU H  n	UR                  U	R                   5      nUR#                  U	R                   U	R$                  U	R&                  U	R                  S.U(       a  [)        U5      OSU(       a  UR*                  OSU(       a  UR,                  OSU(       a  UR.                  OSS.5        M     SXS.$ s  snf ! [0         a  n
S[3        U
5      / SS.s Sn
A
$ Sn
A
ff = f)zdFull structure for the course: each type with descripcion, seguimiento, evaluacion and observations.Nr+   )typerowr   r   r   r*   )r0   r1   observationsr2   )r0   r4   r1   rB   )r#   r5   r   r6   r   r7   r8   r.   r9   r	   r   r   r
   firstrB   getr   appendr,   r-   r   r   r   r   r:   r   )r&   r   
types_rowsr;   r   row_by_typeobs_rowrB   resulttr<   s              r   get_by_course_id+CourseFamilyCommunityClass.get_by_course_id:   s   %	\>?8EEII$OP:EEF	  89.88IE.;;??E   LPP4a>>A4KPCD9CCyP9FFJJ4P   4;7//LFOOADD)#$44WXWcWcd./<?T451==4451==423!,,    (VV) Q*  	\%#a&"VZ[[	\s1   C%H> 'H9=D;H> 9H> >
I"II"I"r   c                      U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSSS.$ S[        U5      S.$ ! [         a  nS[        U5      SS.s SnA$ SnAff = f)z&Get one course_family_community by id.r2   Registro no encontrado.Nr3   r*   r/   )	r#   r5   r	   r6   r   rC   r   r:   r   r&   r   rA   r<   s       r   	get_by_id$CourseFamilyCommunityClass.get_by_idc   s    
	H89255;< 
 ")6OY]^^'c1BCC 	H%#a&$GG	Hs$   AA* A* *
B4BBBc                 Z    U R                   R                  [        5      R                  [        R                  U:H  [        R
                  R                  S5      5      R                  5       nSSU(       a  UR                  OS0S.$ ! [         a  nS[        U5      SS.s SnA$ SnAff = f)z0Get observations for section 5 (one per course).Nr*   rB   r/   r2   r3   )r#   r5   r
   r6   r   r   r7   rC   rB   r:   r   )r&   r   rA   r<   s       r   get_observations+CourseFamilyCommunityClass.get_observationsq   s    	HCD9CCyP9FFJJ4P   (.VY#BRBR_c1dee 	H%#a&$GG	Hs   BB 
B*B%B*%B*rB   c           
      h    U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       n[        R                  " 5       nUb  U=(       d    SR                  5       OSnU(       a  U=(       d    SUl	        XCl
        SUl        O/U R                   R                  [        UU=(       d    SUUSS9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)zECreate or update observations for the course (one row per course_id).N )r   rB   r   r   r   r*   zObservaciones guardadas.r0   r4   r2   )r#   r5   r
   r6   r   rC   r   nowstriprB   r   r   addcommitr:   rollbackr   )r&   r   rB   rA   rX   textr<   s          r   set_observations+CourseFamilyCommunityClass.set_observations   s    	:CD=GG9TU 
 ,,.C3?3KL&B--/QSD#'<4 #& #' A'!%"!$!%  GGNN'4NOO 	:GG%#a&99	:s   C2C5 5
D1?'D,&D1,D1r1   c                 0    UR                  S5      nUR                  S5      nUb  Uc  SSS.$ [        U5      n[        U5      nUR                  S5      =(       d    SR                  5       =(       d    SnUR                  S	5      =(       d    SR                  5       =(       d    SnUR                  S
5      =(       d    SR                  5       =(       d    Sn[        R                  " 5       nU R
                  R                  [        5      R                  [        R                  U:H  [        R                  U:H  5      R                  5       nU(       ac  XHl        XXl        Xhl        Xxl        SUl        U R
                  R#                  5         U R
                  R%                  U5        UR&                  n	Sn
On[        UUUUUUUSS9nU R
                  R)                  U5        U R
                  R#                  5         U R
                  R%                  U5        UR&                  n	Sn
SU;   a   U R+                  X!R                  S5      5        SX[-        U5      S.$ ! [.         a2  nU R
                  R1                  5         S[3        U5      S.s SnA$ SnAff = f)ziCreate or update one row by (course_id, family_community_strategy_type_id). Optionally save observations.r   r   Nr2   z=course_id y family_community_strategy_type_id son requeridos.rW   r   rV   r   r   Registro actualizado.)r   r   r   r   r   r   r   r   zRegistro creado.rB   r*   r0   r4   r   r1   )rD   intrY   r   rX   r#   r5   r	   r6   r   r   rC   r   r   r   r   r   r[   refreshr   rZ   r^   r   r:   r\   r   )r&   r1   r   r   r   r   r   rX   rA   response_idmsgr<   s               r   store CourseFamilyCommunityClass.store   s   4	:-I049\0]- $E$M")6uvvII034U0V-88M28b??AITK88M28b??AITK((<06B==?G4J,,.C 89.88IE.PPTuu   "-"-!+#& #'  $!ff-0'6W + +)"!$!%	 C  $!ff(%%%i.1IJ'CT`adTeff 	:GG%#a&99	:s#   ,I H)I 
J#'J
JJc                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSS.$ SU;   a*  US   =(       d    SR                  5       =(       d    SUl        SU;   a*  US   =(       d    SR                  5       =(       d    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	S
U[        U5      S.$ ! [          a2  nU R                   R#                  5         S[%        U5      S.s SnA$ SnAff = f)zZUpdate one course_family_community by id (optional: descripcion, seguimiento, evaluacion).r2   rN   rW   r   rV   Nr   r   r*   ra   rb   )r#   r5   r	   r6   r   rC   rY   r   r   r   r   rX   r   r[   rd   r   r:   r\   r   )r&   r   r1   rA   r<   s        r   update!CourseFamilyCommunityClass.update   s2   	:''-- :;BBC]C`C`dfCfgmmoC")6OPP$#'#6#<""C"C"E"M$#'#6#<""C"C"E"Mt#"&|"4":!A!A!C!Kt'||~CGGNNGGOOC '4KSU_klo_pqq 	:GG%#a&99	:s%   AE
 C.E
 

F'F;FFc                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSS.$ [        R                  " 5       Ul        UR                  Ul	        U R                   R                  5         SSUS.$ ! [         a2  nU R                   R                  5         S[        U5      S.s SnA$ SnAff = f)zSoft delete (deleted_date).r2   rN   rW   r*   zRegistro eliminado.)r0   r4   r   N)r#   r5   r	   r6   r   rC   r   rX   r   r   r[   r:   r\   r   rO   s       r   delete!CourseFamilyCommunityClass.delete   s    
	:''-- :;BBC]C`C`dfCfgmmoC")6OPP'||~C"//CGGNN'4IQSTT 	:GG%#a&99	:s%   AB& A
B& &
C"0'CC"C"r%   N)__name__
__module____qualname____firstlineno__r   r'   r   r=   rc   rK   rP   rS   r   r   r^   dictrg   rj   rm   __static_attributes__ r   r   r!   r!   #   s    7 F3 F&'\# '\# '\RHC HC HH# H# H:# :Xc] :s :86:$ 6:3 6:p: :D :S :(: : :r   r!   N)__doc__r   typingr   r   r   sqlalchemy.ormr   app.backend.db.modelsr   r	   r
   r   rs   r   r!   ru   r   r   <module>rz      sC    L  & & " !. 4 Q: Q:r   