
    IrUie
                     |    d dl mZmZmZ d dl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  G d d	      Zy
)    )Subquery	CharFieldQ)Count)Call)BotTypeTRANSFER_STATUSBookingIntent)get_date_range_from_request)DateRangeSerializer)CustomerRepositoryc                   ,    e Zd Zed        Zed        Zy)BDCProgressServicec                 J   |st         j                  j                         S t        | t              \  }}t         j                  j                  |dt        j                  j                  ||      j                  t        t        j                         t                           S )NF)companytransfer_number__isnullbot_typecreated_at__gtecreated_at__lte)output_field)customer_name)r   objectsnoner   r   filterr   SERVICE_BOTvalueannotater   r   get_name_subqueryr   )requestr   start_dtend_dts       F/var/www/html/dp2/backend_v2.1/server/apps/calls/services/bdc_calls.pyfetch_callszBDCProgressService.fetch_calls   s     <<$$&&6
& LLV(- ,,22 ( &   h&&88:!*  	
    c                    | j                  t        d      t        dt        t        j                  j
                              t        dt        t        j                  j
                               t        dt        t        j                  j
                              t        dt        t        j                  j
                                    }|d   xs d}ddddd}|r`t        |d	   |z  d
z  d      |d	<   t        |d   |z  d
z  d      |d<   t        |d   |z  d
z  d      |d<   t        |d   |z  d
z  d      |d<   ||d<   |S )Nid)booking_intent)r   )transfer_status)total_calls	schedulednot_scheduledreceived_callscalls_missedr)   r   )r-   calls_receivedr*   r+   r-   d      r,   r.   r*   r+   
percentage)
	aggregater   r   r
   YESr   r	   
SUCCESSFULFAILEDround)querysetstatstotalr1   s       r"   	get_statszBDCProgressService.get_stats(   sy   ""d(9(9(?(?@  ):):)@)@AA
 !$3$>$>$D$D $3$:$:$@$@% # 
4 m$) 	

 ).~&.#5q*J~& ,1'(50C7,J'( ',{#e+s2A'J{# +0'%/36+J' )lr$   N)__name__
__module____qualname__staticmethodr#   r:    r$   r"   r   r      s(    
 
4 3 3r$   r   N)django.db.modelsr   r   r   django.db.models.aggregatesr   apps.calls.modelsr   apps.calls.constantsr   r	   r
   apps.calls.utilsr   apps.calls.serializersr   apps.customers.repositoryr   r   r?   r$   r"   <module>rG      s,    3 3 - " H H 8 6 8Q Qr$   