
    &Ui/                     ^    S SK J r   S SKJrJr  S SKJr  S SKJr  S\S\4S jr	 " S S	5      r
g
)    )datetime)OptionalAny)Session)&RegularTeacherDiversifiedStrategyModelrreturnc           
      V   U R                   U R                  U R                  U R                  U R                  U R
                  U R                  U R                  (       a  U R                  R                  5       OS U R                  (       a  U R                  R                  5       S.	$ S S.	$ )N)	id	school_id	course_id
subject_idstrategyperiodcriteria
added_dateupdated_date)
r   r   r   r   r   r   r   r   	isoformatr   )r   s    pC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\classes\regular_teacher_diversified_strategy_class.py_row_to_dictr      s|    dd[[[[llJJ((JJ23,,all,,.D67nn002
 
 KO
 
    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)&RegularTeacherDiversifiedStrategyClass   dbc                     Xl         g )Nr   )selfr   s     r   __init__/RegularTeacherDiversifiedStrategyClass.__init__   s    r   Nr   r   r   r	   c                     U R                   R                  [        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)zcLista registros. Filtros opcionales por school_id, course_id y subject_id (-1 o None = no filtrar).Nsuccessstatusdataerrorr%   messager&   )r   queryr   filterr   r   r   allr   	Exceptionstr)r   r   r   r   qrowsr   es           r   get*RegularTeacherDiversifiedStrategyClass.get   s    	FDEA$bHHCMMQZZ[$bHHCMMQZZ[%**:HHCNNR\\]557D'41P4a,q/41PQQ1P 	F%#a&"EE	Fs0   B5C 7CC C 
C9 C4.C94C9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   r*   r   r+   r   firstr   r-   r.   r   r   rowr1   s       r   	get_by_id0RegularTeacherDiversifiedStrategyClass.get_by_id-   s    	H''-- FGNNOuOxOx|~O~  F  F  HC")6OY]^^'c1BCC 	H%#a&$GG	Hs$   AA* A* *
B4BBBc                 2    U R                   R                  [        5      R                  [        R                  U:H  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)z,Obtiene la lista de registros por course_id.r#   r$   r'   r(   N)	r   r*   r   r+   r   r,   r   r-   r.   )r   r   r0   r   r1   s        r   get_by_course_id7RegularTeacherDiversifiedStrategyClass.get_by_course_id7   s    	FDE>HHIUV 
 (41P4a,q/41PQQ1P 	F%#a&"EE	Fs0   AA3 A.)A3 .A3 3
B=BBBr&   c                 T    [         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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)u_   Crea un nuevo registro en regular_teacher_diversified_strategies. school_id del body o sesión.r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r#   zRegistro creado.)r%   r)   r   r&   r'   r%   r)   N)r   nowr   r2   r   addcommitrefreshr   r   r-   rollbackr.   )r   r&   r@   r8   r1   s        r   store,RegularTeacherDiversifiedStrategyClass.storeC   s    	:,,.C8((;/((;/88L1*-xx)*- 	C GGKKGGNNGGOOC '4Fcff^jkn^opp 	:GG%#a&99	:s   C(C+ +
D'5'D"D'"D'c                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSS.$ SU;   a
  US   Ul        SU;   a
  US   Ul        SU;   a
  US   Ul        SU;   a
  US   Ul	        SU;   a
  US   Ul
        S	U;   a
  US	   Ul        [        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'   r5   r?   r   r   r   r   r   r   r#   zRegistro actualizado.)r%   r)   r   N)r   r*   r   r+   r   r6   r   r   r   r   r   r   r   r@   r   rB   rC   r-   rD   r.   )r   r   r&   r8   r1   s        r   update-RegularTeacherDiversifiedStrategyClass.updateY   s:   	:''-- FGNNOuOxOx|~O~  F  F  HC")6OPPd" $[ 1d" $[ 1t#!%l!3T!#J/4!(^
T!#J/'||~CGGNNGGOOC '4KSVSYSYZZ 	:GG%#a&99	:s%   AD B>D 
E$'EEEc                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSS.$ U R                   R                  U5        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!   Elimina físicamente el registro.r'   r5   r?   r#   zRegistro eliminado.N)r   r*   r   r+   r   r6   deleterB   r-   rD   r.   r7   s       r   rK   -RegularTeacherDiversifiedStrategyClass.deletes   s    		:''-- FGNNOuOxOx|~O~  F  F  HC")6OPPGGNN3GGNN'4IJJ 	:GG%#a&99	:s$   AB 9B 
C'CCCr   )NNN)__name__
__module____qualname____firstlineno__r   r   r   intr   r2   r9   r<   dictrE   rH   rK   __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 :4: : :r   r   N)r   typingr   r   sqlalchemy.ormr   app.backend.db.modelsr   rR   r   r   rT   r   r   <module>rX      s1       " H: t i: i:r   