
    U+i                        d Z ddlmZmZmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZ  ed
dg      Zej/                  d       edd       edd       edd       edd       ee       ee	      fdee   dee   dee   dee   dedefd       Zej/                  d       ee       ee	      fdededefd       Zej9                  d       ee       ee	      fd ededefd!       Zej=                  d       ee       ee	      fded ededefd"       ZejA                  d       ee       ee	      fdededefd#       Z y)$z*differentiated_strategies_implementations.    )	APIRouterDependsQuerystatus)JSONResponse)get_db)get_current_active_user)	UserLogin+StoreDifferentiatedStrategiesImplementation,UpdateDifferentiatedStrategiesImplementation)+DifferentiatedStrategiesImplementationClass)Session)Optionalz*/differentiated_strategies_implementationsz)Differentiated Strategies Implementations)prefixtags u   0 = sin paginación)descriptiond   u   Registros por páginaNzFiltrar por acciones realizadasz!Filtrar por estrategias aplicadaspageper_pageactions_takenapplied_strategiessession_userdbc                    	 t        |      j                  | xs d|xs d||      }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      g d	
      S t        t        j                  dd|d	
      S # t        $ r2}t        t        j                  dt        |      g d	
      cY d}~S d}~ww xY w)zTLista implementaciones de estrategias diversificadas activas (deleted_date is None).r   r   )r   items_per_pager   r   r   error  messageErrorr   r   datastatus_codecontent   OKN)r   get_all
isinstancedictgetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_200_OK	Exceptionstr)r   r   r   r   r   r   resultes           e/var/www/pie360backend.cl/public_html/app/backend/routes/differentiated_strategies_implementations.pyget_listr3      s    
<R@HH#?s'1	 I 
 fd#

8(<(G"AA#&6::i3Q[]^  **"tVD
 	
  
=="s1vrB
 	

s$   A8B ;B 	C#'C
CCz/{id}idc                    	 t        |      j                  |       }|j                  d      dk(  r/t        t        j                  d|j                  dd      dd      S t        t        j
                  d	d
|j                  d      d      S # t        $ r2}t        t        j                  dt        |      dd      cY d}~S d}~ww xY w)u#   Obtiene una implementación por id.r   r     r   Registro no encontradoNr!   r#   r&   r'   r"   r   )	r   r+   r   r   HTTP_404_NOT_FOUNDr-   r.   r,   r/   r4   r   r   r0   r1   s        r2   	get_by_idr:   7   s    
<R@DDRH::h7*"55#&6::iIa3blpq  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB -B 	C'C=CCz/storer"   c           	         	 t        | d      r| j                         n| j                         }t        |      j	                  |      }|j                  d      dk(  r/t        t        j                  d|j                  dd      dd	      S t        t        j                  d
|j                  dd      d|j                  d      id	      S # t        $ r2}t        t        j                  dt        |      dd	      cY d}~S d}~ww xY w)u=   Crea una implementación (actions_taken, applied_strategies).
model_dumpr   r   r   r   zError al guardarNr!   r#      Creador4   )hasattrr<   r*   r   storer+   r   r   r,   HTTP_201_CREATEDr.   r/   )r"   r   r   payloadr0   r1   s         r2   r@   r@   P   s    
'.t\'B$//#		<R@FFwO::h7*"AA#&6::iI[3\fjk  //"vzz)X/NY]_e_i_ijn_oXpq
 	
  
=="s1vtD
 	

s$   BC ?C 	D'D;DDc                 P   	 t        |d      r|j                  d      n4|j                         j                         D ci c]  \  }}|	|| c}}}t	        |      j                  | |      }|j                  d      dk(  r/t        t        j                  d|j                  dd	      dd
      S t        t        j                  d|j                  dd      d| id
      S c c}}w # t        $ r2}t        t        j                  dt        |      dd
      cY d}~S d}~ww xY w)uS   Actualiza una implementación por id (opcional: actions_taken, applied_strategies).r<   T)exclude_unsetNr   r   r6   r   r7   r!   r#   r&   Actualizador4   r   )r?   r<   r*   itemsr   updater+   r   r   r8   r-   r.   r,   r/   )	r4   r"   r   r   kvrB   r0   r1   s	            r2   rG   rG   j   s*   
9@|9T$///5lplululwl}l}l  [Rdhdegh  DE  DQ[\^_[_  [R<R@GGGT::h7*"55#&6::iIa3blpq  **"vzz)]/S^bdf]gh
 	
 [R  
=="s1vtD
 	

s<   ?C* 
C$C$A!C* 30C* $C* *	D%3'D D% D%c                    	 t        |      j                  |       }|j                  d      dk(  r/t        t        j
                  d|j                  dd      dd      S t        t        j                  d	|j                  dd
      dd      S # t        $ r2}t        t        j                  dt        |      dd      cY d}~S d}~ww xY w)u   Borrado lógico (deleted_date).r   r   r6   r   r7   Nr!   r#   r&   	Eliminador   )
r   deleter+   r   r   r8   r-   r.   r,   r/   r9   s        r2   rL   rL      s    
<R@GGK::h7*"55#&6::iIa3blpq  **"vzz)[/Q[_`
 	
  
=="s1vtD
 	

s$   AB .B 	C	'C>C	C	)!__doc__fastapir   r   r   r   fastapi.responsesr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   Bapp.backend.classes.differentiated_strategies_implementation_classr   sqlalchemy.ormr   typingr   )differentiated_strategies_implementationsr+   intr/   r3   r:   postr@   putrG   rL        r2   <module>r\      s   0 5 5 * * > 
 { " ,57
5	6- ) +..r2/DE#C5LM#(;\#](-d@c(d%&=>&/

3-
sm
 C=
 !	

 
 	
 3
@ +..w7 &&=>&/


 	
 8
0 +//9 &&=>&/

5

 	
 :
2 +..w7 &&=>&/	


6
 
 		
 8
4 +11': &&=>&/


 	
 ;
r[   