
    Fi                        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  SSKJr  SSKJr  SS	KJr  \" S
S/S9r\R/                  S5      \" SSS9\" \5      \" \	5      4S\S\\   S\S\4S jj5       r\R/                  S5      \" SSS9\" SSS9\" SSS9\" \5      \" \	5      4S\S\S\S\S\4
S jj5       r\R/                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R9                  S 5      \" \5      \" \	5      4S!\S\S\4S" jj5       r\R=                  S5      \" \5      \" \	5      4S\S!\S\S\4S# jj5       r\RA                  S5      \" \5      \" \	5      4S\S\S\4S$ jj5       r g)%uT   Router: Card 3 - Registro de logros de aprendizaje por curso, estudiante y período.    )	APIRouterDependsQuerystatus)JSONResponse)get_db)get_current_active_user)	UserLoginStoreCourseLearningAchievementUpdateCourseLearningAchievement)CourseLearningAchievementClass)Session)Optionalz/course_learning_achievementsz%Course Learning Achievements (Card 3))prefixtagsz/by_course/{course_id}Nu   Filtrar por período: 1, 2 o 3)description	course_id	period_idsession_userdbc           	          [        U5      R                  XS9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)z>Lista logros del curso; opcionalmente por period_id (1, 2, 3).)r   r   r   error  messageErrorr   r   datastatus_codecontent   OKr   N)	r   get_by_course_idgetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_200_OK	Exceptionstr)r   r   r   r   resultes         bC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\course_learning_achievements.pyr#   r#      s    
/3DDyDn::h7*"AA#&6::i3Q[]^  **"tVZZPR=ST
 	
  
=="s1vrB
 	

s$   AB +B 
C $B;5C ;C z/by_course_student_period.zID del cursozID del estudiantez1, 2 o 3
student_idc                     [        U5      R                  X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)zEObtiene el registro de logros por (course_id, student_id, period_id).)r   r,   r   r   r     r   r   Nr   r   r!   r"   r   r   )
r   get_by_course_student_periodr$   r   r   HTTP_400_BAD_REQUESTr&   r'   r%   r(   )r   r,   r   r   r   r)   r*   s          r+   r/   r/   0   s    
/3PP) Q 
 ::h7*"77#&6::i3Q[_`  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB *B 
C $B;5C ;C 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%Obtiene un registro de logros por id.r   r     r   No encontradoNr   r   r!   r"   r   r   )
r   	get_by_idr$   r   r   HTTP_404_NOT_FOUNDr&   r'   r%   r(   r1   r   r   r)   r*   s        r+   r5   r5   M   s    
/3==bA::h7*"55#&6::i3Ycgh  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB *B 
C$B<6C<Cz/storer   c                 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)zTCrea o actualiza logros por (course_id, student_id, period_id). period_id: 1, 2 o 3.
model_dumpr   r   r.   r   zError al guardarNr   r   r   r1      zRegistro guardador   )hasattrr9   dictr   storer$   r   r   r0   HTTP_201_CREATEDr'   r%   r(   )r   r   r   payloadr)   data_outr*   s          r+   r=   r=   f   s   
'.t\'B'B$//#		/399'B::h7*"77#&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                 d    [        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      UR                  S5      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)z6Actualiza un registro por id (achievements, comments).r9   T)exclude_unsetNr   r   r3   r   r4   r   r   r!   r"   r   r   )r;   r9   r<   itemsr   updater$   r   r   r6   r&   r'   r%   r(   )	r1   r   r   r   kvr?   r)   r*   s	            r+   rD   rD      s,   
9@|9T9T$///5lplululwl}l}l  [Rldhde  DE[_[\[_l  [R/3::2G::h7*"55#&6::i3Ycgh  **"vzz)T/JTZT^T^_eTfg
 	
 [R  
=="s1vtD
 	

s=   AC6 	C0C0AC6 5:C6 0C6 6
D/ $D*$D/*D/c                     [        U5      R                  U 5      nUR                  S5      S:X  a+  [        [        R
                  SUR                  SS5      S.S9$ [        [        R                  SUR                  SS	5      S.S9$ ! [         a.  n[        [        R                  S
[        U5      S.S9s SnA$ SnAff = f)zElimina un registro por id.r   r   r3   r   r4   )r   r   r   r!   zRegistro eliminador   N)
r   deleter$   r   r   r6   r&   r'   r%   r(   r7   s        r+   rH   rH      s    
/3::2>::h7*"55#&6::i3YZ  **"vzz)EY/Z[
 	
  
=="s1v6
 	

s$   AB *B 
B?#B:4B?:B?)!__doc__fastapir   r   r   r   fastapi.responsesr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   5app.backend.classes.course_learning_achievement_classr   sqlalchemy.ormr   typingr   course_learning_achievementsr$   intr#   r/   r5   postr=   putrD   rH        r+   <module>rX      sY   Z 5 5 * * > 
 a " (*
1	2   !!":;  %T7WX%&=>&/	

}
 
 		
 <
2 !!"=>3N;C-@A3J7%&=>&/


 
 	

 	
 ?
8 !!'* &&=>&/


 	
 +
0 ""8, &&=>&/

(

 	
 -
4 !!'* &&=>&/	


)
 
 		
 +
4 $$W- &&=>&/


 	
 .
rW   