
    i                     ^    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)DiversifiedStrategyModelrreturnc                 *   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	course_idplanning_learning_stylesplanning_strengthsplanning_support_needs
added_dateupdated_date)r   r   r   r   r   r   	isoformatr   )r   s    `C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\classes\diversified_strategy_class.py_row_to_dictr      st    dd[[$%$>$>22"#":":23,,all,,.D67nn002  KO     c                       \ rS rSrS\4S jr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)DiversifiedStrategyClass   dbc                     Xl         g Nr   )selfr   s     r   __init__!DiversifiedStrategyClass.__init__   s    r   Nr   r	   c                 L    U R                   R                  [        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. Filtro opcional por course_id (-1 o None = no filtrar).Nsuccessstatusdataerrorr$   messager%   )	r   queryr   filterr   allr   	Exceptionstr)r   r   qrowsr   es         r   getDiversifiedStrategyClass.get   s    	F67A$bHH5??9LM557D'41P4a,q/41PQQ1P 	F%#a&"EE	Fs0   AB  !A;6B  ;B   
B#
BB#B#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   rowr0   s       r   	get_by_id"DiversifiedStrategyClass.get_by_id"   s    	H''-- 89@@AYA\A\`bAbciikC")6OY]^^'c1BCC 	H%#a&$GG	H$   AA* A* *
B4BBB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)z2Obtiene el registro por course_id (uno por curso).r&   r4   Nr'   r"   r#   )	r   r)   r   r*   r   r5   r   r,   r-   )r   r   r7   r0   s       r   get_by_course_id)DiversifiedStrategyClass.get_by_course_id,   s    
	H670::iGH 
 ")6OY]^^'c1BCC 	H%#a&$GG	Hr:   r%   c           	          [         R                  " 5       nUR                  S5      nU R                  R	                  [
        5      R                  [
        R                  U:H  5      R                  5       nU(       a  UR                  S5      Ul	        UR                  S5      Ul
        UR                  S5      Ul        X$l        U R                  R                  5         U R                  R                  U5        SSUR                  [!        U5      S.$ [        U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\   Si ya existe un registro con el mismo course_id → UPDATE; si no existe → INSERT (crear).r   r   r   r   r"   Registro actualizado.)r$   r(   r   r%   )r   r   r   r   r   r   zRegistro creado.r&   r$   r(   N)r   nowr1   r   r)   r   r*   r   r5   r   r   r   r   commitrefreshr   r   addr,   rollbackr-   )r   r%   rA   r   r7   r0   s         r   storeDiversifiedStrategyClass.store:   s   	:,,.C-I670::iGH 
 /3xx8R/S,)-2F)G&-1XX6N-O*#&  $"+8OWZW]W]gstwgxyy*#)-2L)M#'88,@#A'+xx0H'I C GGKKGGNNGGOOC '4Fcff^jkn^opp 	:GG%#a&99	:s%   DF8 B$F8 8
G4'G/)G4/G4c                 r    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	        [        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&   r4   r@   r   r   r   r   r"   r?   )r$   r(   r   N)r   r)   r   r*   r   r5   r   r   r   r   r   rA   r   rB   rC   r,   rE   r-   )r   r   r%   r7   r0   s        r   updateDiversifiedStrategyClass.update\   s   	:''-- 89@@AYA\A\`bAbciikC")6OPPd" $[ 1)T1/34N/O,#t+)-.B)C&'4/-12J-K*'||~CGGNNGGOOC '4KSVSYSYZZ 	:GG%#a&99	:s%   AC: BC: :
D6'D1+D61D6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&   r4   r@   r"   zRegistro eliminado.N)r   r)   r   r*   r   r5   deleterB   r,   rE   r-   r6   s       r   rL   DiversifiedStrategyClass.deleter   s    		:''-- 89@@AYA\A\`bAbciikC")6OPPGGNN3GGNN'4IJJ 	:GG%#a&99	:s$   AB 9B 
C'CCCr   r   )__name__
__module____qualname____firstlineno__r   r   r   intr   r1   r8   r<   dictrF   rI   rL   __static_attributes__ r   r   r   r      s    7 	FXc] 	Fc 	FHC HC HH# H# H :$  :3  :D: :D :S :,: : :r   r   N)r   typingr   r   sqlalchemy.ormr   app.backend.db.modelsr   rS   r   r   rU   r   r   <module>rY      s1       " :	, 	 	j: j:r   