
    I5j"                     "   U d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ  e	       Zej                           eej                   d	      Zdae j&                  d   dz  ed
<   dae j&                  d   dz  ed<    ej,                  e      Zej3                  eej4                  ddgdg       ej7                  e       defdZdefdZddZddZ ejC                  d      dd       Z"ejC                  d      dd       Z#y)    N)FastAPI)CORSMiddleware)
api_router)get_settings)&sync_all_ready_fiscal_document_inboxes)get_tenant_storez0.1.0)titleversion_fiscal_inbox_task_timeclock_auto_close_taskT*)allow_originsallow_credentialsallow_methodsallow_headersreturnc                  6    t        dt        j                        S )Ni,  )maxsettings"fiscal_document_inbox_poll_seconds     apps/backend-hub/app/main.py#_fiscal_inbox_poll_interval_secondsr      s    sH??@@r   c                  *    t        dt                     S )N   )minr   r   r   r   #_fiscal_inbox_startup_delay_secondsr   #   s    r6899r   c                    K   t        j                  t                      d {    	 	 t                d {    t        j                  t                      d {    97 >7 ,# t        $ r t
        j                  d       Y Jw xY w7 -w)Nz$Fiscal document inbox polling failed)asynciosleepr   r   	Exceptionlogger	exceptionr   r   r   r   _fiscal_inbox_poll_loopr%   '   s|     
--;=
>>>
	E8::: mm?ABBB  ? ; 	ECD	EBsM   !BA"BA& A$A&  BB
B$A& &BBBBc                    K   t        j                  d       d {    	 	 t        j                  t               j                         d {   } t        | j                  d      xs d      }|rt        j                  d|       | j                  d      xs g D ]  }t        j                  d|        	 t        j                  d       d {    7 7 # t        $ r t        j                  d       Y Bw xY w7 -w)	N   closed_countr   zEAutomatically closed %s stale timeclock shift(s) at 06:00 Europe/Romeerrorsz*Timeclock auto-close failed for tenant: %sz#Timeclock auto-close polling failed<   )r    r!   	to_threadr   "auto_close_stale_timeclock_entriesintgetr#   infoerrorr"   r$   )resultr(   r0   s      r   _timeclock_auto_close_poll_loopr2   1   s     
--

	D",,-=-?-b-bccFvzz.9>Q?LceqrH-3 RI5QR mmB   d  	DBC	DsQ   D CD *C CA*C 7D C>D C C;8D :C;;D startupc                     K   t         t         j                         rt        j                  t	                     a t
        t
        j                         rt        j                  t                     ay y wN)r   doner    create_taskr%   r   r2   r   r   r   startup_background_tasksr8   @   s\      !%7%<%<%>$001H1JK!)-G-L-L-N%,%8%89X9Z%[" .Os   A1A3shutdownc                  &  K   t         %t         j                          	 t          d {    d a t        &t        j                          	 t         d {    d ay y 7 3# t        j                  $ r Y Fw xY w7 ## t        j                  $ r Y 6w xY wwr5   )r   cancelr    CancelledErrorr   r   r   r   shutdown_background_tasksr=   I   s      %!!#	$$$ "!-"))+	,,, &*" .	 %%% 		 -%% 		sm   B	A AA B		A8 A6A8 BA A30B2A33B6A8 8BBBB)r   N)$r    loggingfastapir   fastapi.middleware.corsr   app.api.routerr   app.core.configr   *app.services.fiscal_document_inbox_servicer   app.services.tenant_storer   r   validate_runtimeapp_nameappr   Task__annotations__r   	getLogger__name__r#   add_middlewarecors_origins_listinclude_routerr-   r   r   r%   r2   on_eventr8   r=   r   r   r   <module>rP      s%      2 % ( ] 6 >    H%%w704 GLL&- 48< GLL.5 <			8	$   ,,%%     : AS A:S :C  i\ \ j* *r   