
    U+iB                        d Z ddlmZmZmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZ  ed
dg      Zej/                  d       edd       ee       ee	      fdedee   dedefd       Zej/                  d       edd       edd       edd       ee       ee	      fdededededef
d       Zej/                  d       ee       ee	      fdededefd       Zej9                  d        ee       ee	      fd!ededefd"       Zej=                  d       ee       ee	      fded!ededefd#       ZejA                  d       ee       ee	      fdededefd$       Z y)%uL   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           	         	 t        |      j                  | |      }|j                  d      dk(  r/t        t        j
                  d|j                  dd      g d      S t        t        j                  d	d
|j                  dg       d      S # t        $ r2}t        t        j
                  dt        |      g d      cY d}~S d}~ww xY w)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         X/var/www/pie360backend.cl/public_html/app/backend/routes/course_learning_achievements.pyr#   r#      s    
/3DDydmDn::h7*"AA#&6::i3Q[]^  **"tVZZPR=ST
 	
  
=="s1vrB
 	

s$   AB !.B 	C'C CCz/by_course_student_period.zID del cursozID del estudiantez1, 2 o 3
student_idc                    	 t        |      j                  | ||      }|j                  d      dk(  r/t        t        j
                  d|j                  dd      dd	      S t        t        j                  d
d|j                  d      d	      S # t        $ r2}t        t        j                  dt        |      dd	      cY d}~S d}~ww xY w)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J) Q 
 ::h7*"77#&6::i3Q[_`  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB "-B 	C'C CCz/{id}idc                    	 t        |      j                  |       }|j                  d      dk(  r/t        t        j
                  d|j                  dd      dd      S t        t        j                  d	d
|j                  d      d      S # t        $ r2}t        t        j                  dt        |      dd      cY d}~S d}~ww xY w)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'C=CCz/storer   c                 Z   	 t        | d      r| j                         n| j                         }t        |      j	                  |      }|j                  d      dk(  r/t        t        j                  d|j                  dd      dd	      S |j                  d
      |j                  d
      nd|j                  d      i}t        t        j                  d|j                  dd      |d	      S # t        $ r2}t        t        j                  dt        |      dd	      cY d}~S d}~ww xY w)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$//#		/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C/ A#C/ /	D*8'D%D*%D*c                 j   	 t        |d      r|j                  d      n4|j                         j                         D ci c]  \  }}|	|| c}}}t	        |      j                  | |      }|j                  d      dk(  r/t        t        j                  d|j                  dd	      dd
      S t        t        j                  d|j                  dd      |j                  d      d
      S c c}}w # t        $ r2}t        t        j                  dt        |      dd
      cY d}~S d}~ww xY w)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@|9T$///5lplululwl}l}l  [Rdhdegh  DE  DQ[\^_[_  [R/3::2wG::h7*"55#&6::i3Ycgh  **"vzz)T/JTZT^T^_eTfg
 	
 [R  
=="s1vtD
 	

s<   ?C7 
C1C1A!C7 3=C7 1C7 7	D2 'D-'D2-D2c                    	 t        |      j                  |       }|j                  d      dk(  r.t        t        j
                  d|j                  dd      d      S t        t        j                  d|j                  dd	      d      S # t        $ r1}t        t        j                  d
t        |      d      cY d}~S d}~ww xY w)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 	C&C;CC)!__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   R 5 5 * * > 
 a " (*
1	2   !!":;  %T7WX%&=>&/	

}
 
 		
 <
2 !!"=>3N;C-@A3J7%&=>&/


 
 	

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

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

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