
    'Xi9                     \    d dl m Z  d dlmZmZ d dlmZ d dlmZ dedefdZ	 G d d	      Z
y
)    )datetime)OptionalAny)Session)DiversifiedStrategyModelrreturnc                    | j                   | j                  | j                  | j                  | j                  | j
                  r| j
                  j                         nd | j                  r| j                  j                         dS d d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    W/var/www/pie360backend.cl/public_html/app/backend/classes/diversified_strategy_class.py_row_to_dictr      st    dd[[$%$>$>22"#":":23,,all,,.D67nn002  KO     c                       e Zd ZdefdZddee   defdZdedefdZ	dedefd	Z
d
edefdZded
edefdZdedefdZy)DiversifiedStrategyClassdbc                     || _         y N)r   )selfr   s     r   __init__z!DiversifiedStrategyClass.__init__   s	    r   Nr   r	   c                 @   	 | j                   j                  t              }|'|dk7  r"|j                  t        j                  |k(        }|j                         }d|D cg c]  }t        |       c}dS c c}w # t        $ r}dt        |      g dcY d}~S d}~ww xY w)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   getzDiversifiedStrategyClass.get   s    	F67A$bHH5??9LM557D'41Pa,q/1PQQ1P 	F%#a&"EE	Fs0   AA; A61A; 6A; ;	BBBBr   c                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sddddS dt        |      dS # t        $ r}dt        |      ddcY d}~S d}~ww xY w)zObtiene un registro por id.r#   Registro no encontrado.Nr$   r   r    )	r   r&   r   r'   r   firstr   r)   r*   r   r   rowr-   s       r   	get_by_idz"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.B<BBc                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sddddS dt        |      dS # t        $ r}dt        |      ddcY d}~S d}~ww xY w)z2Obtiene el registro por course_id (uno por curso).r#   r0   Nr$   r   r    )	r   r&   r   r'   r   r1   r   r)   r*   )r   r   r3   r-   s       r   get_by_course_idz)DiversifiedStrategyClass.get_by_course_id,   s    
	H670::iGH 
 ")6OY]^^'c1BCC 	H%#a&$GG	Hr5   r"   c                    	 t        j                         }|j                  d      }| j                  j	                  t
              j                  t
        j                  |k(        j                         }|r|j                  d      |_	        |j                  d      |_
        |j                  d      |_        ||_        | j                  j                          | j                  j                  |       dd|j                  t!        |      dS t        ||j                  d      |j                  d      |j                  d      ||      }| j                  j#                  |       | j                  j                          | j                  j                  |       dd	|j                  t!        |      dS # t$        $ r2}| j                  j'                          d
t)        |      dcY d}~S d}~ww xY w)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   nowr.   r   r&   r   r'   r   r1   r   r   r   r   commitrefreshr   r   addr)   rollbackr*   )r   r"   r;   r   r3   r-   s         r   storez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F6 B'F6 6	G1?'G,&G1,G1c                 T   	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_	        t        j                         |_        | j                   j                          | j                   j                  |       dd	|j                  d
S # t        $ r2}| j                   j!                          dt#        |      dcY d}~S d}~ww xY w)z7Actualiza un registro por id; solo los campos enviados.r#   r0   r:   r   r   r   r   r   r9   )r!   r%   r   N)r   r&   r   r'   r   r1   r   r   r   r   r   r;   r   r<   r=   r)   r?   r*   )r   r   r"   r3   r-   s        r   updatez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, ,	D'5'D"D'"D'c                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS | j                   j                  |       | j                   j                          dddS # t        $ r2}| j                   j                          dt        |      dcY d}~S d}~ww xY w)u!   Elimina físicamente el registro.r#   r0   r:   r   zRegistro eliminado.N)r   r&   r   r'   r   r1   deleter<   r)   r?   r*   r2   s       r   rD   z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   )__name__
__module____qualname__r   r   r   intr   r.   r4   r7   dictr@   rB   rD    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   rI   r   r   rJ   r   r   <module>rN      s1       " :	, 	 	j: j:r   