
    uiN"              
          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  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\R/                  S5      S\" \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\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)InterconsultationClass)get_db)get_current_active_user)	UserLoginStoreInterconsultationUpdateInterconsultation)Optional)Sessionz/interconsultationsInterconsultations)prefixtagsz/storedatasession_userdbc           	      J  #     [        U5      n[        U S5      (       a  U R                  5       OU R                  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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,Crea una nueva Interconsulta (Documento 24).
model_dumpr   error  messagezError guardando interconsultaNr   r   r   status_codecontent   z!Interconsulta creada exitosamenteidzError creando interconsulta: )r   hasattrr   dictstore
isinstancegetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_201_CREATED	Exceptionstr)r   r   r   servicepayloadresultes          XC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\interconsultations.pystore_interconsultationr.      s    
(,'.t\'B'B$//#		w'fd##

8(<(G"AA!%zz)5TU   //!::i1TUvzz$/0
 	
  
==:3q6(C
 	

sA   D#B"C$ &D#'<C$ #D#$
D .'DD D#D  D#z	/list/allN
student_idc           	        #     [        U5      nUR                  U 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)z=Lista interconsultas, opcionalmente filtradas por student_id.)r/   r   r   r   r   zError listando interconsultasNr   r      zInterconsultas encontradaszNo hay interconsultaszError listando interconsultas: )r   get_allr#   r!   r$   r   r   r%   HTTP_200_OKr'   r(   )r/   r   r   r)   r   r,   s         r-   list_interconsultationsr4   9   s     
(,*5dD!!dhhx&8G&C"AA!#xx	3RS   **;?7E\
 	
  
==<SVHE
 	

sA   CA/B 3C4$B C
C#'C
CCCCz/by-student/{student_id}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)u6   Obtiene la interconsulta más reciente por student_id.r   r     r   Interconsulta no encontradaNr   r   r1   Interconsulta encontradar    Error obteniendo interconsulta: )r   get_by_student_idr#   r!   r$   r   r   HTTP_404_NOT_FOUNDr3   r'   r%   r(   )r/   r   r   r)   r+   r,   s         r-    get_interconsultation_by_studentr<   a   s     
(,**:6fd##

8(<(G"55!%zz)5RS   **5
 	
  
===c!fXF
 	

A   CA1B 5C6B C
C'C	CC	CCz/by-id/{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 una interconsulta por ID.r   r   r6   r   r7   Nr   r   r1   r8   r   r9   )r   r$   r#   r!   r   r   r;   r3   r'   r%   r(   r   r   r   r)   r+   r,   s         r-   get_interconsultationr@      s     
(,Rfd##

8(<(G"55!%zz)5RS   **5
 	
  
===c!fXF
 	

r=   z/{id}c           	      F  #     [        U5      n[        US5      (       a  UR                  SS9OUR                  SS9nUR	                  X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 una interconsulta existente.r   T)exclude_unsetr   r   r6   r   z Error actualizando interconsultaNr   r   r1   z&Interconsulta actualizada exitosamenter   r   z"Error actualizando interconsulta: )r   r    r   r!   updater#   r$   r   r   r;   r3   r'   r%   r(   )r   r   r   r   r)   r*   r+   r,   s           r-   update_interconsultationrD      s    
(,9@|9T9T$///5Z^ZcZcrvZcZw,fd##

8(<(G"55!%zz)5WX   **!::i1YZvzz$/0
 	
  
==?AxH
 	

sA   D!B C" $D!%<C" !D!"
D,'DDD!DD!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)zElimina una interconsulta.r   r   r6   r   r7   Nr   r   r1   z$Interconsulta eliminada exitosamenter   z Error eliminando interconsulta: )r   deleter#   r!   r$   r   r   r;   r3   r'   r%   r(   r?   s         r-   delete_interconsultationrG      s     
(,#fd##

8(<(G"55!%zz)5RS   **!::i1WX
 	
  
===c!fXF
 	

sA   C!A1B" 5C!6+B" !C!"
C,'CCC!CC!) fastapir   r   r   fastapi.responsesr   +app.backend.classes.interconsultation_classr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   typingr   sqlalchemy.ormr   interconsultationspostr.   r$   intr4   r<   r@   putrD   rF   rG        r-   <module>rV      s   . . * N * > Z Z  " 
	  " &&=>&/%

 %
%
 	%
 #%
P $ $%&=>&/$
$
$
 	$
 %$
N 23 &&=>&/$
$
$
 	$
 4$
N & &&=>&/$
$
$
 	$
 '$
N   &&=>&/	&
&

!&
 &
 		&
 !&
R 7# &&=>&/$
$
$
 	$
 $$
rU   