
    U+i.                     :   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 ddlmZmZmZ ddlmZ dd	lmZ  ed
dg      Zej/                  d       edd       edd       edd       ee       ee      fdee   dee   dedede	f
d       Zej/                  d       edd       edd       ee       ee      f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j;                  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jC                  d        ed'd(       ee       ee      fd!ed)edede	fd*       Z"y)+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           	         	 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)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          R/var/www/pie360backend.cl/public_html/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'CCCz/by_student_career.zID del estudiantez#ID del tipo de carrera/especialidadcareer_type_idc           	         	 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)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'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 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'C=CCz/storer   c           	         	 t        |      j                  | 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      |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 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*B; -AB; ;	C6'C1+C61C6c                    	 |j                  d      }t        |      j                  | |      }|j                  d      dk(  r.t	        t
        j                  d|j                  dd      d	      S t	        t
        j                  d
|j                  dd      |j                  d      d	      S # t        $ r1}t	        t
        j                  dt        |      d	      cY d}~S d}~ww xY w)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/ 1=B/ /	C)8&C$C)$C)Tu:   True = soft delete (deleted_date), False = borrado físicosoftc                    	 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)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4Rd4C::h7*"55#&6::i3YZ  **"vzz)[/QR
 	
  
=="s1v6
 	

s$   AB  -B 	C&C=CC)#__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[   