
    if)                     h    S SK JrJrJr  S SKJr  S SKJrJr  S SKJ	r	  S\\   4S jr
 " S S5      rg	)
    )OptionalAnyList)Session)datetimedate)InterconsultationModelreturnc                     U c  g[        U [        5      (       a  U $ [        U [        5      (       a&   [        R                  " U S5      R                  5       $ g! [
         a     gf = f)z(Convierte string a date si es necesario.N%Y-%m-%d)
isinstancer   strr   strptime
ValueError)values    ]C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\classes\interconsultation_class.py_parse_dater      sc    }%%	$$UJ7<<>>   		s   $A 
A%$A%c                       \ rS rSrS\4S jrS\S\4S jrS\	S\
4S jrS	\	S\
4S
 jrSS	\\	   S\
4S jjrS\S\
4S jrS\	S\S\
4S jrS\	S\
4S jrSrg)InterconsultationClass   dbc                     Xl         g Nr   )selfr   s     r   __init__InterconsultationClass.__init__   s        objr
   c                    0 SUR                   _SUR                  _SUR                  _SUR                  _SUR                  _SUR
                  _SUR                  (       a  UR                  R                  S5      OS	_S
UR                  _SUR                  _SUR                  _SUR                  _SUR                  _SUR                  _SUR                  _SUR                  _SUR                   _SUR"                  _0 SUR$                  _SUR&                  _SUR(                  _SUR*                  _SUR,                  _SUR.                  _SUR0                  _SUR2                  _SUR4                  _SUR6                  _SUR8                  _SUR:                  _S UR<                  (       a  UR<                  R                  S5      OS	_S!UR>                  _S"UR@                  _S#URB                  _S$URD                  _EURF                  URH                  URJ                  URL                  URN                  URP                  (       a  URP                  R                  S5      OS	URR                  URT                  (       a  URT                  R                  S5      OS	URV                  (       a  URV                  R                  S%5      OS	URX                  (       a  URX                  R                  S%5      S&.
E$ S	S&.
E$ )'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/   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   rJ   rK   rL   )r   r   s     r   _to_dict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                 "    U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       a  U R                  U5      $ SSS.$ ! [         a  nS[        U5      S.s SnA$ SnAff = f)z!Obtiene una interconsulta por ID.errorInterconsulta no encontrada.statusmessageN)	r   queryr	   filterr!   firstrN   	Exceptionr   r   r!   r   es       r   getInterconsultationClass.getJ   sx    	:''-- 67>>?U?X?X\^?^_eegC}}S))%2PQQ 	:%#a&99	:s$   A$A, 'A, ,
B6B	B	Br"   c                 x    U R                   R                  [        5      R                  [        R                  U:H  5      R                  [        R                  R                  5       5      R                  5       nU(       a  U R                  U5      $ SSS.$ ! [         a  nS[        U5      S.s SnA$ SnAff = f)u6   Obtiene la interconsulta más reciente por student_id.rQ   u3   No se encontró interconsulta para este estudiante.rS   N)r   rV   r	   rW   r"   order_byr!   descrX   rN   rY   r   )r   r"   r   r[   s       r   get_by_student_id(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 
B9!B4.B94B9Nc                     U R                   R                  [        5      nUb"  UR                  [        R                  U:H  5      nUR                  [        R                  R                  5       5      R                  5       nU Vs/ s H  o@R                  U5      PM     sn$ s  snf ! [         a  nS[        U5      S.s SnA$ SnAff = f)z=Lista interconsultas, opcionalmente filtradas por student_id.NrQ   rS   )r   rV   r	   rW   r"   r_   r!   r`   allrN   rY   r   )r   r"   rV   itemsir[   s         r   get_allInterconsultationClass.get_allc   s    	:GGMM"89E%%;%F%F*%TUNN#9#<#<#A#A#CDHHJE.34eMM!$e444 	:%#a&99	:s0   BB' B"B' "B' '
C	1C>C	C	datac           
      	    UR                  S5      nUc  SSS.$ U R                  R                  [        5      R	                  [        R
                  U:H  [        R                  UR                  SS5      :H  5      R                  [        R                  R                  5       5      R                  5       nU(       a  U R                  UR                  U5      $ [        S20 SUR                  S5      _SUR                  SS5      _SUR                  S5      _S	UR                  S	5      _S
UR                  S
5      _S[        UR                  S5      5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _SUR                  S5      _S UR                  S 5      _S!UR                  S!5      _S"[        UR                  S"5      5      _S#UR                  S#5      _S$UR                  S$5      _S%UR                  S%5      _S&UR                  S&5      _S'UR                  S'5      _S(UR                  S(5      _S)UR                  S)5      _S*UR                  S*5      _S+UR                  S+5      _S,[        UR                  S,5      5      _S-UR                  S-5      _S.[        UR                  S.5      5      _6nU R                  R                  U5        U R                  R                  5         U R                  R                  U5        S/S0UR                  S1.$ ! [          a2  nU R                  R#                  5         S[%        U5      S.s SnA$ SnAff = f)3zj
Crea o actualiza interconsulta.
Si ya existe una para el mismo student_id, actualiza; si no, crea nueva.
r"   NrQ   zstudent_id es requerido.rS   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   rH   rI   rJ   successz!Interconsulta creada exitosamenterT   rU   r!    )r\   r   rV   r	   rW   r"   r#   r_   r!   r`   rX   updater   addcommitrefreshrY   rollbackr   )r   ri   r"   existingnew_objr[   s         r   store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 B<Q M/Q 
R'Q?9R?Rc                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSS.$ 1 SknUR                  5        H?  u  pV[        X55      (       d  M  XT;   a  [        X5[        U5      5        M3  [        X5U5        MA     [        R                  " 5       Ul        U R                   R                  5         U R                   R                  U5        SSUR                  S.$ ! [         a2  nU R                   R!                  5         S[#        U5      S.s SnA$ SnAff = f)	z&Actualiza una interconsulta existente.rQ   rR   rS   >   r'   r>   rH   rJ   rl   z&Interconsulta actualizada exitosamenterm   N)r   rV   r	   rW   r!   rX   re   hasattrsetattrr   r   nowrL   rq   rr   rY   rs   r   )r   r!   ri   r   date_fieldskeyr   r[   s           r   ro   InterconsultationClass.update   s    	:''-- 67>>?U?X?X\^?^_eegC")6TUU`K"jjl
3$$)+e*<=%0 +  (||~CGGNNGGOOC '4\dgdjdjkk 	:GG%#a&99	:s+   AD 'D B
D 
E'EEEc                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSS.$ U R                   R                  U5        U R                   R                  5         SSS.$ ! [         a2  nU R                   R                  5         S[        U5      S.s SnA$ SnAff = f)zElimina una interconsulta.rQ   rR   rS   rl   z$Interconsulta eliminada exitosamenteN)r   rV   r	   rW   r!   rX   deleterq   rY   rs   r   rZ   s       r   r   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   r   )__name__
__module____qualname____firstlineno__r   r   r	   dictrN   intr   r\   ra   r   rg   rv   ro   r   __static_attributes__rn   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   rn   r   r   <module>r      s0    & & " # 8(4. H: H:r   