
    wh                        d dl mZmZmZ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 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mZ d dlmZmZmZmZm Z  d dl!Z! e       Z" e       Z#ejH                  Z$ejJ                  Z%ejL                  Z&ejN                  Z'ejP                  Z( e!jR                  e$e%e&e'd      Z* G d de      Z+e"jY                  d      de+fd       Z-e#j]                  dee/e	f          edd       edd       edd      dd ee       ee      fde0de
e/   de
e/   de
e/   de
e0   d e
e0   d!ed"efd#       Z1e#j]                  d$ee/e	f          edd       edd       edd      dd ee       ee      fde0de
e/   de
e/   de
e/   de
e0   d e
e0   d!ed"efd%       Z2e#j]                  d&ee/e	f          edd       edd       edd      dd ee       ee      fde0de
e/   de
e/   de
e/   de
e0   d e
e0   d!ed"efd'       Z3e#j]                  d(ee/e	f          edd       edd       edd      dd ee       ee      fde0de
e/   de
e/   de
e/   de
e0   d e
e0   d!ed"efd)       Z4e#j]                  d*ee/e	f          edd       edd       edd      dd ee       ee      fde0de
e/   de
e/   de
e/   de
e0   d e
e0   d!ed"efd+       Z5y),    )	APIRouterHTTPExceptionDependsQuery)	BaseModel)DictAnyOptional)Session)get_db)User)settings)get_current_user)process_csv_review_data)List)FeedbackResponseTaskResponse)fetch_sentiment_countsfetch_sentiment_breakdownfetch_review_countfetch_feedback_ratingfetch_sentiment_scoreNT)app_idkeysecretclustersslc                   J    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   y)WebhookPayloadstore_id	branch_iddatasource_idsource_typesnapshot_idreviewsN)__name__
__module____qualname__int__annotations__strlist     7/var/www/html/hubwallet-dev/src/apps/feedback/router.pyr   r   #   s#    MNMr.   r   z/webhookpayloadc                   K   	 t        j                  | j                                d| j                  dS # t        $ r}t        dt        |              	 t        j                  dddddddd	
       n-# t        $ r!}t        dt        |              Y d}~nd}~ww xY wt        dt        |            d}~ww xY ww)zw
    Webhook that receives data and sends it to Celery for processing.
    Sends a Pusher notification on failure.
    z$Data received and processing started)messager$   z[Webhook Error] zimport-updatezprogress-updater   failedzWebhook failed)	processedtotalpercentstatus
status_msg)
event_namedataz/[Pusher Error in Webhook Failure Notification] Ni  )status_codedetail)
r   delaydictr$   	Exceptionprintr+   pusher_clienttriggerr   )r0   e
pusher_errs      r/   receive_datarE   +   s     <%%glln5 >"..
 	

  < Q)*	W!!,!" &"2 " 
  	WCC
OCTUVV	W CF;;'<sN   C16 C	B>B9A65B96	B ?BB9B  B99B>>Cz/sentiment_counts)response_modelzFilter by feedback source)descriptionzStart date in YYYY-MM-DD formatzEnd date in YYYY-MM-DD formatr!   source
start_dateend_date
min_rating
max_ratingdbcurrent_userc           
      &    t        | |||||||      S )z
    API route to fetch sentiment counts (Protected).
    - Ensures the branch belongs to the logged-in user.
    - Allows filtering by source and date range.
    )r   r!   rH   rI   rJ   rK   rL   rM   rN   s           r/   get_sentiment_counts_resultsrQ   R   s       ")RvzS[\fhrssr.   z/sentiment_breakdownc           
      &    t        | |||||||      S )z
    API route to fetch sentiment breakdown (Protected).
    - Ensures the branch belongs to the logged-in user.
    - Allows filtering by source and date range.
    )r   rP   s           r/   get_sentiment_breakdown_resultsrS   g   s       %YL&*V^_ikuvvr.   z/review_countc           
      &    t        | |||||||      S )z
    API route to fetch review count results (Protected).
    - Ensures the branch belongs to the logged-in user.
    - Allows filtering by source and date range.
    )r   rP   s           r/   get_review_count_resultsrU   {   s      i\6:xXbdnoor.   z/rating_countc           
      &    t        | |||||||      S )z
    API route to fetch sentiment analysis results (Protected).
    - Ensures the branch belongs to the logged-in user.
    - Allows filtering by source and date range.
    )r   rP   s           r/   get_rating_count_resultsrW      s       !BfjRZ[egqrrr.   z/sentiment_scorec           
      &    t        | |||||||      S )z
    API route to fetch sentiment score (Protected).
    - Ensures the branch belongs to the logged-in user.
    - Allows filtering by source and date range.
    )r   rP   s           r/   get_sentiment_scorerY      s       !BfjRZ\fhrssr.   )6fastapir   r   r   r   pydanticr   typingr   r	   r
   sqlalchemy.ormr   src.utils.dbr   src.apps.users.modelsr   src.utils.settingsr   src.apps.auth.controllerr   src.utils.celery_workerr   r   src.apps.feedback.schemasr   r   src.apps.feedback.controllerr   r   r   r   r   pusherrouterfeedback_routerr   r   r   r   
batch_sizePusherrA   r   postrE   getr+   r)   rQ   rS   rU   rW   rY   r-   r.   r/   <module>rl      s   < <  & & "  & ' 5 ;  D \  \ 	+ 
ll	


  
 Y  Z!< !< !<L (c3hH "$4OP %d8Y Z#D6UV $ $&/ !12ttSMt t sm	t
 t t 	t t It( +DcNK "$4OP %d8Y Z#D6UV $ $&/ !12wwSMw w sm	w
 w w 	w w Lw& _T#s(^D "$4OP %d8Y Z#D6UV $ $&/ !12ppSMp p sm	p
 p p 	p p Ep$ _T#s(^D "$4OP %d8Y Z#D6UV $ $&/ !12ssSMs s sm	s
 s s 	s s Es& 'S#XG "$4OP %d8Y Z#D6UV $ $&/ !12ttSMt t sm	t
 t t 	t t Ht(r.   