
    U+iN!              
          d dl 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e       ee	      fdededefd       Zej/                  d      d ee       ee	      fde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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y)    )	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           	      D  K   	 t        |      }t        | d      r| j                         n| j                         }|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w)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          N/var/www/pie360backend.cl/public_html/app/backend/routes/interconsultations.pystore_interconsultationr.      s
    
(,'.t\'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           	        K   	 t        |      }|j                  |       }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      dd	      S t        t        j                  d
|rdnd|d	      S # t        $ r5}t        t        j                  ddt        |       dd	      cY d}~S d}~ww xY ww)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           	        K   	 t        |      }|j                  |       }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      dd      S t        t        j                  d	d
|d      S # t        $ r5}t        t        j                  ddt        |       dd      cY d}~S d}~ww xY ww)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A.B 2C3B C	C*CCCCCz/by-id/{id}r   c           	        K   	 t        |      }|j                  |       }t        |t              rC|j                  d      dk(  r/t	        t
        j                  d|j                  dd      dd      S t	        t
        j                  d	d
|d      S # t        $ r5}t	        t
        j                  ddt        |       dd      cY d}~S d}~ww xY ww)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           	      N  K   	 t        |      }t        |d      r|j                  d      n|j                  d      }|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w)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@|9T$///5Z^ZcZcrvZcZwG,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           	        K   	 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w)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#A.B" 2C#3.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   