
    Qh                     B   d Z ddlZddlmZmZ ddl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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 ddlmZ ddl m!Z!m"Z" ddl#m$Z$ ddl%m&Z&m'Z' ddl(m)Z)  ejT                  e+      Z, G d dejZ                        Z.y)zP
Views for Sales call APIs (SALES_BOT) that includes offtime from appointments.
    N)datetime	timedelta)CountSumMaxAvgQ)timezone)DjangoFilterBackend)viewsetsstatus)action)SearchFilterOrderingFilter)IsAuthenticated)Response)Company)Call)Appointment)TRANSFER_STATUSBotType)
CallFilter)CallDetailSerializerSalesCallSerializer)OurLimitOffsetPaginationc                       e Zd ZdZeZej                  j                         Z	e
gZeZeeegZeZg dZg dZdgZd Zd Zd Zd Zy	)
SalesCallViewSetzMView for managing Sales call APIs (SALES_BOT) with offtime from appointments.)from_number	to_number
transcriptsummary)
created_atdurationcostz-created_atc                 p   | j                   j                  }|j                  rC| j                  j	                  t
        j                  j                        j                  d      S |j                  ry	 t        j                  j                  |j                  j                        }| j                  j	                  |t
        j                  j                        j                  d      S | j                  j                         S # t        j                  $ r | j                  j                         cY S w xY w)N)bot_typez-id)phone)companyr&   )requestuseris_superuserquerysetfilterr   	SALES_BOTvalueorder_byactive_companyr   objectsgetr'   DoesNotExistnone)selfr*   company_infos      ?/var/www/html/dp2/backend_v2.1/server/apps/calls/sales_views.pyget_querysetzSalesCallViewSet.get_queryset(   s    ||  ==''1B1B1H1H'IRRSXYY,&229L9L9R9R2S}}++L7K\K\KbKb+cllmrss }}!!## '' ,}}))++,s   3A7D -D54D5c                 B    | j                   dv rt        S | j                  S )z(Return the serializer class for request.)listretrieve)r   r   serializer_class)r6   s    r8   get_serializer_classz%SalesCallViewSet.get_serializer_class7   s!    ;;..&&$$$    c                 &   | j                         }| j                  |      }|j                  d      }| j                  |      }|+t	        |dd|i      }| j                  |j                        S t	        |d      }t        |j                        S )z8Custom list method to include offtime from appointments.appointment_setTr)   )manycontext)rB   )r9   filter_querysetprefetch_relatedpaginate_querysetr   get_paginated_responsedatar   )r6   r)   argskwargsr,   page
serializers          r8   r;   zSalesCallViewSet.list=   s    $$&''1,,->?%%h/,TyRYFZ[J..z??(=

((r?   c                     | j                         }| j                         j                  |j                        j	                  d      }|j                         }t        |d|i      }t        |j                        S )z<Custom retrieve method to include offtime from appointments.)pkrA   r)   )rC   )	
get_objectr9   r-   rN   rE   firstr   r   rH   )r6   r)   rI   rJ   instancer,   rL   s          r8   r<   zSalesCallViewSet.retrieveK   sf    ??$$$&---=NNO`a>>#(Iw;OP

((r?   N)__name__
__module____qualname____doc__r   r=   r   r2   allr,   r   permission_classesr   pagination_classr   r   r   filter_backendsr   filterset_classsearch_fieldsordering_fieldsorderingr9   r>   r;   r<    r?   r8   r   r      sb    W+||!H)*/*L.IO OIM8OH$%))r?   r   )/rU   loggingr   r   django.db.modelsr   r   r   r   r	   django.utilsr
   django_filters.rest_frameworkr   rest_frameworkr   r   rest_framework.decoratorsr   rest_framework.filtersr   r   rest_framework.permissionsr   rest_framework.responser   apps.companies.modelsr   apps.calls.modelsr   apps.appointments.modelsr   apps.calls.constantsr   r   apps.calls.filtersr   apps.calls.serializersr   r   utils.paginations.paginationr   	getLoggerrR   loggerModelViewSetr   r^   r?   r8   <module>rr      sh     ( 4 4 ! = + , ? 6 , ) " 0 9 ) L A 
		8	$5)x,, 5)r?   