
    U+ie$              
          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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j?                  d       ee       ee	      fdededefd       Z y)    )	APIRouterstatusDepends)JSONResponse)$ProgressStatusIndividualSupportClass)get_db)get_current_active_user)	UserLogin$StoreProgressStatusIndividualSupport%UpdateProgressStatusIndividualSupport#ProgressStatusIndividualSupportList)Optional)Sessionz$/progress_status_individual_supportsz#Progress Status Individual Supports)prefixtagsz/storedatasession_userdbc           	        K   	 t        |      }|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 estado de avance PAI (Documento 19).
    r   error  messagez$Error guardando estado de avance PAINr   r   r   status_codecontent   z(Estado de avance PAI creado exitosamenteidz$Error creando estado de avance PAI: )r   storedict
isinstancegetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_201_CREATED	Exceptionstr)r   r   r   serviceresultes         _/var/www/pie360backend.cl/public_html/app/backend/routes/progress_status_individual_supports.py(store_progress_status_individual_supportr+      s     !
6r:tyy{+fd#

8(<(G"AA!%zz)5[\   //!::i1[\&**T*	
 		
  
==A#a&J
 	

sA   DA<C  D?C  D	C?
*C:4C?5D:C??Dz/{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)z4
    Obtiene un estado de avance PAI por su ID.
    r   r     r   z"Estado de avance PAI no encontradoNr   r      Estado de avance PAI encontrador   'Error obteniendo estado de avance PAI: )r   r"   r!   r    r   r   HTTP_404_NOT_FOUNDHTTP_200_OKr%   r#   r&   r   r   r   r'   r(   r)   s         r*   &get_progress_status_individual_supportr4   ;   s     
6r:Rfd#

8(<(G"55!%zz)5YZ   **<
 	
  
==DSVHM
 	

A   CA.B 2C3B C	C*CCCCCz/student/{student_id}
student_idc           	        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)uK   
    Obtiene el último estado de avance PAI por el ID del estudiante.
    r   r   r-   r   z5Estado de avance PAI no encontrado para el estudianteNr   r   r.   r/   r   r0   )r   get_by_student_idr!   r    r"   r   r   r1   r2   r%   r#   r&   )r6   r   r   r'   r(   r)   s         r*   1get_progress_status_individual_support_by_studentr9   e   s     
6r:**:6fd#

8(<(G"55!%zz)5lm   **<
 	
  
==DSVHM
 	

r5   /filtersc           	        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)zf
    Lista los estados de avance PAI almacenados.
    Puede filtrarse por student_id y school_id.
    )r6   	school_idr   r   r   r   z$Error listando estados de avance PAINr   r   r.   z!Estados de avance PAI encontradosz(No hay estados de avance PAI registradosz&Error listando estados de avance PAI: )r   get_allr6   r=   r!   r    r"   r   r   r#   r2   r%   r&   )r;   r   r   r'   r   r)   s         r*   (list_progress_status_individual_supportsr?      s     "
6r:))''  

 dD!dhhx&8G&C"AA!#xx	3YZ   **BF>Lv
 	
  
==CCF8L
 	

sA   C-BB, C-	"B, +C-,	C*5*C%C* C-%C**C-c           	        K   	 t        |      }|j                  | |j                  d            }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)z6
    Actualiza un estado de avance PAI existente.
    T)exclude_unsetr   r   r-   r   z'Error actualizando estado de avance PAINr   r   r.   z-Estado de avance PAI actualizado exitosamenter   r   z)Error actualizando estado de avance PAI: )r   updater    r!   r"   r   r   r1   r2   r%   r#   r&   )r   r   r   r   r'   r(   r)   s          r*   )update_progress_status_individual_supportrC      s     !
6r:DIIDI$ABfd#

8(<(G"55!%zz)5^_   **!::i1`a&**T*	
 		
  
==Fs1vhO
 	

sA   DA?C D?C D	D*C=7D8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)uE   
    Elimina lógicamente un estado de avance PAI (soft delete).
    r   r   r-   r   z%Error eliminando estado de avance PAINr   r   r.   z+Estado de avance PAI eliminado exitosamenter   z'Error eliminando estado de avance PAI: )r   deleter!   r    r"   r   r   r1   r2   r%   r#   r&   r3   s         r*   )delete_progress_status_individual_supportrF      s     
6r:#fd#

8(<(G"55!%zz)5\]   **!::i1^_
 	
  
==DSVHM
 	

sA   C#A.B" 2C#3.B" !C#"	C +*CC C#C  C#N)!fastapir   r   r   fastapi.responsesr   <app.backend.classes.progress_status_individual_support_classr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   r   typingr   sqlalchemy.ormr   #progress_status_individual_supportspostr+   r"   intr4   r9   r?   putrC   rE   rF        r*   <module>rU      s   . . * m * > \  \  "&/1
/	0' #
 %))(3 &&=>&/)

.)
)
 	)
 4)
V %((1 &&=>&/'
'
'
 	'
 2'
R %(()@A &&=>&/'
'
'
 	'
 B'
R %))#.3V3X%&=>&/+
0+
+
 	+
 /+
Z %((1 &&=>&/	*
*

/*
 *
 		*
 2*
X %++G4 &&=>&/'
'
'
 	'
 5'
rT   