
    ƛi              
       t   S SK JrJrJrJr  S SKJr  S SKJr  S SK	J
r
  S SKJrJrJr  S SKJr  S SKJr  S SKJr  \" S	S
/S9r\R-                  S5      \" SSS9\" \
5      \" \5      4S\\   S\S\4S jj5       r\R-                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\R5                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\R9                  S5      \" \
5      \" \5      4S\S\S\S\4S jj5       r\R=                  S5      \" \
5      \" \5      4S\S\S\4S jj5       rg)    )	APIRouterDependsQuerystatus)JSONResponse)get_db)get_current_active_user)	UserLoginStoreSubjectUpdateSubject)SubjectClass)Session)Optionalz	/subjectsSubjects)prefixtags Nz-1 o omitir = no filtrar)description	school_idsession_userdbc           	          [        U5      R                  U S9nUR                  S5      S:X  a<  [        [        R                  SUR                  SS5      UR                  S/ 5      S.S	9$ [        [        R
                  S
SUR                  S/ 5      S.S	9$ ! [         a/  n[        [        R                  S[        U5      / S.S	9s SnA$ SnAff = f)zPLista asignaturas activas (deleted_date is None). Filtro opcional por school_id.)r   r   error  messagezError al listardatar   r   r   status_codecontent   OKN)r   getr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_200_OK	Exceptionstr)r   r   r   resultes        NC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\subjects.pyget_listr+      s    
b!%%	%:::h7*"AA!%zz)5FG"JJvr2  **

62.
 	
  
==q6
 	

s$   A(B ++B 
C!$CCCz/{id}idc                     [        U5      R                  U 5      nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      SS.S9$ [        [        R                  S	S
UR                  S5      S.S9$ ! [         a/  n[        [        R                  S[        U5      SS.S9s SnA$ SnAff = f)zObtiene un registro por id.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*   r0   r0   5   s    
b!++B/::h7*"55!%zz)5MN   **

6*
 	
  
=="s1vtD
 	

s$   AB *B 
C$B<6C<Cz/storer   c           	          [        U S5      (       a  U R                  5       OU R                  5       nUR                  S5      c  U(       a  UR                  US'   [        U5      R                  U5      nUR                  S5      S:X  a,  [        [        R                  SUR                  SS5      SS	.S
9$ UR                  S5      n[        [        R                  SUR                  SS5      Ub  UOSUR                  S5      0S	.S
9$ ! [         a/  n[        [        R                  S[        U5      SS	.S
9s SnA$ SnAff = f)uI   Crea un registro en subjects. school_id se toma del body o de la sesión.
model_dumpr   Nr   r   r   r   zError al guardarr   r   r      zRegistro creador,   )hasattrr4   dictr#   r   r   storer   r   r$   HTTP_201_CREATEDr&   r'   )r   r   r   payloadr(   createdr)   s          r*   r8   r8   V   s-   
'.t\'B'B$//#		;;{#+#/#9#9GK b!''0::h7*"AA!%zz)5GH   **V$//!::i1BC#*#6T6::dCS<T
 	
  
==q6
 	

s%   B3D	 6AD	 	
E$D=7E=Ec           	      h    [        US5      (       a  UR                  SS9O7UR                  5       R                  5        VVs0 s H  u  pEUc  M
  XE_M     snnn[	        U5      R                  X5      nUR                  S5      S:X  a,  [        [        R                  SUR                  SS	5      SS
.S9$ [        [        R                  SUR                  SS5      SUR                  S5      0S
.S9$ s  snnf ! [         a/  n[        [        R                  S[        U5      SS
.S9s SnA$ SnAff = f)zActualiza un registro por id.r4   T)exclude_unsetNr   r   r.   r   r/   r   r   r!   zRegistro actualizador,   r   )r6   r4   r7   itemsr   updater#   r   r   r1   r%   r&   r$   r'   )	r,   r   r   r   kvr:   r(   r)   s	            r*   r?   r?      s:   
9@|9T9T$///5lplululwl}l}l  [Rldhde  DE[_[\[_l  [Rb!((5::h7*"55!%zz)5MN   **!::i1GHvzz$/0
 	
 [R&  
==q6
 	

s=   AC8 	C2C2AC8 5<C8 2C8 8
D1$D,&D1,D1c                     [        U5      R                  U 5      nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      SS.S9$ [        [        R                  S	UR                  SS
5      SS.S9$ ! [         a/  n[        [        R                  S[        U5      SS.S9s SnA$ SnAff = f)u$   Borrado lógico: setea deleted_date.r   r   r.   r   r/   Nr   r   r!   zRegistro eliminador   )
r   deleter#   r   r   r1   r%   r&   r$   r'   r2   s        r*   rC   rC      s    
b!((,::h7*"55!%zz)5MN   **!::i1EF
 	
  
==q6
 	

s$   AB	 +B	 	
C$B=7C=C)fastapir   r   r   r   fastapi.responsesr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   !app.backend.classes.subject_classr   sqlalchemy.ormr   typingr   subjectsr#   intr+   r0   postr8   putr?   rC        r*   <module>rR      s   5 5 * * > F F : " 
 
b$T7QR%&=>&/!
}!
!
 	!
 !
H 
g &&=>&/


 	
 
@ 
x &&=>&/%

%
%
 	%
 %
P 
g &&=>&/	#
#

#
 #
 		#
 #
L 
 &&=>&/!
!
!
 	!
 !
rQ   