
    i#                        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      \" \
5      \" \5      4S\S\S\S\4S jj5       r\R-                  S5      \" \
5      \" \5      4S\S\S\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\R7                  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\R?                  S5      \" \
5      \" \5      4S\S\S\4S jj5       rg)     )	APIRouterDependsQuerystatus)JSONResponse)get_db)get_current_active_user)	UserLoginStoreProfessionalTeachingCourse UpdateProfessionalTeachingCourse)ProfessionalTeachingCourseClass)Session)Optionalz/professional_teaching_coursesz&Professional Teaching Courses (assign))prefixtagsz./by_teacher_type/{teacher_type_id}/{course_id}teacher_type_id	course_idsession_userdbc           	          [        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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)zrLista asignaciones por tipo de profesional (regular/especialista por id) y course_id. Solo deleted_status_id == 0.r   error  messageError al listarr   r   datastatus_codecontent   OKr   N)	r   get_by_teacher_typegetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_200_OK	Exceptionstr)r   r   r   r   resultes         cC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\professional_teaching_courses.pyr"   r"      s    
04HHd::h7*"AA!%zz)5FG  **

62.
 	
  
==q6
 	

s$   AB	 +B	 	
C$B=7C=CzR/{professional_id}/{teaching_id}/{course_id}/{teacher_type_id}/{deleted_status_id}professional_idteaching_iddeleted_status_idc           	          [        U5      R                  U UUUUS9nUR                  S5      S:X  a<  [        [        R                  SUR                  SS5      UR                  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)u   Lista asignaciones profesional-enseñanza-curso. Filtros en URL: professional_id, teaching_id, course_id, teacher_type_id, deleted_status_id (usar -1 para no filtrar por ese campo).)r+   r,   r   r   r-   r   r   r   r   r   r   r   r   r    r!   N)r   r#   r   r   r$   r%   r&   r'   )	r+   r,   r   r   r-   r   r   r(   r)   s	            r*   get_listr/   6   s    !
0488+#+/ 9 
 ::h7*"AA!%zz)5FG"JJvr2  **

62.
 	
  
==q6
 	

s$   A,B /+B 
C%$C	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)u1   Obtiene una asignación por id (valor en la URL).r   r     r      Asignación no encontradaNr   r   r    r!   r   r   )
r   	get_by_idr#   r   r   HTTP_404_NOT_FOUNDr%   r&   r$   r'   r0   r   r   r(   r)   s        r*   r4   r4   e   s    
04>>rB::h7*"55!%zz)5PQ   **

6*
 	
  
=="s1vtD
 	

s$   AB *B 
C$B<6C<Cr   c                     [        US5      (       a  UR                  SS9O7UR                  5       R                  5        VVs0 s H  u  pEUc  M
  XE_M     snnn[	        U5      R                  X5      nUR                  S5      S:X  ai  [        SUR                  SS	5      ;   a  [        R                  O[        R                  SUR                  SS	5      ;   a  S
OSUR                  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)u/   Edita una asignación por id (valor en la URL).
model_dumpT)exclude_unsetNr   r   zno encontradar    r2   r   r   r   r    u%   Asignación actualizada correctamenter   )hasattrr8   dictitemsr   updater#   r   r   r5   r$   r%   r&   r'   )	r0   r   r   r   kvpayloadr(   r)   s	            r*   editrB      sh   
9@|9T9T$///5lplululwl}l}l  [Rldhde  DE[_[\[_l  [R04;;BH::h7*9HFJJW`bdLe9eF55kq  lQ  lQ%4

9b8Q%QcWZ%zz)4   **!::i1XY

6*
 	
 [R&  
=="s1vtD
 	

s=   AD3 	D-D-BD3 2:D3 -D3 3
E,=$E'!E,'E,z/storec           	      >    [        U S5      (       a  U R                  5       OU R                  5       n[        U5      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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)ud   Crea una asignación profesional - enseñanza - curso (una fila en professionals_teachings_courses).r8   r   r   r   r   u   Error al guardar asignaciónNr   r      u    Asignación creada correctamenter0   u   Error creando asignación: )r;   r8   r<   r   store
isinstancer#   r   r   r$   HTTP_201_CREATEDr&   r'   )r   r   r   rA   r(   r)   s         r*   rE   rE      s
   
'.t\'B'B$//#		04::7Cfd##

8(<(G"AA!%zz)5ST   //!::i1STvzz$/0
 	
  
==8QA
 	

s$   B C  #<C   
D*'DDDc           	          [        U5      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)uR   Elimina una asignación por ID (borrado lógico: actualiza deleted_status_id = 1).r   r   r2   r   r3   Nr   r   r    u#   Asignación eliminada correctamenter   u   Error eliminando asignación: )r   deleterF   r<   r#   r   r   r5   r%   r&   r$   r'   r6   s        r*   rI   rI      s    
04;;B?fd##

8(<(G"55!%zz)5PQ   **!::i1VW
 	
  
==;CF8D
 	

s$   A/B 2+B 
C('CCCN) fastapir   r   r   r   fastapi.responsesr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   6app.backend.classes.professional_teaching_course_classr   sqlalchemy.ormr   typingr   professional_teaching_coursesr#   intr"   r/   r4   putrB   postrE   rI        r*   <module>rX      s>   5 5 * * > l l b "  )+
2	3!  ""#ST &&=>&/	"
"
"
 "
 		"
 U"
J ""#wx &&=>&/+
+
+
 +
 	+

 +
 +
 	+
 y+
\ ""7+ &&=>&/


 	
 ,
@ ""7+ &&=>&/	


*
 
 		
 ,
D ##H- &&=>&/$

)$
$
 	$
 .$
N %%g. &&=>&/#
#
#
 	#
 /#
rW   