
    iZ&              
          S r SSKJrJrJrJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJrJrJrJr  SSKJr  SSKJr  SS	KJr  \" S
S/S9r\R1                  S5      \" \5      \" \	5      4S\S\4S jj5       r\R1                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R1                  S5      \" SSS9\" \5      \" \	5      4S\\   S\S\4S jj5       r\R;                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R1                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R;                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r \RC                  S5      \" \5      \" \	5      4S\S\S\S\4S jj5       r"\RG                  S5      \" \5      \" \	5      4S\S\S\4S  jj5       r#g)!zDRouter: 5. Estrategias de trabajo con la familia y con la comunidad.    )	APIRouterDependsQuerystatus)JSONResponse)get_db)get_current_active_user)	UserLoginStoreCourseFamilyCommunityUpdateCourseFamilyCommunity&StoreCourseFamilyCommunityObservations)CourseFamilyCommunityClass)Session)Optionalz/course_family_communityzCourse Family Community)prefixtagsz/typessession_userdbc           	          [        U5      R                  5       nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      / S.S9$ [        [        R                  SS	UR                  S
/ 5      S.S9$ ! [         a/  n[        [        R
                  S[        U5      / S.S9s SnA$ SnAff = f)u\   List strategy types (planificación, aprendizaje, evaluación, otras_acciones) for the form.r   error  messagezError al listarr   r   datastatus_codecontent   OKr   N)	r   	get_typesgetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_200_OK	Exceptionstr)r   r   resultes       ]C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\course_family_community.pyr    r       s    
+B/99;::h7*"AA#&6::iIZ3[egh  **"tVZZPR=ST
 	
  
=="s1vrB
 	

s$   AB +B 
C$B<6C<Cz/by_course/{course_id}	course_idc           	          [        U5      R                  U S9nUR                  S5      S:X  a-  [        [        R
                  SUR                  SS5      / SS.S	9$ [        [        R                  S
SUR                  S/ 5      UR                  S5      S.S	9$ ! [         a0  n[        [        R
                  S[        U5      / SS.S	9s SnA$ SnAff = f)zdFull structure for the course: each type with descripcion, seguimiento, evaluacion and observations.r)   r   r   r   r   ErrorN)r   r   r   observationsr   r   r   r   r-   )	r   get_by_course_idr!   r   r   r"   r#   r$   r%   r)   r   r   r&   r'   s        r(   r.   r.   /   s    
+B/@@9@U::h7*"AA#&6::i3Q[]ost  **

62. &

> :	
 	
  
=="s1vrSWX
 	

s$   AB ;B 
C"%CCCz/observationsN)descriptionc                     U c  [        [        R                  SSSS.S9$ [        U5      R	                  U S9nUR                  S5      S:X  a,  [        [        R                  S	UR                  S
S5      SS.S9$ [        [        R                  SSUR                  S5      S.S9$ ! [         a/  n[        [        R                  S	[        U5      SS.S9s SnA$ SnAff = f)z,Get observations for section 5 for a course.Ni  zcourse_id is requiredr   r   r+   r   r   r   r   r,   r   r   r   )
r   r   HTTP_400_BAD_REQUESTr   get_observationsr!   r"   r#   r$   r%   r/   s        r(   r3   r3   M   s    
"77#&3JTXY  ,B/@@9@U::h7*"AA#&6::i3Q[_`  **"tVZZ=OP
 	
  
=="s1vtD
 	

s)   B% AB% :*B% %
C/$CCCr   c                     [        U S5      (       a  U R                  5       OU R                  5       n[        U5      R	                  US   UR                  S5      S9nUR                  S5      S:X  a,  [        [        R                  SUR                  SS	5      S
S.S9$ [        [        R                  SUR                  SS5      S
S.S9$ ! [         a/  n[        [        R                  S[        U5      S
S.S9s S
nA$ S
nAff = f)z1Save observations for section 5 (one per course).
model_dumpr)   r-   )r)   r-   r   r   r   r   Error al guardarNr   r   r   zObservaciones guardadas.)hasattrr5   dictr   set_observationsr!   r   r   r"   r#   r$   r%   )r   r   r   payloadr&   r'   s         r(   store_observationsr;   k   s    
'.t\'B'B$//#		+B/@@k* ^4 A 
 ::h7*"AA#&6::iI[3\fjk  **"vzz)E_/`jno
 	
  
=="s1vtD
 	

s$   BC +C 
D$C?9D?Dz/{id}idc                     [        U5      R                  U 5      nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      SS.S9$ [        [        R                  S	S
UR                  S5      S.S9$ ! [         a/  n[        [        R                  S[        U5      SS.S9s SnA$ SnAff = f)z&Get one course_family_community by id.r   r     r   Registro no encontradoNr   r   r   r   r   r   )
r   	get_by_idr!   r   r   HTTP_404_NOT_FOUNDr#   r$   r"   r%   r<   r   r   r&   r'   s        r(   r@   r@      s    
+B/99"=::h7*"55#&6::iIa3blpq  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB *B 
C$B<6C<Cz/storec                 X    [        U S5      (       a  U R                  5       OU R                  5       n[        U5      R	                  U5      nUR                  S5      S:X  a,  [        [        R                  SUR                  SS5      SS.S	9$ UR                  S
5      b  UR                  S
5      OSUR                  S5      0n[        [        R                  SUR                  SS5      US.S	9$ ! [         a/  n[        [        R                  S[        U5      SS.S	9s SnA$ SnAff = f)zdCreate or update one row for (course_id, family_community_strategy_type_id). Optional: observations.r5   r   r   r   r   r6   Nr   r   r   r<      zRegistro guardado)r7   r5   r8   r   storer!   r   r   r"   HTTP_201_CREATEDr$   r%   )r   r   r   r:   r&   data_outr'   s          r(   rE   rE      s   
'.t\'B'B$//#		+B/55g>::h7*"AA#&6::iI[3\fjk  *0F);)G6::f%dTZT^T^_cTdMe//"vzz)EX/Yckl
 	
  
=="s1vtD
 	

s%   BC0 A!C0 0
D):$D$D)$D)c           	      h    [        US5      (       a  UR                  SS9O7UR                  5       R                  5        VVs0 s H  u  pEUc  M
  XE_M     snnn[	        U5      R                  X5      nUR                  S5      S:X  a,  [        [        R                  SUR                  SS	5      SS
.S9$ [        [        R                  SUR                  SS5      SUR                  S5      0S
.S9$ s  snnf ! [         a/  n[        [        R                  S[        U5      SS
.S9s SnA$ SnAff = f)zZUpdate one course_family_community by id (optional: descripcion, seguimiento, evaluacion).r5   T)exclude_unsetNr   r   r>   r   r?   r   r   r   zRegistro actualizador<   r   )r7   r5   r8   itemsr   updater!   r   r   rA   r#   r$   r"   r%   )	r<   r   r   r   kvr:   r&   r'   s	            r(   rK   rK      s4   
9@|9T9T$///5lplululwl}l}l  [Rldhde  DE[_[\[_l  [R+B/66rC::h7*"55#&6::iIa3blpq  **"vzz)E[/\gkmsmwmwx|m}f~
 	
 [R  
=="s1vtD
 	

s=   AC8 	C2C2AC8 5<C8 2C8 8
D1$D,&D1,D1c                     [        U5      R                  U 5      nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      SS.S9$ [        [        R                  S	UR                  SS
5      SS.S9$ ! [         a/  n[        [        R                  S[        U5      SS.S9s SnA$ SnAff = f)zSoft delete (deleted_date).r   r   r>   r   r?   Nr   r   r   zRegistro eliminador   )
r   deleter!   r   r   rA   r#   r$   r"   r%   rB   s        r(   rO   rO      s    
+B/66r:::h7*"55#&6::iIa3blpq  **"vzz)EY/Zdhi
 	
  
=="s1vtD
 	

s$   AB	 +B	 	
C$B=7C=C)$__doc__fastapir   r   r   r   fastapi.responsesr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   r   1app.backend.classes.course_family_community_classr   sqlalchemy.ormr   typingr   course_family_communityr!   r    intr.   r3   postr;   r@   rE   putrK   rO        r(   <module>r_      s   J 5 5 * * >  Y " #%
#	$  X&%&=>&/


 '
. 56 &&=>&/


 	
 7
: _-$T{C%&=>&/
}

 	
 .
: o. &&=>&/

0

 	
 /
8 W% &&=>&/


 	
 &
0 h' &&=>&/

$

 	
 (
4 W% &&=>&/	


%
 
 		
 &
4 ( &&=>&/


 	
 )
r^   