
    ]if)                     f    d dl mZmZmZ d dlmZ d dlmZmZ d dlm	Z	 dee   fdZ
 G d d      Zy	)
    )OptionalAnyList)Session)datetimedate)InterconsultationModelreturnc                     | yt        | t              r| S t        | t              r%	 t        j                  | d      j                         S y# t
        $ r Y yw xY w)z(Convierte string a date si es necesario.N%Y-%m-%d)
isinstancer   strr   strptime
ValueError)values    T/var/www/pie360backend.cl/public_html/app/backend/classes/interconsultation_class.py_parse_dater      s]    }%%	$$UJ7<<>>   		s   #A 	AAc                       e Zd ZdefdZdedefdZdede	fdZ
dede	fd	Zddee   de	fdZdede	fdZdedede	fdZdede	fdZy
)InterconsultationClassdbc                     || _         y N)r   )selfr   s     r   __init__zInterconsultationClass.__init__   s	        objr
   c                    i d|j                   d|j                  d|j                  d|j                  d|j                  d|j
                  d|j                  r|j                  j                  d      nd	d
|j                  d|j                  d|j                  d|j                  d|j                  d|j                  d|j                  d|j                  d|j                   d|j"                  i d|j$                  d|j&                  d|j(                  d|j*                  d|j,                  d|j.                  d|j0                  d|j2                  d|j4                  d|j6                  d|j8                  d|j:                  d |j<                  r|j<                  j                  d      nd	d!|j>                  d"|j@                  d#|jB                  d$|jD                  |jF                  |jH                  |jJ                  |jL                  |jN                  |jP                  r|jP                  j                  d      nd	|jR                  |jT                  r|jT                  j                  d      nd	|jV                  r|jV                  j                  d%      nd	|jX                  r|jX                  j                  d%      d&
S d	d&
S )'z*Convierte un modelo a dict para respuesta.id
student_iddocument_type_id	full_name	gender_ididentification_number	born_dater   Nagenationality_idnative_languagelanguage_usually_usedaddress	region_id
commune_idcityresponsible_idcontact_phonecontact_emaileducational_establishmentcourse_levelprogram_type_idestablishment_addressestablishment_communeestablishment_phoneestablishment_emailadditional_information_idquestion_to_answerattached_documentsreferring_professionalreception_dateevaluation_summaryindications_supportprofessional_id"professional_identification_numberz%Y-%m-%d %H:%M:%S)
 professional_registration_numberprofessional_specialtyprocedence_idprocedence_otherprofessional_contact_phoneevaluation_daterequired_new_control_idnew_control_date
added_dateupdated_date)-r   r   r    r!   r"   r#   r$   strftimer%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   )r   r   s     r   _to_dictzInterconsultationClass._to_dict   sQ   -
#&&-
#..-
  4 4-
 	-

 -
 $S%>%>-
 s}}//
;RV-
 377-
 c00-
 s22-
 $S%>%>-
 s{{-
 -
 #..-
 CHH-
  c00!-
" S..#-
$ S..%-
& ()F)F'-
( C,,)-
* s22+-
, $S%>%>--
. $S%>%>/-
0 "3#:#:1-
2 "3#:#:3-
4 ()F)F5-
6 !#"8"87-
8 !#"8"89-
: %c&@&@;-
< I[I[c0099*Eae=-
> !#"8"8?-
@ "3#:#:A-
B s22C-
D 1#2X2XE-
F 140T0T&)&@&@ .. # 4 4*-*H*HKNK^K^s22;;JGdh'*'B'BMPMaMa 4 4 = =j IgkJM..#..112EF^bNQN^N^C,,556IJY-
 -	
X eiY-
 -	
r   r   c                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|r| j                  |      S dddS # t        $ r}dt        |      dcY d}~S d}~ww xY w)z!Obtiene una interconsulta por ID.errorInterconsulta no encontrada.statusmessageN)	r   queryr	   filterr   firstrK   	Exceptionr   r   r   r   es       r   getzInterconsultationClass.getJ   sx    	:''-- 67>>?U?X?X\^?^_eegC}}S))%2PQQ 	:%#a&99	:s$   AA' "A' '	B0B=BBr   c                 l   	 | j                   j                  t              j                  t        j                  |k(        j                  t        j                  j                               j                         }|r| j                  |      S dddS # t        $ r}dt        |      dcY d}~S d}~ww xY w)u6   Obtiene la interconsulta más reciente por student_id.rM   u3   No se encontró interconsulta para este estudiante.rO   N)r   rR   r	   rS   r   order_byr   descrT   rK   rU   r   )r   r   r   rW   s       r   get_by_student_idz(InterconsultationClass.get_by_student_idT   s    	:45.99ZGH03388:;	  }}S))%2ghh 	:%#a&99	:s$   B
B B 	B3B.(B3.B3Nc                    	 | j                   j                  t              }|"|j                  t        j                  |k(        }|j                  t        j                  j                               j                         }|D cg c]  }| j                  |       c}S c c}w # t        $ r}dt        |      dcY d}~S d}~ww xY w)z=Lista interconsultas, opcionalmente filtradas por student_id.NrM   rO   )r   rR   r	   rS   r   rZ   r   r[   allrK   rU   r   )r   r   rR   itemsirW   s         r   get_allzInterconsultationClass.get_allc   s    	:GGMM"89E%%;%F%F*%TUNN#9#<#<#A#A#CDHHJE.34DMM!$444 	:%#a&99	:s0   BB$ BB$ B$ $	C-C :C Cdatac           
       	   	 |j                  d      }|dddS | j                  j                  t              j	                  t        j
                  |k(  t        j                  |j                  dd      k(        j                  t        j                  j                               j                         }|r| j                  |j                  |      S t        d2i d|j                  d      d|j                  dd      d|j                  d      d	|j                  d	      d
|j                  d
      dt        |j                  d            d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d |j                  d       d!|j                  d!      d"t        |j                  d"            d#|j                  d#      d$|j                  d$      d%|j                  d%      d&|j                  d&      d'|j                  d'      d(|j                  d(      d)|j                  d)      d*|j                  d*      d+|j                  d+      d,t        |j                  d,            d-|j                  d-      d.t        |j                  d.            }| j                  j                  |       | j                  j                          | j                  j                  |       d/d0|j                  d1S # t         $ r2}| j                  j#                          dt%        |      dcY d}~S d}~ww xY w)3z
        Crea o actualiza interconsulta.
        Si ya existe una para el mismo student_id, actualiza; si no, crea nueva.
        r   NrM   zstudent_id es requerido.rO   r       r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   successz!Interconsulta creada exitosamenterP   rQ   r    )rX   r   rR   r	   rS   r   r    rZ   r   r[   rT   updater   addcommitrefreshrU   rollbackr   )r   rb   r   existingnew_objrW   s         r   storezInterconsultationClass.storen   s{   
D	:,/J!")6PQQ 45*55C*;;txxHZ\^?__ 03388:;  {{8;;55, *88L1*!%*<b!A* ((;/* ((;/	*
 '+hh/F&G* &dhh{&;<* HHUO*  $xx(89* !%): ;* '+hh/F&G* +* ((;/*  88L1* XXf%*  $xx(89*  #hh7!*" #hh7#*$ +/((3N*O%*& "XXn5'*( !%): ;)** '+hh/F&G+*, '+hh/F&G-*. %)HH-B$C/*0 %)HH-B$C1*2 +/((3N*O3*4 $(88,@#A5*6 $(88,@#A7*8 (,xx0H'I9*:  +4884D+EF;*< $(88,@#A=*> %)HH-B$C?*@ !%): ;A*B 4888<`3aC*D 26:\1]E*F (,xx0H'IG*H #hh7I*J "&*<!=K*L ,0884P+QM*N !,DHH5F,G HO*P )-1J(KQ*R "-TXX6H-I!JS*GX GGKK GGNNGGOOG$'4W_f_i_ijj 	:GG%#a&99	:s*   Q B7Q M/Q 	Q='Q82Q=8Q=c                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS h d}|j                         D ]:  \  }}t        ||      s||v rt        ||t        |             .t        |||       < t        j                         |_        | j                   j                          | j                   j                  |       dd|j                  dS # t        $ r2}| j                   j!                          dt#        |      dcY d}~S d}~ww xY w)	z&Actualiza una interconsulta existente.rM   rN   rO   >   r$   r;   rE   rG   re   z&Interconsulta actualizada exitosamenterf   N)r   rR   r	   rS   r   rT   r_   hasattrsetattrr   r   nowrI   rj   rk   rU   rl   r   )r   r   rb   r   date_fieldskeyr   rW   s           r   rh   zInterconsultationClass.update   s	   	:''-- 67>>?U?X?X\^?^_eegC")6TUU`K"jjl 1
U3$k)S+e*<=S%01  (||~CGGNNGGOOC '4\dgdjdjkk 	:GG%#a&99	:s+   AD &D =BD 	E 'D;5E ;E c                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS | j                   j                  |       | j                   j                          dddS # t        $ r2}| j                   j                          dt        |      dcY d}~S d}~ww xY w)zElimina una interconsulta.rM   rN   rO   re   z$Interconsulta eliminada exitosamenteN)r   rR   r	   rS   r   rT   deleterj   rU   rl   r   rV   s       r   rw   zInterconsultationClass.delete   s    		:''-- 67>>?U?X?X\^?^_eegC")6TUUGGNN3GGNN'4Z[[ 	:GG%#a&99	:s$   AB 9B 	C'C CCr   )__name__
__module____qualname__r   r   r	   dictrK   intr   rX   r\   r   ra   ro   rh   rw   rg   r   r   r   r      s    7 /
2 /
t /
b:c :c ::C :C :	:(3- 	:3 	:I:$ I:3 I:V: :D :S :2: : :r   r   N)typingr   r   r   sqlalchemy.ormr   r   r   app.backend.db.modelsr	   r   r   rg   r   r   <module>r      s0    & & " # 8(4. H: H:r   