
    U+i1*              
          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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j1                  d       ee       ee	      fdededefd       Zej1                  d       ee       ee	      fdededefd       Zej1                  d       ee       ee	      fdededefd       Zej-                  d       e        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defd       ZejA                  d       ee       ee	      fdededefd       Z!y)     )	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           	      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 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          T/var/www/pie360backend.cl/public_html/app/backend/routes/individual_support_plans.pystore_individual_support_planr.      s    "
04(/,(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           	        K   	 t        |      }|j                  | d      }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)zF
    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           	        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 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A.B 2C3B C	C*CCCCCz/{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)uO   
    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           	        K   	 t        |      }|j                  | j                  | 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)zk
    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*5*C%C* C-%C**C-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 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: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           	        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)uI   
    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#A.B" 2C#3.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^   