
    U+i)                     p   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e
       ee      fdedededefd       Zej-                  d       edd       edd       edd       edd       ee
       ee      fdede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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j9                  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jA                  d"       ee
       ee      fd#ededefd)       Z y*)+    )	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           	         	 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)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         Y/var/www/pie360backend.cl/public_html/app/backend/routes/professional_teaching_courses.pyr"   r"      s    
04HHZcd::h7*"AA!%zz)5FG  **

62.
 	
  
==q6
 	

s$   AB  .B 	C
'C?C
C
z/by_course_school_career.zID del curso)descriptionzID del colegiozCareer type / specialty IDz;ID tipo de profesor (regular/especialista). -1 = no filtrar	school_id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)zLista profesionales (nombres, apellidos, rut, teacher_type_id) filtrados por curso, colegio, career_type_id y opcionalmente teacher_type_id.)r   r-   r.   r   r   r   r   r   r   r   r   r    r!   r   N)	r   )get_professionals_by_course_school_careerr#   r   r   r$   r%   r&   r'   )r   r-   r.   r   r   r   r(   r)   s           r*   r0   r0   6   s    
04^^)+	 _ 
 ::h7*"AA!%zz)5FG  **

62.
 	
  
=="s1vrB
 	

s$   A B #.B 	C'CCCzR/{professional_id}/{teaching_id}/{course_id}/{teacher_type_id}/{deleted_status_id}professional_idteaching_iddeleted_status_idc           	         	 t        |      j                  | ||||      }|j                  d      dk(  r?t        t        j                  d|j                  dd      |j                  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)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).)r1   r2   r   r   r3   r   r   r   r   r   r   r   r   r    r!   N)r   r#   r   r   r$   r%   r&   r'   )	r1   r2   r   r   r3   r   r   r(   r)   s	            r*   get_listr5   _   s    !
0488+#+/ 9 
 ::h7*"AA!%zz)5FG"JJvr2  **

62.
 	
  
==q6
 	

s$   A1B# 4.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)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'   r6   r   r   r(   r)   s        r*   r:   r:      s    
04>>rB::h7*"55!%zz)5PQ   **

6*
 	
  
=="s1vtD
 	

s$   AB -B 	C'C=CCr   c                    	 t        |d      r|j                  d      n4|j                         j                         D ci c]  \  }}|	|| c}}}t	        |      j                  | |      }|j                  d      dk(  rht        d|j                  dd	      v rt        j                  nt        j                  d|j                  dd	      v rd
nd|j                  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)u/   Edita una asignación por id (valor en la URL).
model_dumpT)exclude_unsetNr   r   zno encontradar    r8   r   r   r   r    u%   Asignación actualizada correctamenter   )hasattrr>   dictitemsr   updater#   r   r   r;   r$   r%   r&   r'   )	r6   r   r   r   kvpayloadr(   r)   s	            r*   editrH      sk   
9@|9T$///5lplululwl}l}l  [Rdhdegh  DE  DQ[\^_[_  [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<   ?D0 
D*D*BD0 ,=D0 *D0 0	E+9'E& E+&E+z/storec           	      8   	 t        | d      r| j                         n| j                         }t        |      j	                  |      }t        |t              rC|j                  d      dk(  r/t        t        j                  d|j                  dd      dd	      S t        t        j                  d
|j                  dd      d|j                  d      id	      S # t        $ r5}t        t        j                  ddt        |       dd	      cY d}~S d}~ww xY w)ud   Crea una asignación profesional - enseñanza - curso (una fila en professionals_teachings_courses).r>   r   r   r   r   u   Error al guardar asignaciónNr   r      u    Asignación creada correctamenter6   u   Error creando asignación: )rA   r>   rB   r   store
isinstancer#   r   r   r$   HTTP_201_CREATEDr&   r'   )r   r   r   rG   r(   r)   s         r*   rK   rK      s   
'.t\'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           	         	 t        |      j                  |       }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      dd      S t        t        j                  d	|j	                  dd
      dd      S # t        $ r5}t        t        j                  ddt        |       dd      cY d}~S d}~ww xY w)uR   Elimina una asignación por ID (borrado lógico: actualiza deleted_status_id = 1).r   r   r8   r   r9   Nr   r   r    u#   Asignación eliminada correctamenter   u   Error eliminando asignación: )r   deleterL   rB   r#   r   r   r;   r%   r&   r$   r'   r<   s        r*   rO   rO      s    
04;;B?fd#

8(<(G"55!%zz)5PQ   **!::i1VW
 	
  
==;CF8D
 	

s$   A,B /.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"   r0   r5   r:   putrH   postrK   rO        r*   <module>r^      s   5 5 * * > l l b "  )+
2	3!  ""#ST &&=>&/	"
"
"
 "
 		"
 U"
J ""#=>3N;3,<=1MN 1no%&=>&/%
%
%
 %
 	%

 %
 	%
 ?%
P ""#wx &&=>&/+
+
+
 +
 	+

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

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

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