
    Ϗ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  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\" \5      \" \	5      4S\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      \" SSS9\" \5      \" \	5      4S\S\S\S\S\4
S jj5       r\RA                  S5      \" SSS9\" \5      \" \	5      4S\S\S\S\4S  jj5       r g)!z0IV. Registro de actividades (familia/comunidad).    )	APIRouterDependsQuerystatus)JSONResponse)get_db)get_current_active_user)	UserLoginStoreCourseActivityRecordUpdateCourseActivityRecord)CourseActivityRecordClass)Session)Optionalz/course_activity_recordszCourse Activity Records)prefixtagsz/by_course/{course_id}NuX   Filtrar por sección: 1=family, 2=community, 3=other (o nombres family|community|other).)description	course_idsection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)u9   Lista registros por curso (y opcionalmente por sección).)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         -app/backend/routes/course_activity_records.pyr#   r#      s    
*2.??)?e::h7*"AA#&6::i3Q[]^  **"tVZZPR=ST
 	
  
=="s1vrB
 	

s$   AB +B 
C $B;5C ;C z/{id}.u?   Tabla/sección: family | community | other (ids son por tabla).idc                     [        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	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)uS   Obtiene un registro por id (requiere section: cada sección tiene su propia tabla).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)   r*   s         r+   r0   r0   3   s    
*2.88E::h7*"55#&6::iIa3blpq  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB *B 
C$B<6C<Cz/storer   c                 
    [        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$ [        [        R                  S
UR                  SS5      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Crea un registro de actividad.
model_dumpr   r   r   r   zError al guardarNr   r      zRegistro creador   )hasattrr4   dictr   storer$   r   r   r%   HTTP_201_CREATEDr'   r(   )r   r   r   payloadr)   r*   s         r+   r8   r8   P   s    
'.t\'B'B$//#		*2.44W=::h7*"AA#&6::iI[3\fjk  //"vzz)EV/Wagakaklrast
 	
  
=="s1vtD
 	

s$   BC	 :C	 	
D$C=7D=Du+   Tabla/sección: family | community | other.c                     [        US5      (       a  UR                  SS9O7UR                  5       R                  5        VVs0 s H  u  pVUc  M
  XV_M     snnnUR	                  SS5        [        U5      R                  X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      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)z0Actualiza un registro por id (requiere section).r4   T)exclude_unsetNr   r   r   r.   r   r/   r   r   r!   zRegistro actualizador   r   )r6   r4   r7   itemspopr   updater$   r   r   r1   r&   r'   r%   r(   )
r,   r   r   r   r   kvr:   r)   r*   s
             r+   r?   r?   j   s2   
 t\** OO$O/#'99;#4#4#6H#641!$!$#6H 	
 	It$*2.55b7K::h7*"55#&6::iIa3blpq  **"vzz)E[/\flfpfpqwfxy
 	
 I  
=="s1vtD
 	

s=   AD	 	DDA1D	 :D	 D	 	
E$D=7E=Ec                     [        U5      R                  X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 (requiere section).r   r   r.   r   r/   )r   r   r   r!   zRegistro eliminador   N)
r   deleter$   r   r   r1   r&   r'   r%   r(   r2   s         r+   rC   rC      s    
*2.55bB::h7*"55#&6::iIa3bc  **"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   0app.backend.classes.course_activity_record_classr   sqlalchemy.ormr   typingr   course_activity_recordsr$   intr(   r#   r0   postr8   putr?   rC        r+   <module>rS      s0   6 5 5 * * > 
 W " #%
#	$  56 #n &&=>&/

c]
 
 	
 7
8 W% U &&=>&/


 
 	
 &
8 h' &&=>&/

#

 	
 (
2 W% A &&=>&/ 
 

$ 
  
  
 	 
 & 
F ( A &&=>&/


 
 	
 )
rR   