
    Ni                        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e       ee	      fde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dd       ee       ee	      fdededededef
d       ZejA                  d       edd       ee       ee	      fdedededefd        Z y)!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           	         	 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)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         S/var/www/pie360backend.cl/public_html/app/backend/routes/course_activity_records.pyr#   r#      s    
*2.??)]d?e::h7*"AA#&6::i3Q[]^  **"tVZZPR=ST
 	
  
=="s1vrB
 	

s$   AB !.B 	C'C CCz/{id}.u?   Tabla/sección: family | community | other (ids son por tabla).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)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WE::h7*"55#&6::iIa3blpq  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB  -B 	C	'C>C	C	z/storer   c                    	 t        | d      r| j                         n| j                         }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 # t        $ r2}t        t        j                  dt        |      dd	      cY d}~S d}~ww xY w)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$//#		*2.44W=::h7*"AA#&6::iI[3\fjk  //"vzz)EV/Wagakaklrast
 	
  
=="s1vtD
 	

s$   BC	 =C	 		D'C?9D?Du+   Tabla/sección: family | community | other.c                    	 t        |d      r|j                  d      n4|j                         j                         D ci c]  \  }}|	|| c}}}|j	                  dd       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)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   s/   
 t\* OO$O/#'99;#4#4#6H41a!-!Q$H 	
 	It$*2.55b'7K::h7*"55#&6::iIa3blpq  **"vzz)E[/\flfpfpqwfxy
 	
 I  
=="s1vtD
 	

s<   ?D
 
DDA4D
 =D
 D
 
	E'E :E E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 (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 	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   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   