
    [i                         d Z ddl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 ddlmZmZ ddlmZmZ ddlmZ  ej4                  e      Z G d deej:                        Zy)zQ
Views for Sales call APIs (SALES_BOT) that includes off time from appointments.
    N)DjangoFilterBackend)viewsets)IsAuthenticated)Response)CallSearchMixin)Company)Call)BotType)
CallFilterCallOrderingFilter)CallDetailSerializerSalesCallSerializer)OurLimitOffsetPaginationc                       e Zd ZdZeZej                  j                         Z	e
gZeZeegZeZg dZdgZd Zd Zd Zd Zy)	SalesCallViewSetzNView for managing Sales call APIs (SALES_BOT) with off time from appointments.)
created_atcaller_namefrom_numbercall_time_category	sentimentdurationcost-created_atc                 h   | j                   j                  }t        j                  j	                  t
        j                  j                        }|j                  r	 |j                  rH	 t        j                  j                  |j                  j                        }|j	                  |      }n| j                  j                         S | j!                  |      }| j#                  |      }|j%                  d      S # t        j                  $ r! t        j                  j                         cY S w xY w)N)bot_type)phone)companyr   )requestuserr	   objectsfilterr
   	SALES_BOTvalueis_superuseractive_companyr   getr   DoesNotExistnonequerysetwith_sort_nameapply_call_searchorder_by)selfr   qscompany_infos       E/var/www/html/dp2/backend_v2.1/server/apps/calls/views/sales_calls.pyget_querysetzSalesCallViewSet.get_queryset-   s    ||  \\  '*;*;*A*A B+&229L9L9R9R2SYY|Y4 ==%%''  $##B'{{=)) '' +||((**+s   )AC= =1D10D1c                 B    | j                   dv rt        S | j                  S )z(Return the serializer class for request.)listretrieve)actionr   serializer_class)r-   s    r0   get_serializer_classz%SalesCallViewSet.get_serializer_classA   s!    ;;..&&$$$    c                 &   | j                         }| j                  |      }|j                  d      }| j                  |      }|+t	        |dd|i      }| j                  |j                        S t	        |d      }t        |j                        S )z9Custom list method to include off time from appointments.appointment_setTr   )manycontext)r;   )r1   filter_querysetprefetch_relatedpaginate_querysetr   get_paginated_responsedatar   )r-   r   argskwargsr)   page
serializers          r0   r3   zSalesCallViewSet.listG   s    $$&''1,,->?%%h/,TyRYFZ[J..z??(=

((r8   c                     | j                         }| j                         j                  |j                        j	                  d      }|j                         }t        |d|i      }t        |j                        S )z=Custom retrieve method to include off time from appointments.)pkr:   r   )r<   )	
get_objectr1   r!   rG   r>   firstr   r   rA   )r-   r   rB   rC   instancer)   rE   s          r0   r4   zSalesCallViewSet.retrieveU   sf    ??$$$&---=NNO`a>>#(Iw;OP

((r8   N)__name__
__module____qualname____doc__r   r6   r	   r    allr)   r   permission_classesr   pagination_classr   r   filter_backendsr   filterset_classordering_fieldsorderingr1   r7   r3   r4    r8   r0   r   r      sc     Y+||!H)*/*,>?O OO H*(%))r8   r   )rN   loggingdjango_filters.rest_frameworkr   rest_frameworkr   rest_framework.permissionsr   rest_framework.responser   apps.calls.mixinsr   apps.companies.modelsr   apps.calls.modelsr	   apps.calls.constantsr
   apps.calls.filtersr   r   apps.calls.serializersr   r   utils.paginations.paginationr   	getLoggerrK   loggerModelViewSetr   rV   r8   r0   <module>rf      sZ     = # 6 , - ) " ( = L A			8	$E)E)r8   