
    j	i&              
          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)!us   Router: c) Estrategias y procedimientos de evaluación (eval_diversity_types, course_eval_diversity, observations).    )	APIRouterDependsQuerystatus)JSONResponse)get_db)get_current_active_user)	UserLoginStoreCourseEvalDiversityUpdateCourseEvalDiversity$StoreCourseEvalDiversityObservations)CourseEvalDiversityClass)Session)Optionalz/course_eval_diversityzCourse Eval Diversity)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)zKList eval diversity types (Proceso y avance, Anual de logros) 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_eval_diversity.pyr    r       s    
)"-77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)zOFull structure for the course: each type with strategies_text 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    
)"->>>S::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 c) 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  *"->>>S::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)z2Save observations for section c) (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$//#		)"->>k* ^4 ? 
 ::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_eval_diversity 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    
)"-77;::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)zhCreate or update one eval diversity row for (course_id, eval_diversity_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$//#		)"-33G<::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)zCUpdate one course_eval_diversity by id (optional: strategies_text).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)"-44RA::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    
)"-44R8::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   /app.backend.classes.course_eval_diversity_classr   sqlalchemy.ormr   typingr   course_eval_diversityr!   r    intr.   r3   postr;   r@   rE   putrK   rO        r(   <module>r_      s   y 5 5 * * >  U " !#
!	"  8$%&=>&/


 %
. 34 &&=>&/


 	
 5
: ?+$T{C%&=>&/
}

 	
 ,
: O, &&=>&/

.

 	
 -
8 7# &&=>&/


 	
 $
0 H% &&=>&/

"

 	
 &
4 7# &&=>&/	


#
 
 		
 $
4 g& &&=>&/


 	
 '
r^   