
    U+i              
          d 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
 ddl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fd       Zej)                  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j3                  d       ee
       ee      fdededefd       Zej7                  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)z<aspectos de ajuste y ajustes por curso (course_adjustments).    )	APIRouterDependsstatus)JSONResponse)get_db)get_current_active_user)	UserLoginStoreCourseAdjustmentUpdateCourseAdjustment)CourseAdjustmentClass)Sessionz/course_adjustmentszCourse Adjustments)prefixtagsz/aspectssession_userdbc           	         	 t        |      j                         }|j                  d      dk(  r/t        t        j
                  d|j                  dd      g d      S t        t        j                  dd	|j                  d
g       d      S # t        $ r2}t        t        j
                  dt        |      g d      cY d}~S d}~ww xY w)zbLista aspectos de ajuste (materiales de acceso, tiempo, tarea, otro) para construir el formulario.r   error  messagezError al listarr   r   datastatus_codecontent   OKr   N)	r   get_aspectsgetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_200_OK	Exceptionstr)r   r   resultes       N/var/www/pie360backend.cl/public_html/app/backend/routes/course_adjustments.pyr   r      s    
&r*668::h7*"AA#&6::iIZ3[egh  **"tVZZPR=ST
 	
  
=="s1vrB
 	

s$   AB .B 	C'C=CCz/by_course/{course_id}	course_idc           	         	 t        |      j                  |       }|j                  d      dk(  r/t        t        j
                  d|j                  dd      g d      S t        t        j                  d	d
|j                  dg       d      S # t        $ r2}t        t        j
                  dt        |      g d      cY d}~S d}~ww xY w)z[Estructura completa para el curso: cada aspecto con value, other_aspect_text y student_ids.)r&   r   r   r   r   Errorr   r   r   r   r   N)	r   get_by_course_idr   r   r   r   r    r!   r"   )r&   r   r   r#   r$   s        r%   r)   r)   1   s    
&r*;;i;P::h7*"AA#&6::i3Q[]^  **"tVZZPR=ST
 	
  
=="s1vrB
 	

s$   AB  .B 	C
'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)z/Obtiene un ajuste por id (incluye student_ids).r   r     r   Registro no encontradoNr   r   r   r   r   r   )
r   	get_by_idr   r   r   HTTP_404_NOT_FOUNDr    r!   r   r"   r*   r   r   r#   r$   s        r%   r.   r.   J   s    
&r*44R8::h7*"55#&6::iIa3blpq  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB -B 	C'C=CCz/storer   c                 Z   	 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}t        t        j                  d|j                  dd      |d	      S # t        $ r2}t        t        j                  dt        |      dd	      cY d}~S d}~ww xY w)zrCrea o actualiza un ajuste para (course_id, adjustment_aspect_id). Incluye other_aspect_text, value y student_ids.
model_dumpr   r   r   r   zError al guardarNr   r   r   r*      zRegistro guardado)hasattrr2   dictr   storer   r   r   r   HTTP_201_CREATEDr!   r"   )r   r   r   payloadr#   data_outr$   s          r%   r6   r6   c   s   
'.t\'B$//#		&r*009::h7*"AA#&6::iI[3\fjk  *0F);)G6::f%dTZT^T^_cTdMe//"vzz)EX/Yckl
 	
  
=="s1vtD
 	

s%   BC/ A#C/ /	D*8'D%D*%D*c           	      n   	 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      d|j                  d      id
      S c c}}w # t        $ r2}t        t        j                  dt        |      dd
      cY d}~S d}~ww xY w)zMActualiza un ajuste por id (opcional: other_aspect_text, value, student_ids).r2   T)exclude_unsetNr   r   r,   r   r-   r   r   r   zRegistro actualizador*   r   )r4   r2   r5   itemsr   updater   r   r   r/   r    r!   r   r"   )	r*   r   r   r   kvr8   r#   r$   s	            r%   r=   r=   ~   s7   
9@|9T$///5lplululwl}l}l  [Rdhdegh  DE  DQ[\^_[_  [R&r*11"g>::h7*"55#&6::iIa3blpq  **"vzz)E[/\gkmsmwmwx|m}f~
 	
 [R  
=="s1vtD
 	

s<   ?C9 
C3C3A!C9 3?C9 3C9 9	D4'D/)D4/D4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d      S # t        $ r2}t        t        j                  dt        |      dd      cY d}~S d}~ww xY w)u*   Borrado lógico del ajuste (deleted_date).r   r   r,   r   r-   Nr   r   r   zRegistro eliminador   )
r   deleter   r   r   r/   r    r!   r   r"   r0   s        r%   rA   rA      s    
&r*11"5::h7*"55#&6::iIa3blpq  **"vzz)EY/Zdhi
 	
  
=="s1vtD
 	

s$   AB .B 	C	'C>C	C	N)__doc__fastapir   r   r   fastapi.responsesr   app.backend.db.databaser   app.backend.auth.auth_userr   app.backend.schemasr	   r
   r   +app.backend.classes.course_adjustment_classr   sqlalchemy.ormr   course_adjustmentsr   r   intr)   r.   postr6   putr=   rA        r%   <module>rP      s   B . . * * > X X M " 
	  
#%&=>&/


 $
6 01 &&=>&/


 	
 2
0   &&=>&/


 	
 !
0 " &&=>&/



 	
 #
4   &&=>&/	


 
 
 		
 !
4 7# &&=>&/


 	
 $
rO   