o
    {1i=                     @  s   d dl mZ d dlZd dlZd dl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 d dlmZmZ dddZd ddZd!ddZd!ddZd"ddZd#ddZedkr_e  dS dS )$    )annotationsN)datetimedate)OptionalAroFloClient)settings)TimesheetServiceTimesheetFilters)UsersServiceUserFiltersreturnr   c                   C  s   t  S )z}
    Helper sencillo para construir el cliente AroFlo.

    Usamos settings.base_url por dentro del propio AroFloClient.
    r    r   r   D/var/www/html/flask_server/apps/aroflo_connector_app/cli/__main__.pybuild_client   s   r   valueOptional[str]Optional[date]c                 C  s   | sd S t | d S )Nz%Y-%m-%d)r   strptimer   )r   r   r   r   _parse_date-   s   r   argsargparse.NamespaceNonec                 C  s  t  }t|}t| j| jt| jt| jd}|j|| j	ddd}|d }|d }|d }t
  t
d| d	|  t
  t
d
 |D ]B}|d}	|d}
|d}|d}|d}t
d|	  t
d|
  t
d|  t
d|  t
d|  t
d
 qCd S )N)useridtypeworkdate_fromworkdate_toworkdateF)filterspageorder_byinclude_raw_response
timesheets
pagenumbercurrentpageresultsu	   Página:  | Resultados: F----------------------------------------------------------------------timesheetidr   r   durationzTimesheetID : zUsuario     : zFecha       : zTipo        : u   Duración    : )r   r	   r
   r   r   r   	from_dateto_datelist_timesheetsr   printget)r   clientservicer   resultr"   page_numbercurrent_resultststs_iduserr   ts_typer(   r   r   r   handle_timesheets3   sD   





r7   c                 C  s   ddl m} | }t|d}t| dd rt| jdnd }|j|| j| jd}| jr8dd l	}t
|j|dd d S |d	g }|d
d}|dd}	t
d| d|	 d t
d |set
d t
d d S |D ]"}
|
dd}|
dd}|
dd}t
|dd|dd|  qgt
d d S )Nr   r   )r.   r   )r   )r   r   include_raw   )indentusersr#      r$   u
   
Página: r%   
r&   u7   Sin usuarios en esta página con los filtros indicados. nameemail20s 40s)%apps.aroflo_connector_app.core.clientr   r   getattrr   r   
list_usersr   r8   jsonr,   dumpsr-   )r   r   r.   r/   r   r0   rG   r;   pagenocurrentuuidr?   r@   r   r   r   handle_usersc   s8   
rM   argparse.ArgumentParserc                  C  s   t jddd} | jddd}|jddd	}|jd
dd	 |jddd	 |jdddd |jdddd |jdtddd |jtd |jddd	}|jd
dd	 |jddd	 |jdd d	 |jd!d"d#d$ |jdtddd |jd%d"d&d$ |jtd | S )'Nz
aroflo-cliz7CLI para consultar la API de AroFlo (conector interno).)progdescriptioncommandT)destrequiredr"   z)Consultar timesheets (zona 'timesheets').)helpz--useridz"Filtrar por userid (ID en base64).z--typez8Tipo de timesheet (Productive, Non-Productive, Expense).z--from-dater)   zFecha desde (YYYY-MM-DD).)rR   rT   z	--to-dater*   zFecha hasta (YYYY-MM-DD).z--pager<   u#   Número de página (por defecto 1).)r   defaultrT   )funcr;   z"Consultar usuarios (zona 'users').zFiltrar por userid.z--emailzFiltrar por email.z
--usernamezFiltrar por username.z--active
store_truez3Filtrar solo usuarios activos (si el campo existe).)actionrT   z--include-rawz&Imprimir la respuesta cruda de la API.)	argparseArgumentParseradd_subparsers
add_parseradd_argumentintset_defaultsr7   rM   )parser
subparsersp_tsp_usersr   r   r   build_parser   s   rd   c                  C  s   t  } |  }|| d S )N)rd   
parse_argsrV   )r`   r   r   r   r   main   s   rf   __main__)r   r   )r   r   r   r   )r   r   r   r   )r   rN   )r   r   )
__future__r   rY   rG   r   r   typingr   rD   r   %apps.aroflo_connector_app.core.configr   5apps.aroflo_connector_app.features.timesheets.servicer	   r
   0apps.aroflo_connector_app.features.users.servicer   r   r   r   r7   rM   rd   rf   __name__r   r   r   r   <module>   s$   



0
-
M
