
    ;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  SSKJrJrJr  SSKJr  SS	KJr  \" S
S/S9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      \" SSS9\" SSS9\" \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\R;                  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 \RC                  S 5      \" S'S(S9\" \5      \" \5      4S!\S)\S\S\	4S* jj5       r"g)+uD   students_professionals (relación estudiante-profesional con horas).    )	APIRouterDependsQuerystatus)JSONResponse)Session)get_current_active_user)get_db)	UserLoginStoreStudentProfessionalUpdateStudentProfessional)StudentProfessionalClass)Optionalz/students_professionalszStudents Professionals)prefixtags NzFiltrar por estudiante)descriptionzFiltrar por profesionalFz#Incluir registros eliminados (soft)
student_idprofessional_idinclude_deletedsession_userdbc           	          [        U5      R                  U UU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)zdLista registros de students_professionals. Opcionalmente filtrar por student_id y/o professional_id.)r   r   r   r   error  messageErrorr   r   datastatus_codecontent   OKr   N)r   getr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_200_OK	Exceptionstr)r   r   r   r   r   resultes          [C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routes\students_professionals.pylist_students_professionalsr-      s    
)"-11!++ 2 

 ::h7*"AA#&6::i3Q[]^  **"tVZZPR=ST
 	
  
=="s1vrB
 	

s$   AB	 +B	 	
C$B=7C=Cz/by_student_career.zID del estudiantez#ID del tipo de carrera/especialidadcareer_type_idc           	          [        U5      R                  U U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)zoLista profesionales asignados al estudiante para ese career_type_id (solo registros activos, sin deleted_date).)r   r.   r   r   r   r   r   r   r    r#   r$   r   N)	r   get_by_student_and_career_typer%   r   r   r&   r'   r(   r)   )r   r.   r   r   r*   r+   s         r,   r0   r0   2   s    
)"-LL!) M 
 ::h7*"AA#&6::i3Q[]^  **"tVZZPR=ST
 	
  
=="s1vrB
 	

s$   AB +B 
C$B<6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 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,   get_student_professionalr7   O   s    
)"-77;::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           	          [        U5      R                  U R                  5       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      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 en students_professionals.r   r   i  r   zError al crearNr   r       Creador   r1   )r   r   r   r1   r   )r   store
model_dumpr%   r   r   HTTP_400_BAD_REQUESTHTTP_201_CREATEDr(   r&   r)   )r   r   r   r*   r+   s        r,   store_student_professionalr?   h   s    
)"-33DOO4EF::h7*"77#&6::iIY3Zdhi  //"vzz)X/NX^XbXbciXjrxr|r|  ~B  sC  D
 	
  
=="s1vtD
 	

s%   A(B6 +A
B6 6
C/ $C*$C/*C/c                     UR                  SS9n[        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      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Actualiza un registro por id.T)exclude_unsetr   r   r3   r   r4   r   r   r    r#   Actualizador1   )r   r   r1   r   N)r<   r   updater%   r   r   r6   r'   r(   r&   r)   )r1   r   r   r   payloadr*   r+   s          r,   update_student_professionalrF      s    
///5)"-44RA::h7*"55#&6::i3YZ  **"vzz)]/S[a[e[efj[kl
 	
  
=="s1v6
 	

s$   A(B& +:B& &
C0#CCCTu:   True = soft delete (deleted_date), False = borrado físicosoftc                     [        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	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)u,   Elimina un registro por id (soft o físico).)rG   r   r   r3   r   r4   rB   r    r#   	Eliminador   N)
r   deleter%   r   r   r6   r'   r(   r&   r)   )r1   rG   r   r   r*   r+   s         r,   delete_student_professionalrK      s    
)"-44R4C::h7*"55#&6::i3YZ  **"vzz)[/QR
 	
  
=="s1v6
 	

s$   AB *B 
B=#B82B=8B=)#__doc__fastapir   r   r   r   fastapi.responsesr   sqlalchemy.ormr   app.backend.auth.auth_userr	   app.backend.db.databaser
   app.backend.schemasr   r   r   .app.backend.classes.student_professional_classr   typingr   students_professionalsr%   intboolr-   r0   r7   postr?   putrF   rJ   rK        r,   <module>r\      su   J 5 5 * " > * ^ ^ S "$
"	#  B %d8P Q%*4=V%W!%5Z[%&=>&/

c]
 
 	

 	
  
< 01C-@A1VW%&=>&/	


 
 		
 2
8 G$ &&=>&/


 	
 %
0 X& &&=>&/

"

 	
 '
0 G$ &&=>&/	


#
 
 		
 %
4 w' t)ef%&=>&/	



 
 		
 (
r[   