
    [iS                     |    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
 d dlmZ d dlmZ d dlmZ  G d	 d
      Zy)    )action)Responsestatus)CountMax)Customer)CallActivitySerializer)DateRangeSerializer)get_date_range_from_requestc                   4    e Zd ZdZ eddgd      d        Zy)TopCallersMixinz.
    Analytics: Top callers by frequency.
    Fgetztop-callers)detailmethodsurl_pathc                 d   t        |t              \  }}| j                  | j                               j	                  ||      }|j                  d      j                  d      j                  t        dd      t        d            j                  d	      d d
 }|D cg c]  }|d   	 }}|j                  d      j	                  |      j                  dd      j                  d      j                  d      }|D 	ci c]  }	|	j                  |	 }
}	|D ]   }	|	j                  |
vs|	|
|	j                  <   " t        j                  j	                  ||j                   j"                        D ci c]  }|j$                  | }}g }|D ]  }|d   }|
j'                  |      }	|	s|j'                  |      }t)        |	j*                  xs d      }|dz   d|dz  dz  dd|dz  d}t-        |	j.                  j1                         d      j2                  }|j5                  |	j6                  |	j8                  |	j:                  |r|j<                  nd||d   |d|	j>                  |	j@                  |	jB                  |d        tE        |tF        jH                        S c c}w c c}	w c c}w )N)created_at__gtecreated_at__lteT)twilio_call_sid__isnullfrom_numbertwilio_call_sid)distinct
created_at)
call_countlatest_call_timez-call_count
   )from_number__inz-created_at
activities)	phone__incompanyr   i  :<   02d)manyUnknownr    )call_idtwilio_call_idcall_date_timecustomer_namecustomer_numberr   duration
transcriptpartner_call_id	sentimentcall_summarycall_activitiesr   )%r   r   filter_querysetget_querysetfilterexcludevaluesannotater   r   order_byr   prefetch_relatedr   r	   objectsuseractive_companyphoner   intr-   r
   r   alldataappendidr   r   namer(   r0   summaryr   r   HTTP_200_OK)selfrequeststart_dtend_dtbase_qstop_callersrowphone_numberslatest_callscalllatest_call_mapc	customersresultr>   customerduration_secondsduration_formattedactivities_datas                      F/var/www/html/dp2/backend_v2.1/server/apps/calls/mixins/top_callers.pyrL   zTopCallersMixin.top_callers   s   6
&   !2!2!45V ( &   	 WTW2VM"X !2TB!$\!2  
 Xm$Sb* 	 8CC{]+{C WTW2VMV2Xm]3Xm$l+ 	 %
$ d"$ 	 
 !D648 0 01 ! %%,,'33 - 
 GGQJ 	 
 C&E"&&u-D }}U+H"4==#5A6#t+,A$t+237q#b(-/  5##%Dd  MM77"&"6"6"&//2:	#(!,/. #'<<!^^ $#2 ' D v'9'9:: D

s    J#J(4J-N)__name__
__module____qualname____doc__r   rL        rY   r   r      s)     55'MBY; CY;r_   r   N)rest_framework.decoratorsr   rest_framework.responser   rest_frameworkr   django.db.modelsr   r   apps.customers.modelsr	   apps.calls.serializersr
   r   apps.calls.utilsr   r   r^   r_   rY   <module>rg      s)    , , ! ' * 9 6 8_; _;r_   