o
    B_i=                     @  s   d dl mZ d dlmZmZmZmZmZ ddlm	Z	m
Z
 ddlmZmZmZmZmZ dZdZd	ZdddZdddZdddZdS )    )annotations)AnyDictListTupleOptional   )ZoneOperation	ParamSpec   )requestraw_wrapcoerce_page_sizecoerce_orderbuild_list_params
list_tasksget_taskget_tasks_due_for_date_rangereturnList[ZoneOperation]c                   C  s>  t tddddddd dd dd	td
dddtddddtddddtddddtddddgdg ddddt tddddddditddddtddddgddgdddt td d!dddd"d#d$d d dd dd%td&ddd'td(ddd)td*ddd+td
dddtddddtddddtddddtddddgdg d,dddgS )-Nz
List TaskszPDevuelve una lista paginada de tasks (zone=tasks). Soporta filtro WHERE y ORDER.GETreadTand|createdutc|>|2001-01-01r   F)whereorderpagepageSizerawr   stringu   Cláusula WHERE estilo AroFlo.r   z/Orden: campo|asc o campo|desc (AroFlo 'order').r   integeru   Número de página (1..N).r   u4   Cantidad de registros por página (AroFlo pageSize).r   booleanz/Si true, devuelve respuesta cruda + meta debug.tasks)zListar taskszFiltrar tasks usando WHEREzOrdenar tasks usando ORDERlow)codelabeldescriptionhttp_methodside_effect
idempotentdefault_paramsparamscategory	use_cases
risk_levelrequires_confirmationzGet TaskuU   Obtiene un task específico filtrando por taskid (zone=tasks where=and|taskid|=|...).taskidzTaskID codificado en AroFlo.z'Consultar detalle de un task por taskidzGet Tasks due for a date rangeu   Devuelve tasks filtrados por rango de fechas usando daterangetype + fromdate/todate. Soporta WHERE adicional, ORDER y paginación.DueDatez
2025-01-01z
2025-01-31)daterangetypefromdatetodater   r   r   r   r   r1   zTipo de rango (ej: DueDate).r2   zFecha inicio (YYYY-MM-DD).r3   zFecha fin (YYYY-MM-DD).)z*Listar tasks por rango de fechas (DueDate)zFiltrar por WHEREzOrdenar por ORDER)r	   OP_LISTr
   OP_GETOP_DUE_RANGE r7   r7   H/var/www/html/flask_server/apps/aroflo_connector_app/zones/tasks/base.pyget_operations   s   
r9   operation_codestrboolc                 C  s   | t tthv S )N)r4   r5   r6   )r:   r7   r7   r8   supportsg   s   r=   clientr   r*   Dict[str, Any]c                 C  s  t |dd}t|}t|}| tkrC|dd}t|dd}|dk r*tdtd|d |||d	}t|d
|}	|rAt	|	|S |	S | t
krf|d }
d|
 }dd|fdg}t|d
|}	|rdt	|	|S |	S | tkr|d }|d }|d }t|dd}|dk rtdddt|fdt|fdt|fg}|d}|r|d|f |r|d|f |r|d|f |dt|f t|d
|}	|rt	|	|S |	S td|  )Nr   Fr   r   r   r   zpage debe ser >= 1.r!   )zoner   joinr   r   r   r   r/   zand|taskid|=|)r@   r!   )r   1r1   r2   r3   r   r   u&   [Tasks.base] Operación no soportada: )r<   getr   r   r4   int
ValueErrorr   r   r   r5   r6   r;   append)r:   r>   r*   r   r   r   r   r   params_listrespr/   r1   r2   r3   r7   r7   r8   executeo   s^   	




rI   N)r   r   )r:   r;   r   r<   )r:   r;   r>   r   r*   r?   r   r   )
__future__r   typingr   r   r   r   r   baser	   r
   _join_utilsr   r   r   r   r   r4   r5   r6   r9   r=   rI   r7   r7   r7   r8   <module>   s   

S