
    wie              
       n   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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
/S9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      \" \	5      4S\S\S\4S jj5       r\R9                  S5      \" \5      \" \	5      4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g)    )	APIRouterstatusDepends)JSONResponse)ProgressStatusStudentClass)get_db)get_current_active_user)	UserLoginStoreProgressStatusStudentUpdateProgressStatusStudentProgressStatusStudentList)Optional)Sessionz/progress_status_studentszProgress Status Students)prefixtagsz/storeprogress_status_datasession_userdbc           	        #     [        U5      nUR                  U R                  5       5      n[        U[        5      (       aA  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$ ! [         a2  n[        [        R                  SS[        U5       3SS.S9s SnA$ SnAff = f7f)z0
Crea un nuevo estado de avance (Documento 18).
r   error  messagez Error guardando estado de avanceNr   r   datastatus_codecontent   z$Estado de avance creado exitosamenteidz Error creando estado de avance: )r   storedict
isinstancegetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_201_CREATED	Exceptionstr)r   r   r   progress_status_serviceresultes         ^C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\progress_status_students.pystore_progress_status_studentr,      s     !
"<R"@(../C/H/H/JKfd##

8(<(G"AA!%zz)5WX   //!::i1WX&**T*	
 		
  
===c!fXF
 	

sA   D A?C D <C  D 
C='C82C=3D 8C==D z/{id}r   c           	        #     [        U5      nUR                  U 5      n[        U[        5      (       aA  UR                  S5      S:X  a,  [	        [
        R                  SUR                  SS5      SS.S9$ [	        [
        R                  S	S
US.S9$ ! [         a2  n[	        [
        R                  SS[        U5       3SS.S9s SnA$ SnAff = f7f)z(
Obtiene un estado de avance por su ID.
r   r     r   zEstado de avance no encontradoNr   r      zEstado de avance encontrador   z#Error obteniendo estado de avance: )r   r#   r"   r!   r   r   HTTP_404_NOT_FOUNDHTTP_200_OKr&   r$   r'   r   r   r   r(   r)   r*   s         r+   get_progress_status_studentr3   ;   s     
"<R"@(,,R0fd##

8(<(G"55!%zz)5UV   **8
 	
  
==@QI
 	

sA   CA1B 5C6B C
C'C	CC	CC/progress_status_listc           	        #     [        U5      nUR                  U R                  U R                  S9n[	        U[
        5      (       aA  UR                  S5      S:X  a,  [        [        R                  SUR                  SS5      SS.S	9$ [        [        R                  S
U(       a  SOSUS.S	9$ ! [         a2  n[        [        R                  SS[        U5       3SS.S	9s SnA$ SnAff = f7f)zV
Lista los estados de avance almacenados.
Puede filtrarse por student_id y school_id.
)
student_id	school_idr   r   r   r   z Error listando estados de avanceNr   r   r/   zEstados de avance encontradosz$No hay estados de avance registradosz"Error listando estados de avance: )r   get_allr7   r8   r"   r!   r#   r   r   r$   r1   r&   r'   )r5   r   r   r(   r   r*   s         r+   list_progress_status_studentsr:   e   s     "
"<R"@&..+66*44 / 

 dD!!dhhx&8G&C"AA!#xx	3UV   **>B:Hn
 	
  
==?AxH
 	

sA   C-BB. C-	$B. -C-.
C*8'C%C* C-%C**C-c           	        #     [        U5      nUR                  XR                  SS95      n[        U[        5      (       aA  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$ ! [         a2  n[        [        R                  SS[        U5       3SS	.S
9s SnA$ SnAff = f7f)z*
Actualiza un estado de avance existente.
T)exclude_unsetr   r   r.   r   z#Error actualizando estado de avanceNr   r   r/   z)Estado de avance actualizado exitosamenter   r   z%Error actualizando estado de avance: )r   updater!   r"   r#   r   r   r0   r1   r&   r$   r'   )r   r   r   r   r(   r)   r*   s          r+   update_progress_status_studentr>      s    !
"<R"@(//4M4M\`4M4abfd##

8(<(G"55!%zz)5Z[   **!::i1\]&**T*	
 		
  
==B3q6(K
 	

sA   C?A>C  C?<C  ?C? 
C<
'C71C<2C?7C<<C?c           	        #     [        U5      nUR                  U 5      n[        U[        5      (       aA  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$ ! [         a2  n[        [        R                  SS[        U5       3SS.S9s SnA$ SnAff = f7f)u9   
Elimina lógicamente un estado de avance (soft delete).
r   r   r.   r   z!Error eliminando estado de avanceNr   r   r/   z'Estado de avance eliminado exitosamenter   z#Error eliminando estado de avance: )r   deleter"   r!   r#   r   r   r0   r1   r&   r$   r'   r2   s         r+   delete_progress_status_studentrA      s     
"<R"@(//3fd##

8(<(G"55!%zz)5XY   **!::i1Z[
 	
  
==@QI
 	

sA   C!A1B" 5C!6+B" !C!"
C,'CCC!CC!N) fastapir   r   r   fastapi.responsesr   1app.backend.classes.progress_status_student_classr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   r   typingr   sqlalchemy.ormr   progress_status_studentspostr,   r#   intr3   r:   putr>   r@   rA        r+   <module>rP      s   . . * X * > } }  "$&
$	% 
 x( &&=>&/)
4)
)
 	)
 ))
V g& &&=>&/'
'
'
 	'
 ''
R s#6O6Q%&=>&/+
3+
+
 	+
 $+
Z g& &&=>&/	*
*
5*
 *
 		*
 '*
X   ) &&=>&/'
'
'
 	'
 *'
rO   