
    ˑi1*              
       *   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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\R1                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R1                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R1                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R-                  S5      \" 5       \" \5      \" \	5      4S\S\S\4S jj5       r\R=                  S5      \" \5      \" \	5      4S\S\S\S\4S jj5       r\RA                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r!g)     )	APIRouterstatusDepends)JSONResponse)IndividualSupportPlanClass)get_db)get_current_active_user)	UserLoginStoreIndividualSupportPlanUpdateIndividualSupportPlanIndividualSupportPlanList)Optional)Sessionz/individual_support_planszIndividual Support Plans)prefixtagsz/storeisp_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)z8
Crea un nuevo Plan de Apoyo Individual (Documento 22).

model_dumpr   error  messagez(Error guardando Plan de Apoyo IndividualNr   r   datastatus_codecontent   z,Plan de Apoyo Individual creado exitosamenteidz(Error creando Plan de Apoyo Individual: )r   hasattrr   dictstore
isinstancegetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_201_CREATED	Exceptionstr)r   r   r   isp_servicer   resultes          ^C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\individual_support_plans.pystore_individual_support_planr.      s    "
04(/,(G(Gx""$X]]_""4(fd##

8(<(G"AA!%zz)5_`   //!::i1_`&**T*	
 		
  
==Ec!fXN
 	

sA   D#B"C$ &D#'<C$ #D#$
D .'DD D#D  D#z/list/{student_id}
student_idc           	        #     [        U5      nUR                  U S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 todos los Planes de Apoyo Individual de un estudiante.
Nr/   	school_idr   r   r   r   )Error listando Planes de Apoyo Individualr   r      &Planes de Apoyo Individual encontradosz6No hay Planes de Apoyo Individual para este estudiante+Error listando Planes de Apoyo Individual: )r   get_allr$   r"   r%   r   r   r&   HTTP_200_OKr(   r)   )r/   r   r   r*   r   r,   s         r-   (list_individual_support_plans_by_studentr9   <   s     
04""jD"IdD!!dhhx&8G&C"AA!#xx	3^_   **GKC  RJ
 	
  
==HQQ
 	

sA   CA0B 4C5$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)z7
Obtiene un Plan de Apoyo Individual por su propio ID.
r   r     r   &Plan de Apoyo Individual no encontradoNr   r   r4   #Plan de Apoyo Individual encontrador   +Error obteniendo Plan de Apoyo Individual: )r   r%   r$   r"   r   r   HTTP_404_NOT_FOUNDr8   r(   r&   r)   r    r   r   r*   r+   r,   s         r-   !get_individual_support_plan_by_idrA   f   s     
04$fd##

8(<(G"55!%zz)5]^   **@
 	
  
==HQQ
 	

A   CA1B 5C6B C
C'C	CC	CCz/{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)uG   
Obtiene el último Plan de Apoyo Individual por el ID del estudiante.
r   r   r;   r   r<   Nr   r   r4   r=   r   r>   )r   get_by_student_idr$   r"   r%   r   r   r?   r8   r(   r&   r)   )r/   r   r   r*   r+   r,   s         r-   get_individual_support_planrE      s     
04..z:fd##

8(<(G"55!%zz)5]^   **@
 	
  
==HQQ
 	

rB   /isp_listc           	        #     [        U5      nUR                  U R                  U R                  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 los Planes de Apoyo Individual almacenados.
Puede filtrarse por student_id y school_id.
r1   r   r   r   r   r3   Nr   r   r4   r5   z-No hay Planes de Apoyo Individual registradosr6   )r   r7   r/   r2   r$   r"   r%   r   r   r&   r8   r(   r)   )rG   r   r   r*   r   r,   s         r-   list_individual_support_plansrI      s     "
04""**(( # 

 dD!!dhhx&8G&C"AA!#xx	3^_   **GKC  RA
 	
  
==HQQ
 	

sA   C-BB. C-	$B. -C-.
C*8'C%C* C-%C**C-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)z2
Actualiza un Plan de Apoyo Individual existente.
r   T)exclude_unsetr   r   r;   r   z+Error actualizando Plan de Apoyo IndividualNr   r   r4   z1Plan de Apoyo Individual actualizado exitosamenter    r   z-Error actualizando Plan de Apoyo Individual: )r   r!   r   r"   updater$   r%   r   r   r?   r8   r(   r&   r)   )r    r   r   r   r*   r   r+   r,   s           r-   update_individual_support_planrM      s(    "
04:A(L:Y:Yx"""6_g_l_l{_l  `A##B-fd##

8(<(G"55!%zz)5bc   **!::i1de&**T*	
 		
  
==J3q6(S
 	

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)uA   
Elimina lógicamente un Plan de Apoyo Individual (soft delete).
r   r   r;   r   z)Error eliminando Plan de Apoyo IndividualNr   r   r4   z/Plan de Apoyo Individual eliminado exitosamenter   z+Error eliminando Plan de Apoyo Individual: )r   deleter$   r"   r%   r   r   r?   r8   r(   r&   r)   r@   s         r-   delete_individual_support_planrP     s     
04##B'fd##

8(<(G"55!%zz)5`a   **!::i1bc
 	
  
==HQQ
 	

sA   C!A1B" 5C!6+B" !C!"
C,'CCC!CC!N)"fastapir   r   r   fastapi.responsesr   1app.backend.classes.individual_support_plan_classr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   r   typingr   sqlalchemy.ormr   individual_support_planspostr.   r%   intr9   rA   rE   rI   putrM   rO   rP        r-   <module>r_      sY   . . * X * > } }  "$&
$	% 
 x( &&=>&/*
(*
*
 	*
 )*
X 23 &&=>&/'
'
'
 	'
 4'
R m, &&=>&/'
'
'
 	'
 -'
R o. &&=>&/'
'
'
 	'
 /'
R s#*C*E%&=>&/+
'+
+
 	+
 $+
Z g& &&=>&/	+
+
)+
 +
 		+
 '+
Z   ) &&=>&/'
'
'
 	'
 *'
r^   