
    biD!                        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\" SSS9\" SSS9\" \
5      \" \5      4S\\   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\R-                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\R7                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\R;                  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StoreSupportOrganizationUpdateSupportOrganization)SupportOrganizationClass)Session)Optionalz/support_organizationszSupport Organizations)prefixtags Nz-1 o omitir = no filtrar)description	school_id	course_id
subject_idsession_userdbc           	          [        U5      R                  X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)zhLista registros activos (deleted_date is None). Filtros opcionales por school_id, course_id, subject_id.)r   r   r   r   error  message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   r   r   resultes          [C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\support_organizations.pyget_listr-      s    
)"-11 2 
 ::h7*"AA!%zz)5FG"JJvr2  **

62.
 	
  
==q6
 	

s$   A)B ,+B 
C"$CCCz/by_course/{course_id}c           	          [        U5      R                  U S9nUR                  S5      S:X  a,  [        [        R
                  SUR                  S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)z8Obtiene la lista de registros activos para un course_id.)r   r   r   r   r   r   r   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    
)"->>>S::h7*"AA!%zz)5FG  **

62.
 	
  
=="s1vrB
 	

s$   AB +B 
C $B;5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)   r0   r   r   r*   r+   s        r,   r4   r4   ^   s    
)"-77;::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SS5      b  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)uA   Crea un registro. school_id del body o de la sesión del usuario.
model_dumpr   Nr   r   r   r   zError al guardarr   r    r      zRegistro creador0   )hasattrr8   dictr%   getattrr   r   storer   r   r&   HTTP_201_CREATEDr(   r)   )r   r   r   payloadr*   createdr+   s          r,   r=   r=      s:   
'.t\'B'B$//#		;;{#+kSW0X0d#/#9#9GK )"-33G<::h7*"AA!%zz)5GH   **V$//!::i1BC#*#6T6::dCS<T
 	
  
==q6
 	

s%   B:D =AD 
E	$E>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.r8   T)exclude_unsetNr   r   r2   r   r3   r   r    r#   zRegistro actualizador0   r   )r:   r8   r;   itemsr   updater%   r   r   r5   r'   r(   r&   r)   )	r0   r   r   r   kvr?   r*   r+   s	            r,   rD   rD      s:   
9@|9T9T$///5lplululwl}l}l  [Rldhde  DE[_[\[_l  [R)"-44RA::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   r2   r   r3   Nr   r    r#   zRegistro eliminador   )
r   deleter%   r   r   r5   r'   r(   r&   r)   r6   s        r,   rH   rH      s    
)"-44R8::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.support_organization_classr   sqlalchemy.ormr   typingr   support_organizationsr%   intr-   r/   r4   postr=   putrD   rH        r,   <module>rW      sO   5 5 * * > 
 T " !#
!	"  2$T7QR$T7QR %d8R S%&=>&/%
}%
}%
 %
 	%

 	%
 %
P 34 &&=>&/


 	
 5
@ 7# &&=>&/


 	
 $
@ H% &&=>&/%

"%
%
 	%
 &%
P 7# &&=>&/	#
#

##
 #
 		#
 $#
L g& &&=>&/!
!
!
 	!
 '!
rV   