
    bil                     d    S SK J r   S SKJrJr  S SKJr  S SKJr  S rS\S\	4S jr
 " S	 S
5      rg)    )datetime)OptionalAny)Session)SupportOrganizationModelc                 t    U c  g [        U S5      (       a  U R                  5       $ U (       a  [        U 5      $ S $ )N	isoformat)hasattrr	   str)vs    `C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\classes\support_organization_class.py_serialize_dater      s4    yq+{{}3q6 D     rreturnc                    U R                   U R                  U R                  U R                  U R                  U R
                  U R                  [        U R                  5      [        U R                  5      [        U R                  5      S.
$ )N)
id	school_id	course_id
subject_idhours_support_regular_classroomhours_support_outside_classroomspecialized_support_types
added_dateupdated_datedeleted_date)r   r   r   r   r   r   r   r   r   r   r   )r   s    r   _row_to_dictr      sg    dd[[[[ll+,+L+L+,+L+L%&%@%@%all3'7'7 r   c            	           \ rS rSrS\4S jr   SS\\   S\\   S\\   S\4S	 jjr	S
\S\4S jr
S\S\4S jrS\S\4S jrS
\S\S\4S jrS
\S\4S jrSrg)SupportOrganizationClass   dbc                     Xl         g )Nr!   )selfr!   s     r   __init__!SupportOrganizationClass.__init__   s    r   Nr   r   r   r   c                 P    U R                   R                  [        5      R                  [        R                  R                  S5      5      nUb(  US:w  a"  UR                  [        R                  U:H  5      nUb(  US:w  a"  UR                  [        R                  U:H  5      nUb(  US:w  a"  UR                  [        R                  U:H  5      nUR                  5       nSU Vs/ s H  n[        U5      PM     snS.$ s  snf ! [         a  nS[        U5      / S.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.Nsuccessstatusdataerrorr+   messager,   )r!   queryr   filterr   is_r   r   r   allr   	Exceptionr   )r$   r   r   r   qrowsr   es           r   getSupportOrganizationClass.get"   s    	F670==AA$GH  $bHH5??9LM$bHH5??9LM%**:HH5@@JNO557D'41P4a,q/41PQQ1P 	F%#a&"EE	Fs0   C!D #C=8D =D 
D%D D% D%r   c                      U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSSS.$ S[        U5      S.$ ! [         a  nS[        U5      SS.s SnA$ SnAff = f)zObtiene un registro por id.r-   Registro no encontrado.Nr.   r)   r*   )	r!   r0   r   r1   r   firstr   r4   r   r$   r   rowr7   s       r   	get_by_id"SupportOrganizationClass.get_by_id9   s    	H''-- 89@@AYA\A\`bAbciikC")6OY]^^'c1BCC 	H%#a&$GG	Hs$   AA* A* *
B4BBBc                 n    U R                   R                  [        5      R                  [        R                  U:H  [        R
                  R                  S5      5      R                  5       nSU Vs/ s H  n[        U5      PM     snS.$ s  snf ! [         a  nS[        U5      / S.s SnA$ SnAff = f)z8Obtiene la lista de registros activos para un course_id.Nr)   r*   r-   r.   )r!   r0   r   r1   r   r   r2   r3   r   r4   r   )r$   r   r6   r   r7   s        r   get_by_course_id)SupportOrganizationClass.get_by_course_idC   s    	F67,66)C,99==dC   (41P4a,q/41PQQ1P 	F%#a&"EE	Fs0   A0B 2BB B 
B4B/)B4/B4r,   c                 V    [         R                  " 5       n[        UR                  S5      UR                  S5      UR                  S5      UR                  S5      UR                  S5      UR                  S5      UUSS9	nU R                  R                  U5        U R                  R                  5         U R                  R                  U5        S	S
UR                  [        U5      S.$ ! [         a2  nU R                  R                  5         S[        U5      S.s SnA$ SnAff = f)uN   Crea un registro en support_organizations. school_id del body o de la sesión.r   r   r   r   r   r   N)	r   r   r   r   r   r   r   r   r   r)   zRegistro creado.)r+   r/   r   r,   r-   r+   r/   )r   nowr   r8   r!   addcommitrefreshr   r   r4   rollbackr   )r$   r,   rF   r>   r7   s        r   storeSupportOrganizationClass.storeR   s    	:,,.C*((;/((;/88L1049Z0[049Z0[*.((3N*O !
C GGKKGGNNGGOOC '4Fcff^jkn^opp 	:GG%#a&99	:s   C)C, ,
D(6'D#D(#D(c                 .    U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSS.$ S H  nXB;   d  M
  [        X4X$   5        M     [        R                  " 5       Ul	        U R                   R                  5         U R                   R                  U5        SSUR                  S.$ ! [         a2  nU R                   R                  5         S[        U5      S.s SnA$ SnAff = f)	z7Actualiza un registro por id; solo los campos enviados.r-   r;   rE   )r   r   r   r   r   r   r)   zRegistro actualizado.)r+   r/   r   N)r!   r0   r   r1   r   r<   setattrr   rF   r   rH   rI   r4   rJ   r   )r$   r   r,   r>   keyr7   s         r   updateSupportOrganizationClass.updatei   s    	:''-- 89@@AYA\A\`bAbciikC")6OPP ;Cdi0  (||~CGGNNGGOOC '4KSVSYSYZZ 	:GG%#a&99	:s+   AC C 'A0C 
D"'D	DDc                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSS.$ [        R                  " 5       Ul        [        R                  " 5       Ul	        U R                   R                  5         SSS.$ ! [         a2  nU R                   R                  5         S[        U5      S.s SnA$ SnAff = f)u$   Borrado lógico: setea deleted_date.r-   r;   rE   r)   zRegistro eliminado.N)r!   r0   r   r1   r   r<   r   rF   r   r   rH   r4   rJ   r   r=   s       r   deleteSupportOrganizationClass.delete}   s    
	:''-- 89@@AYA\A\`bAbciikC")6OPP'||~C'||~CGGNN'4IJJ 	:GG%#a&99	:s%   AB. AB. .
C*8'C%C*%C*r#   )NNN)__name__
__module____qualname____firstlineno__r   r%   r   intr   r8   r?   rB   dictrK   rP   rS   __static_attributes__ r   r   r   r      s    7 
 $(#'$(	FC=F C=F SM	F
 
F.HC HC HF# F# F:$ :3 :.: :D :S :(: : :r   r   N)r   typingr   r   sqlalchemy.ormr   app.backend.db.modelsr   r   rZ   r   r   r\   r   r   <module>r`      s6       " :!,  k: k:r   