
    F4j"              
       2   d Z ddlmZ ddlmZmZmZmZ ddlm	Z	m
Z
 ddlmZ ddlmZ ddlmZmZmZ ddlmZ dd	lmZ dd
lmZ  eddg      Zej5                  d       edd       ee       ee      fdedededefd       Zej5                  d       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fd       Z ej5                  d       ee       ee      fdededefd       Z!ejE                  d       ee       ee      fdededefd       Z#ejI                  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")#u9   Document 27 – Psychopedagogical Evaluation Information.    )Path)	APIRouterDependsQuerystatus)FileResponseJSONResponse)get_db)get_current_active_user)	UserLogin$StorePsychopedagogicalEvaluationInfo%UpdatePsychopedagogicalEvaluationInfo) PsychopedagogicalEvaluationClass)Session)Optionalz/psychopedagogical_evaluationsz*Psychopedagogical Evaluation (Document 27))prefixtagsz/by_student/{student_id}Tu+   True = solo la más reciente; False = todas)description
student_idlatest_onlysession_userdbc                    	 t        |      j                  | |      }|j                  d      dk(  r/t        t        j
                  d|j                  dd      dd	      S t        t        j                  d
d|j                  d      d	      S # t        $ r2}t        t        j
                  dt        |      dd	      cY d}~S d}~ww xY w)u4   Obtiene evaluación(es) del estudiante (con scales).)r   r   r   error  messageErrorNr   r   datastatus_codecontent   OKr   )	r   get_by_student_idgetr	   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_200_OK	Exceptionstr)r   r   r   r   resultes         Y/var/www/pie360backend.cl/public_html/app/backend/routes/psychopedagogical_evaluations.pyr%   r%      s    
1"5GG!{ H 
 ::h7*"AA#&6::i3Q[_`  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB !-B 	C
'C?C
C
z5/by_student/{student_id}/cognitive_quantitative_imagec                    	 t        |      }|j                  |       }|st        t        j                  dddd      S t        |      j                  j                         }ddddd	d
dj                  |d      }t        ||t        |      j                        S # t        $ r2}t        t        j                  dt        |      dd      cY d}~S d}~ww xY w)zHDescarga la imagen IV cuantitativa guardada para el estudiante (doc 27).  zNo hay imagen guardada.Nr   r    z	image/pngz
image/jpegz	image/gifz
image/webpz	image/bmp)z.pngz.jpgz.jpegz.gifz.webpz.bmpzapplication/octet-stream)
media_typefilenamer   )r   %get_cognitive_quantitative_image_pathr	   r   HTTP_404_NOT_FOUNDr   suffixlowerr&   r   namer)   r'   r*   )r   r   r   svcpathr4   mediar,   s           r-    get_cognitive_quantitative_imager:   4   s    
.r288D"55#&3LVZ[  d""((* !!
 #f0
1 	 DUT$Z__MM 
=="s1vtD
 	

s#   <B AB 	C%'CCCc                    	 t        |      j                  |       }|j                  d      dk(  r/t        t        j
                  d|j                  dd      dd      S t        t        j                  d	|j                  dd
      dt        |j                  d            id      S # t        $ r2}t        t        j                  dt        |      dd      cY d}~S d}~ww xY w)zHElimina imagen IV cuantitativa (BD, carpeta folders y archivo en disco).r   r     r   r   Nr   r    r#   r$   clearedr   )r   "clear_cognitive_quantitative_imager&   r	   r   HTTP_400_BAD_REQUESTr(   boolr)   r'   r*   )r   r   r   r+   r,   s        r-   #delete_cognitive_quantitative_imagerA   T   s    
1"5XXYcd::h7*"77#&6::i3Q[_`  **!::i6"DI)>$?@
 	
  
=="s1vtD
 	

s%   AB( AB( (	C#1'CC#C#z/{id}idc                    	 t        |      j                  |       }|j                  d      dk(  r/t        t        j
                  d|j                  dd      dd      S t        t        j                  d	d
|j                  d      d      S # t        $ r2}t        t        j                  dt        |      dd      cY d}~S d}~ww xY w)u0   Obtiene una evaluación por id (incluye scales).r   r   r/   r   No encontradoNr   r    r#   r$   r   r   )
r   	get_by_idr&   r	   r   r3   r(   r)   r'   r*   rB   r   r   r+   r,   s        r-   rE   rE   q   s    
1"5??C::h7*"55#&6::i3Ycgh  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB -B 	C'C=CCz/storer   c                    	 t        | d      r| j                         n| j                         }t        |      j	                  |      }|j                  d      dk(  r/t        t        j                  d|j                  dd      dd	      S |j                  d
      |j                  d
      nd|j                  d      i}|j                  dd      }t        |rt        j                  nt        j                  |rdnd|j                  d|rdnd      |d	      S # t        $ r2}t        t        j                  dt        |      dd	      cY d}~S d}~ww xY w)uq   Crea o actualiza evaluación psicopedagógica: si ya existe una para el estudiante, se actualiza; si no, se crea.
model_dumpr   r   r<   r   zError al guardarNr   r    r   rB   createdT   r#   u   Evaluación creadau   Evaluación actualizadar   )hasattrrH   dictr   storer&   r	   r   r?   HTTP_201_CREATEDr(   r)   r'   r*   )r   r   r   payloadr+   data_out
is_createdr,   s           r-   rM   rM      s2   
'.t\'B$//#		1"5;;GD::h7*"77#&6::iI[3\fjk  *0F);)G6::f%dTZT^T^_cTdMeZZ	40
3=//6CUCU!+#!::i1EYrs 
 	
  
=="s1vtD
 	

s%   BD BD 	E$'EEEc                 j   	 t        |d      r|j                  d      n4|j                         j                         D ci c]  \  }}|	|| c}}}t	        |      j                  | |      }|j                  d      dk(  r/t        t        j                  d|j                  dd	      dd
      S t        t        j                  d|j                  dd      |j                  d      d
      S c c}}w # t        $ r2}t        t        j                  dt        |      dd
      cY d}~S d}~ww xY w)uJ   Actualiza evaluación por id (opcional: scales reemplazan los existentes).rH   T)exclude_unsetNr   r   r/   r   rD   r   r    r#   r$   r   r   )rK   rH   rL   itemsr   updater&   r	   r   r3   r(   r)   r'   r*   )	rB   r   r   r   kvrO   r+   r,   s	            r-   rU   rU      s   
9@|9T$///5!YY[..0[
QAMAqD[
 2"5<<RI::h7*"55#&6::i3Ycgh  **"vzz)T/JTZT^T^_eTfg
 	
[
  
=="s1vtD
 	

s<   ?C7 
C1C1A!C7 3=C7 1C7 7	D2 'D-'D2-D2c                    	 t        |      j                  |       }|j                  d      dk(  r.t        t        j
                  d|j                  dd      d      S t        t        j                  d|j                  dd	      d      S # t        $ r1}t        t        j                  d
t        |      d      cY d}~S d}~ww xY w)u*   Elimina evaluación por id (y sus scales).r   r   r/   r   rD   )r   r   r    r#   u   Evaluación eliminadar   N)
r   deleter&   r	   r   r3   r(   r)   r'   r*   rF   s        r-   rY   rY      s    
1"5<<R@::h7*"55#&6::i3YZ  **"vzz)E\/]^
 	
  
=="s1v6
 	

s$   AB -B 	C&C;CCN)&__doc__pathlibr   fastapir   r   r   r   fastapi.responsesr   r	   app.backend.db.databaser
   app.backend.auth.auth_userr   app.backend.schemasr   r   r   6app.backend.classes.psychopedagogical_evaluation_classr   sqlalchemy.ormr   typingr   psychopedagogical_evaluationsr&   intr@   r%   r:   rY   rA   rE   postrM   putrU        r-   <module>rj      su   ?  5 5 8 * > 
 d "  )+
6	7!  ""#=> d0]^%&=>&/	


 
 		
 ?
6 ""#Z[ &&=>&/


 	
 \
> %%&]^ &&=>&/


 	
 _
8 ""7+ &&=>&/


 	
 ,
0 ##H- &&=>&/

.

 	
 .
> ""7+ &&=>&/	


/
 
 		
 ,
8 %%g. &&=>&/


 	
 /
ri   