
    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)u9   tipos de adecuación curricular y adecuaciones por curso.    )	APIRouterDependsstatus)JSONResponse)get_db)get_current_active_user)	UserLoginStoreCourseCurricularAdequacyUpdateCourseCurricularAdequacy)CourseCurricularAdequacyClass)Sessionz/course_curricular_adequacieszCourse Curricular Adequacies)prefixtagsz/types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)uj   Lista tipos de adecuación curricular (De acceso, Objetivos OA, Plan de estudio, PACI) para el formulario.r   error  messagezError al listarr   r   datastatus_codecontent   OKr   N)	r   	get_typesgetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_200_OK	Exceptionstr)r   r   resultes       X/var/www/pie360backend.cl/public_html/app/backend/routes/course_curricular_adequacies.pyr   r      s    
.r2<<>::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)zpEstructura completa para el curso: cada tipo con applied, scope_text, strategies_text, subject_ids, 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)   )   s    
.r2CCiCX::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)uC   Obtiene una adecuación por id (incluye subject_ids y 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.   B   s    
.r2<<R@::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)u   Crea o actualiza una adecuación para (course_id, curricular_adequacy_type_id). Incluye applied, scope_text, strategies_text, subject_ids, 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   [   s   
'.t\'B$//#		.r288A::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)ul   Actualiza una adecuación por id (opcional: applied, scope_text, strategies_text, subject_ids, 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=   v   s7   
9@|9T$///5lplululwl}l}l  [Rdhdegh  DE  DQ[\^_[_  [R.r299"gF::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)u1   Borrado lógico de la adecuación (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299"=::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   4app.backend.classes.course_curricular_adequacy_classr   sqlalchemy.ormr   course_curricular_adequaciesr   r   intr)   r.   postr6   putr=   rA        r%   <module>rP      s   ? . . * * > h h ^ "(*
(	)   !!(+%&=>&/


 ,
. !!":; &&=>&/


 	
 <
0 !!'* &&=>&/


 	
 +
0 ""8, &&=>&/

'

 	
 -
4 !!'* &&=>&/	


(
 
 		
 +
4 $$W- &&=>&/


 	
 .
rO   