
    [i7	                        d dl mZmZ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mZ  e       Zdeddfd	Zej+                  d
       edd       eddd       ee      fdedz  dededeeef   fd       Zej7                  d
       ee      fdedededeeef   fd       Zej;                  d       ee      fdededededeeef   f
d       Zy)    )	APIRouterBackgroundTasksDependsHTTPExceptionQuerystatus)require_session) send_report_created_notification) sync_reports_google_sheet_safely)ReportCreatePayloadReportStatusUpdatePayloadSessionIdentityget_tenant_storeexcreturnNc                     t        |       }d|j                         v sd|j                         v rt        j                  nt        j                  }t        ||      | )Nznon puozsolo l'adminstatus_codedetail)strlowerr   HTTP_403_FORBIDDENHTTP_400_BAD_REQUESTr   )r   r   r   s      *apps/backend-hub/app/api/routes/reports.py_raise_reports_errorr      sT    XF/8FLLN/Jn`f`l`l`nNn&++tz  uP  uPK
K
?SH     r   )defaultalias      i  )r   gelestatus_filterlimitsessionc                 ~    	 t               j                  || |      S # t        $ r}t        |       Y d }~y d }~ww xY w)N)r$   r%   )r   list_reports
ValueErrorr   )r$   r%   r&   r   s       r   r(   r(      s>    "!..wm[`.aa "S!!"s    	<7<payloadbackground_tasksc                     	 t               j                  ||       }|j	                  t
        |d          |j	                  t        ||d          |S # t        $ r}t        |       Y d }~Od }~ww xY w)Nreport)r   create_reportr)   r   add_taskr
   r   )r*   r+   r&   resultr   s        r   r.   r.   #   sr    "!#11'7C >PXIYZ>PXIYZM	  "S!!"s   A 	A0A++A0z/{report_id}/status	report_idc                 X   	 t               j                  || |      }|j                  t        |d          |S # t        $ rK}t        t        j
                  |j                  r|j                  d         |t        |            |d }~wt        $ r}t        |       Y d }~d }~ww xY w)Nr   r   r-   )r   update_report_statusKeyErrorr   r   HTTP_404_NOT_FOUNDargsr   r)   r   r/   r   )r1   r*   r+   r&   r0   r   s         r   r3   r3   2   s    "!#88)WU
 >PXIYZM  z(A(AY\YaYa#((ST+pvyygjkngopvyy "S!!"s"   9 	B)ABB)B$$B))fastapir   r   r   r   r   r   app.api.depsr	   &app.services.push_notification_servicer
   )app.services.reports_google_sheet_servicer   app.services.tenant_storer   r   r   r   routerr)   r   getr   intdictobjectr(   postr.   patchr3    r   r   <module>rD      sZ   U U ( S V  
Ij IT I B %d( CsqS1&7":"" " 
#v+	" " R  '7 %  
#v+	  #$
  '7	& & 	
 
#v+ %r   