
    ]iH                         d dl mZmZmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZmZ dddd	d
Zdee   dee   fdZ G d d      Zy)    )OptionalAnyList)Session)text)datetimedate)IndividualSupportPlanModel&IndividualSupportPlanProfessionalModelz1er Trimestrez2do Trimestrez1er Semestrez2do Semestre)            	period_idreturnc                 4    | t         j                  |       S d S N)PERIOD_LABELSget)r   s    Z/var/www/pie360backend.cl/public_html/app/backend/classes/individual_support_plan_class.py_period_labelr      s    +4+@=Y'JdJ    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de	e   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)IndividualSupportPlanClassdbc                     || _         y r   )r   )selfr   s     r   __init__z#IndividualSupportPlanClass.__init__   s	    r   idr   c                    	 | j                   j                  t              j                  t        j                  |k(  t        j
                  dk(        j                         }|rl| j                   j                  t              j                  t        j                  |k(  t        j
                  dk(        j                         }g }|D ]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  r|j                  j!                  d      nd|j"                  r|j"                  j!                  d      nd|j$                  d        i d|j                  d|j&                  d|j(                  d|j*                  d|j,                  d	t/        |j,                        d
|j0                  d|j2                  d|j4                  r|j4                  j!                  d      ndd|j6                  d|j8                  d|j:                  d|j<                  d|j>                  r|j>                  j!                  d      ndd|j@                  d|jB                  d|jD                  i d|jF                  d|jH                  d|jJ                  d|jL                  d|jN                  d|jP                  d|jR                  d|jT                  d|jV                  d|jX                  d|jZ                  d |j\                  d!|j^                  d"|j`                  d#|jb                  d$|jd                  d%|jf                  |jh                  ||jj                  r|jj                  j!                  d&      nd|jl                  r|jl                  j!                  d&      ndd'S d(d)d*S # tn        $ r}tq        |      }d(|d*cY d}~S d}~ww xY w)+z@
        Obtiene un Plan de Apoyo Individual por su ID.
        N%Y-%m-%dr   professional_idcareer_type_idregistration_number
days_hours	from_dateto_datesupport_modalityr   
student_iddocument_type_id	school_idr   period_labelstudent_full_namestudent_identification_numberstudent_born_datestudent_agestudent_nee_idstudent_schoolstudent_course_idelaboration_datesocial_affective_strengthscognitive_strengthscurricular_strengthsfamily_strengthsintervention_ed_diferencial&intervention_ed_diferencial_strategiesintervention_psicopedagogia&intervention_psicopedagogia_strategiesintervention_fonoaudiologia&intervention_fonoaudiologia_strategiesintervention_psicologia"intervention_psicologia_strategies intervention_terapia_ocupacional+intervention_terapia_ocupacional_strategiesintervention_kinesiologia$intervention_kinesiologia_strategiesintervention_coeducador_sordo(intervention_coeducador_sordo_strategiesintervention_int_lengua_senas(intervention_int_lengua_senas_strategies%Y-%m-%d %H:%M:%Sfollow_up_paiprofessionals
added_dateupdated_dateerrorzFNo se encontraron datos para el Plan de Apoyo Individual especificado.statusmessage)9r   queryr
   filterr   deleted_datefirstr   individual_support_plan_idallappendr#   r$   r%   r&   r'   strftimer(   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   rL   rN   rO   	Exceptionstr)r   r   isprM   professionals_listprofeerror_messages           r   r   zIndividualSupportPlanClass.get   sM   G	A''-- :;BB*--3*774? eg 
  $.T U \ \:UUY[[:GG4O! #% 
 &(") 
D&--"gg+/+?+?*.*=*=/3/G/G&*ooLPNNT^^%<%<Z%H`dHL4<<#8#8#DZ^,0,A,A	/ 	
'#&&' #..' '(<(<'  	'
  ' #M#--$@' ()>)>' 4S5V5V' (WZWlWl)>)>)G)G
)Srv' "3??' %c&8&8' %c&8&8' ()>)>' 'UXUiUi(<(<(E(Ej(Qos' 1#2P2P'  *3+B+B!'" +C,D,D#'$ '(<(<%'& 233R3R''( =c>h>h)'* 233R3R+', =c>h>h-'. 233R3R/'0 =c>h>h1'2 .s/J/J3'4 9#:`:`5'6 78\8\7'8 B3CrCr9': 01N1N;'< ;C<d<d='> 4S5V5V?'@ ?@l@lA'B 4S5V5VC'D ?@l@lE'F &)%6%6%7RUR`R`#.."9"9:M"NfjVYVfVfC$4$4$=$=>Q$RlpM' 'R #*6~ 	AFM%-@@	As$   OO O 	O8O3-O83O8r*   c                 
	   	 | j                   j                  t              j                  t        j                  |k(  t        j
                  dk(        j                  t        j                  j                               j                         }|r| j                   j                          | j                   j                  t              j                  t        j                  |j                  k(        j                         }|D cg c]=  }|j
                  -t        |j
                  d      s&t        |j
                        r<|? }}g }|D ]  }|j!                  |j                  |j"                  |j$                  |j&                  |j(                  |j*                  r|j*                  j-                  d      nd|j.                  r|j.                  j-                  d      nd|j0                  d        i d|j                  d|j                  d|j2                  d|j4                  d	|j6                  d
t9        |j6                        d|j:                  d|j<                  d|j>                  r|j>                  j-                  d      ndd|j@                  d|jB                  d|jD                  d|jF                  d|jH                  r|jH                  j-                  d      ndd|jJ                  d|jL                  d|jN                  i d|jP                  d|jR                  d|jT                  d|jV                  d|jX                  d|jZ                  d|j\                  d|j^                  d|j`                  d|jb                  d |jd                  d!|jf                  d"|jh                  d#|jj                  d$|jl                  d%|jn                  d&|jp                  |jr                  ||jt                  r|jt                  j-                  d'      nd|jv                  r|jv                  j-                  d'      ndd(S d)d*d+S c c}w # tx        $ r}t{        |      }	d)|	d+cY d}~S d}~ww xY w),zO
        Obtiene un Plan de Apoyo Individual por el ID del estudiante.
        N__bool__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   rK   rP   zUNo se encontraron datos para el Plan de Apoyo Individual del estudiante especificado.rQ   )>r   rT   r
   rU   r*   rV   order_byr   descrW   
expire_allr   rX   rY   hasattrboolrZ   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   rH   rI   rL   rN   rO   r\   r]   )
r   r*   r^   all_professionalsprM   r_   r`   ra   rb   s
             r   get_by_student_idz,IndividualSupportPlanClass.get_by_student_ide   s   K	A''-- :;BB*55C*774? h14499;<UUW 
 ""$ %)GGMM2X$Y$`$`:UUY\Y_Y__%#% " ->  !_qAW\cdedrdrt~\  IM  NO  N\  N\  I]  !_  !_%'") 
D&--"gg+/+?+?*.*=*=/3/G/G&*ooLPNNT^^%<%<Z%H`dHL4<<#8#8#DZ^,0,A,A	/ 	
'#&&' #..' '(<(<'  	'
  ' #M#--$@' ()>)>' 4S5V5V' (WZWlWl)>)>)G)G
)Srv' "3??' %c&8&8' %c&8&8' ()>)>' 'UXUiUi(<(<(E(Ej(Qos' 1#2P2P'  *3+B+B!'" +C,D,D#'$ '(<(<%'& 233R3R''( =c>h>h)'* 233R3R+', =c>h>h-'. 233R3R/'0 =c>h>h1'2 .s/J/J3'4 9#:`:`5'6 78\8\7'8 B3CrCr9': 01N1N;'< ;C<d<d='> 4S5V5V?'@ ?@l@lA'B 4S5V5VC'D ?@l@lE'F &)%6%6%7RUR`R`#.."9"9:M"NfjVYVfVfC$4$4$=$=>Q$RlpM' 'R #*  7N  O  Oq !_t  	AFM%-@@	AsC   DQ 'Q,QQLQ Q Q 	R(Q=7R=RNr,   c                 	   	 | j                   j                  t              j                  t        j                  dk(        }|"|j                  t        j
                  |k(        }|"|j                  t        j                  |k(        }|j                  t        j                  j                               j                         }g }|D ]  }| j                   j                  t              j                  t        j                  |j                  k(  t        j                  j                  d            j                         }g }|D ]  }	|j                  |	j                  |	j                  |	j                   |	j"                  |	j$                  |	j&                  r|	j&                  j)                  d      nd|	j*                  r|	j*                  j)                  d      nd|	j,                  d        |j                  i d|j                  d|j
                  d|j.                  d|j                  d|j0                  d	t3        |j0                        d
|j4                  d|j6                  d|j8                  r|j8                  j)                  d      ndd|j:                  d|j<                  d|j>                  d|j@                  d|jB                  r|jB                  j)                  d      ndd|jD                  d|jF                  d|jH                  i d|jJ                  d|jL                  d|jN                  d|jP                  d|jR                  d|jT                  d|jV                  d|jX                  d|jZ                  d|j\                  d|j^                  d |j`                  d!|jb                  d"|jd                  d#|jf                  d$|jh                  d%|jj                  |jl                  ||jn                  r|jn                  j)                  d&      nd|jp                  r|jp                  j)                  d&      ndd'        |S # tr        $ r}
d(tu        |
      d)cY d}
~
S d}
~
ww xY w)*z
        Obtiene la lista de Planes de Apoyo Individual almacenados.
        Puede filtrarse por student_id y school_id.
        Nr!   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   rK   rP   rQ   );r   rT   r
   rU   rV   r*   r,   re   r   rf   rY   r   rX   is_rZ   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   rL   rN   rO   r\   r]   )r   r*   r,   rT   ispsresultr^   rM   r_   r`   ra   s              r   get_allz"IndividualSupportPlanClass.get_all   s   
Q	GGMM"<=DD*774?E %%?%J%Jj%XY$%?%I%IY%VW>>"<"?"?"D"D"FGKKMDF ; $.T U \ \:UUY\Y_Y__:GGKKDQ! #% 
 &(") 
D&--"gg+/+?+?*.*=*=/3/G/G&*ooLPNNT^^%<%<Z%H`dHL4<<#8#8#DZ^,0,A,A	/ 	
  '#&&' #..' '(<(<'  	'
  ' #M#--$@' ()>)>' 4S5V5V' (WZWlWl)>)>)G)G
)Srv' "3??' %c&8&8' %c&8&8' ()>)>' 'UXUiUi(<(<(E(Ej(Qos' 1#2P2P'  *3+B+B!'" +C,D,D#'$ '(<(<%'& 233R3R''( =c>h>h)'* 233R3R+', =c>h>h-'. 233R3R/'0 =c>h>h1'2 .s/J/J3'4 9#:`:`5'6 78\8\7'8 B3CrCr9': 01N1N;'< ;C<d<d='> 4S5V5V?'@ ?@l@lA'B 4S5V5VC'D ?@l@lE'F &)%6%6%7RUR`R`#.."9"9:M"NfjVYVfVfC$4$4$=$=>Q$RlpM' ');z M 	!q6 	s   QQ" "	R+Q>8R>Risp_datac                    	 d}|j                  d      ret        |j                  d      t              r5	 t        j                  |j                  d      d      j                         }n|j                  d      }d}|j                  d      ret        |j                  d      t              r5	 t        j                  |j                  d      d      j                         }n|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }d}|||| j                  j                  t              j                  t        j                  |k(  t        j                  |k(  t        j                  |k(  t        j                  dk(        }	|"|	j                  t        j                  |k(        }	|	j                         }|rad|v r|j                  d      |_
        d|v r|j                  d      |_        d|v r|j                  d      |_        |j                  d      |_        d	|v r|j                  d	      |_        d
|v r|j                  d
      |_        d|v r||_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r||_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_         d|v r|j                  d      |_!        d|v r|j                  d      |_"        d|v r|j                  d      |_#        d|v r|j                  d      |_$        d|v r|j                  d      |_%        d|v r|j                  d      |_&        d|v r|j                  d      |_'        d|v r|j                  d      |_(        d |v r|j                  d       |_)        d!|v r|j                  d!      |_*        d"|v r|j                  d"      |_+        d#|v r|j                  d#      |_,        t        jZ                         |_.        d$|v r|j                  d$g       }
|
r| j                  j                  t^              j                  t^        j`                  |jb                  k(  t^        j                  je                  d            jg                         }g }|
D ]W  }d}|j                  d%      ret        |j                  d%      t              r5	 t        j                  |j                  d%      d      j                         }n|j                  d%      }d}|j                  d&      ret        |j                  d&      t              r5	 t        j                  |j                  d&      d      j                         }n|j                  d&      }|ji                  |j                  d'      |j                  d(      |j                  d)      |j                  d*      |||j                  d+      d,       Z g }|D ]  }d-}|D ]  }|jj                  |d'   k(  s|jl                  |d(   k(  s*|jn                  |d)   k(  s=|jp                  |d*   k(  sP|jr                  |d%   k(  sc|jt                  |d&   k(  sv|jv                  |d+   k(  s|d'   |_5        |d(   |_6        |d)   |_7        |d*   |_8        |d%   |_9        |d&   |_:        |d+   |_;        t        jZ                         |_.        d|_        |ji                  |jb                         d.} n |rt_        |jb                  |d'   |d(   |d)   |d*   |d%   |d&   |d+   t        jZ                         t        jZ                         /
      }| j                  jy                  |        |D ]C  }|jb                  |vst        jZ                         |_        t        jZ                         |_.        E | j                  j{                          | j                  j}                  |       d0d1|jb                  d2S t        d8i d|j                  d      d|j                  d      d|j                  d      d|j                  d      d	|j                  d	      d
|j                  d
      d|d|j                  d      d|j                  d      d|j                  d      d|j                  d      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#      d3t        jZ                         d4t        jZ                         }| j                  jy                  |       | j                  j                          |j                  d$g       }
|
r|
D ]  }d}|j                  d%      ret        |j                  d%      t              r5	 t        j                  |j                  d%      d      j                         }n|j                  d%      }d}|j                  d&      ret        |j                  d&      t              r5	 t        j                  |j                  d&      d      j                         }n|j                  d&      }t_        |jb                  |j                  d'      |j                  d(      |j                  d)      |j                  d*      |||j                  d+      t        jZ                         t        jZ                         /
      }| j                  jy                  |        | j                  j{                          | j                  j}                  |       d0d5|jb                  d2S #  d}Y pxY w#  d}Y xY w#  d}Y xY w#  d}Y FxY w#  d}Y xY w#  d}Y *xY w# t        $ r2}| j                  j                          d6t        |      d7cY d}~S d}~ww xY w)9z
        Almacena un nuevo Plan de Apoyo Individual.
        Si ya existe un registro con los mismos student_id, school_id y document_type_id, lo actualiza.
        Nr0   r!   r5   r*   r,   r+   r   r.   r/   r1   r2   r3   r4   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rL   rM   r'   r(   r#   r$   r%   r&   r)   )r#   r$   r%   r&   r'   r(   r)   FT
rX   r#   r$   r%   r&   r'   r(   r)   rN   rO   success1Plan de Apoyo Individual actualizado exitosamenterR   rS   r   rN   rO   z,Plan de Apoyo Individual creado exitosamenterP   rQ    )Br   
isinstancer]   r   strptimer	   r   rT   r
   rU   r*   r,   r+   rV   r   rW   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   rL   nowrO   r   rX   r   rn   rY   rZ   r#   r$   r%   r&   r'   r(   r)   addcommitrefreshflushr\   rollback)r   rr   student_born_date_objelaboration_date_objr*   r,   r+   r   existing_ispqprofessionals_dataexisting_professionalsprocessed_professionals	prof_datafrom_date_objto_date_objprocessed_existing_idsnew_proffound_matchexisting_profnew_professionalnew_ispra   s                          r   storez IndividualSupportPlanClass.store  s   
y	$(!||/0hll+>?E5080A0A(,,ObBceo0p0u0u0w- -5LL9L,M)#' ||./hll+=>D4/7/@/@N`Aacm/n/s/s/u, ,4<<8J+K(!l3J [1I'||,>? [1I  L%)*?DTD`GGMM"<=DD.99ZG.88IE.??CSS.;;tC	 (!;!E!E!RSA wwy 8+.6ll<.HL+%14<LLAS4TL1(*-5\\+-FL*)1k)B&&(25=\\BU5VL22h>AINmAnL>&(25JL2 H,/7||M/JL,#x/2:,,?O2PL/#x/2:,,?O2PL/&(25=\\BU5VL2%14HL1/8;>FllKg>hL;(H47?||DY7ZL4)X58@E[8\L5%14<LLAS4TL10H<?G||Li?jL<;xGJR,,W  KALG0H<?G||Li?jL<;xGJR,,W  KALG0H<?G||Li?jL<;xGJR,,W  KALG,8;C<<Ha;bL878CFNllSwFxLC5ADLLLQsDtLA@HLOW||  ]J  PKLL.(:=E\\Je=fL:9XEHPU{H|LE2h>AINmAnL>=ILTLL  ZD  MELI2h>AINmAnL>=ILTLL  ZD  MELI"h.19o1NL.,4LLN) #h.)1or)J&)15?e1f1m1mB]]amapappBOOSSTXY2 #% / 35/); I,0M(}}[9#-immK.H##N%=8@8I8I)--XcJdfp8q8v8v8x 5>MM+4NM*.K(}}Y7#-immI.F#L%;6>6G6G	V_H`bl6m6r6r6t 3<--	2JK3::3<==AR3S2;--@P2Q7@}}EZ7[.7mmL.I-:+64=MMBT4U< +@ 24. )@ *>H*/K1G *$1$A$AXN_E`$`$1$@$@HM]D^$^$1$E$ERgIh$h$1$<$<@V$V$1$;$;x?T$T$1$9$9Xi=P$P$1$B$BhOaFb$b EMM^D_M$ACKL\C]M$@HPQfHgM$E?G?UM$<>F{>SM$;<DY<OM$9EMN`EaM$BAIM$>AEM$>$:$A$A-BRBR$S26K$)/*4 $/3Y?K4<=N4O3;<L3M8@AV8W/7/E.6{.C,4Y,?5=>P5Q/7||~194" 0 !%,< =U*>Z .D LM,//7MM=E\\^ :=E\\^ :L
  - (R&//  1 $#<<5$!).@!A$ #,,{3$ #,,{3	$
 #+,,/B"C$ /7ll;Z.[$ #8$ %LL7$  (||,<=$  (||,<=$ #+,,/B"C$ "6$ ,4<<8T+U$ %-LL1F$G$ &.\\2H%I$  "*.@!A!$" -5LL9V,W#$$ 8@||Dl7m%$& -5LL9V,W'$( 8@||Dl7m)$* -5LL9V,W+$, 8@||Dl7m-$. )15N(O/$0 4<<<@d3e1$2 2:>`1a3$4 =ELLIv<w5$6 +3,,7R*S7$8 6>\\Bh5i9$: /7ll;Z.[;$< :BFp9q=$> /7ll;Z.[?$@ :BFp9qA$B 'll?;C$D $<<>E$F &\\^G$GL GGKK GGMMO "*or!B!!3 !2I$(M }}[1%immK&@#F5080A0A)--P[B\^h0i0n0n0p -6MM+,FM"&K }}Y/%immI&>D3.6.?.?	i@XZd.e.j.j.l +4--	*BK'M3:::(16G(H'0}}5E'F,5MM:O,P#,==#>"/ +)27I)J#+<<>%-\\^($ GGKK 01C!2F GGNNGGOOG$ $Ijj O	504-4/3,b%=8<%;6:@5043.26  	GG!q6 	s   2x 3w# (Ax -3w-  T$x 3w78Ax =3x0Bx x x 2x x x +x >Bx B	x A8x K)x 53x(Ax -3x Dx #w*'x -w41x 7w>;x xx xx xx 	y('yyyc                    	 | j                   j                  t              j                  t        j                  |k(  t        j
                  dk(        j                         }|sdddS d|v r|j                  d      |_        d|v r|j                  d      |_	        d|v r|j                  d      |_
        d|v r|j                  d      |_        d	|v r|j                  d	      |_        d
|v r|j                  d
      |_        d|v rot        |j                  d      t              r:	 t!        j"                  |j                  d      d      j%                         |_        n|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v rot        |j                  d      t              r:	 t!        j"                  |j                  d      d      j%                         |_        n|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_        d|v r|j                  d      |_         d|v r|j                  d      |_!        d|v r|j                  d      |_"        d|v r|j                  d      |_#        d|v r|j                  d      |_$        d|v r|j                  d      |_%        d|v r|j                  d      |_&        d |v r|j                  d       |_'        d!|v r|j                  d!      |_(        d"|v r|j                  d"      |_)        d#|v r|j                  d#      |_*        d$|v r|j                  d$      |_+        d%|v r|j                  d%      |_,        d&|v r|j                  d&      |_-        t!        j\                         |_/        d'|v r)| j                   j                  t`              j                  t`        jb                  |k(  t`        j
                  dk(        je                         }|D ]  }t!        j\                         |_         |j                  d'g       }|D ]  }d}|j                  d(      ret        |j                  d(      t              r5	 t!        j"                  |j                  d(      d      j%                         }n|j                  d(      }d}	|j                  d)      ret        |j                  d)      t              r5	 t!        j"                  |j                  d)      d      j%                         }	n|j                  d)      }	ta        ||j                  d*      |j                  d+      |j                  d,      |j                  d-      ||	|j                  d.      t!        j\                         t!        j\                         /
      }
| j                   jg                  |
        | j                   ji                          | j                   jk                  |       d0d1|j                  d2S #  Y xY w#  Y xY w#  d}Y vxY w#  d}	Y xY w# tl        $ r2}| j                   jo                          dt        |      dcY d}~S d}~ww xY w)3zB
        Actualiza un Plan de Apoyo Individual existente.
        NrP   &Plan de Apoyo Individual no encontradorQ   r*   r+   r,   r   r.   r/   r0   r!   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   rL   rM   r'   r(   r#   r$   r%   r&   r)   rt   ru   rv   rw   )8r   rT   r
   rU   r   rV   rW   r   r*   r+   r,   r   r.   r/   ry   r]   r   rz   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   rL   r{   rO   r   rX   rY   r|   r}   r~   r\   r   )r   r   rr   r^   r   r   r   r   r   r   r   ra   s               r   updatez!IndividualSupportPlanClass.updateN  s   \	''-- :;BB*--3*774? eg 
 %G  x'!)l!;!X-'/||4F'G$h& ([ 9h& ([ 9"h.(05H(I%.(:4<LLA`4a1"h.hll+>?E080A0A(,,ObBceo0p0u0u0w- -5LL9L,MC)("*,,}"=8+%-\\2B%C"8+%-\\2B%C""h.(05H(I%!X-hll+=>D/7/@/@N`Aacm/n/s/s/u, ,4<<8J+KC(+x719>Z1[.$0*2,,7L*M'%1+3<<8N+O(!X-'/||4F'G$,82:,,?\2]/78C=E\\Jr=s:,82:,,?\2]/78C=E\\Jr=s:,82:,,?\2]/78C=E\\Jr=s:(H4.6ll;T.U+3x?9AFj9k61X=7?||Df7g4<HBJ,,O|B}?*h608=X0Y-5A;C<<Hn;o8.(:4<LLA`4a19XE?G||Lv?w<.(:4<LLA`4a19XE?G||Lv?w<(*$,LL$A!'||~C (*)-7])^)e)e:UUY[[:GG4O* #% '
 &< @M19M.@ &.\\/2%F"!3 !2I$(M }}[1%immK&@#F5080A0A)--P[B\^h0i0n0n0p -6MM+,FM"&K }}Y/%immI&>D3.6.?.?	i@XZd.e.j.j.l +4--	*BK'M35(16G(H'0}}5E'F,5MM:O,P#,==#>"/ +)27I)J#+<<>%-\\^($ GGKK 01C!2F GGNNGGOOC  $Nff iF5043.26  	GG!q6 	s   A%\$ (B?\$ (8\   B"\$ 8\ ;L \$ 3\A\$ 3\C8\$  \\$ \
\$ \\$ \!\$ $	]-']]]c                    	 | j                   j                  t              j                  t        j                  |k(  t        j
                  dk(        j                         }|sdddS t        j                         |_        t        j                         |_	        | j                   j                  t              j                  t        j                  |k(  t        j
                  dk(        j                         }|D ]4  }t        j                         |_        t        j                         |_	        6 | j                   j                          dddS # t        $ r2}| j                   j                          dt!        |      dcY d}~S d}~ww xY w)u   
        Elimina lógicamente un Plan de Apoyo Individual (soft delete).
        También elimina los profesionales asociados.
        NrP   r   rQ   ru   z/Plan de Apoyo Individual eliminado exitosamente)r   rT   r
   rU   r   rV   rW   r   r{   rO   r   rX   rY   r}   r\   r   r]   )r   r   r^   rM   r`   ra   s         r   deletez!IndividualSupportPlanClass.delete  sN   
&	''-- :;BB*--3*774? eg 
 %G   (||~C'||~C !GGMM*PQXX6QQUWW6CCtK ce 
 & 3$,LLN!$,LLN!3 GGNN $L 
  	GG!q6 	s%   A%E (C(E 	F'FFF)NN)__name__
__module____qualname__r   r   intr   r   rl   r   rq   dictr   r   r   rx   r   r   r   r      s    7 KAc KAc KAZOAC OAC OAbV(3- V8C= V\_ Vp~d ~s ~@
` ` ` `D+ + +r   r   N)typingr   r   r   sqlalchemy.ormr   
sqlalchemyr   r   r	   app.backend.db.modelsr
   r   r   r   r]   r   r   rx   r   r   <module>r      sV    & & "  # d 	KXc] Kx} KG Gr   