
    9i                     &   d dl mZ d dl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 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  G d dej@                        Z! G d de      Z" G d dejF                        Z$y)    )IntegrityError)viewsetsgenericspermissionsstatus)Response)
Dealership)DealershipSerializerDealershipCreateSerializer)ValidationError)	timedelta)timezone)Count)APIView)IsAuthenticated)Call)CompanyPermission)LimitOffsetPaginationc                   P    e Zd ZeZej                  egZe	gZ
d Zd Zd Zd Zd Zy)DealershipViewSetc                 N    | j                   dv rt        d      gS t        d      gS )Ncreateupdatepartial_updatedestroy#dealership_group_create_dealerships!dealership_group_view_dealerships)actionr   selfs    M/var/www/html/dp2/backend_v2.1/server/apps/companies/views/dealership_view.pyget_permission_classesz(DealershipViewSet.get_permission_classes   s-    ;;KK%&KLMM!"EFGG    c                     | j                   j                  j                  }t        j                  j                  |      S )Ncompany)requestuseractive_companyr	   objectsfilterr!   r'   s     r"   get_querysetzDealershipViewSet.get_queryset   s1    ,,##22!!(((99r$   c                 6    | j                   dv rt        S t        S )Nr   )r   r   r
   r    s    r"   get_serializer_classz&DealershipViewSet.get_serializer_class    s    ;;KK--##r$   c                     | j                   j                  j                  }	 |j                  |       y # t        $ r!}dt        |      v rt        ddi      |d }~ww xY w)Nr&   $companies_dealership_company_id_namename<A dealership with this name already exists for this company.)r(   r)   r*   saver   strr   )r!   
serializerr'   es       r"   perform_createz DealershipViewSet.perform_create%   se    ,,##22	OOGO, 	5Q?%Z'   	s   5 	AAAc                     	 |j                          y # t        $ r!}dt        |      v rt        ddi      |d }~ww xY w)Nr2   r3   r4   )r5   r   r6   r   )r!   r7   r8   s      r"   perform_updatez DealershipViewSet.perform_update1   sL    	OO 	5Q?%Z'   	s    	=8=N)__name__
__module____qualname__r
   serializer_classr   r   r   permission_classesr   pagination_classesr#   r.   r0   r9   r;    r$   r"   r   r      s=    +%557HI/0H
:$

	r$   r   c                       e Zd ZegZd Zy)CallsDashboardViewc                    |j                   j                  }t        j                         }|t	        d      z
  }t
        j                  j                  ||      }|j                  ddi      j                  d      j                  t        d            j                  d      }|j                         |j                  d	      j                         |j                  d
	      j                         |d}t        |      S )N   )days)r'   created_at__gtedayzdate(created_at)id)totalT)is_answeredF)total_callsanswered_callsmissed_callscalls_graph)r)   r*   r   nowr   r   r+   r,   extravaluesannotater   order_bycountr   )r!   r(   r'   rQ   last_30_daysqscalls_per_daysummarys           r"   getzCallsDashboardView.get?   s    ,,--llnYB//\\  ( ! 
 HHe/01VE]XE$KX(Xe_	 	 88: iiDi9??AII%I8>>@(	
   r$   N)r<   r=   r>   r   r@   r[   rB   r$   r"   rD   rD   <   s    )*!r$   rD   c                   .    e Zd ZeZe ed      gZeZ	d Z
y)CompanyDealershipsCallLogViewr   c                     | j                   j                  j                  }t        j                  j                  |      j                  d      S )Nr&   calls)r(   r)   r*   r	   r+   r,   prefetch_relatedr-   s     r"   r.   z*CompanyDealershipsCallLogView.get_queryset_   s<    ,,##22!!(((9JJ7SSr$   N)r<   r=   r>   r
   r?   r   r   r@   r   pagination_classr.   rB   r$   r"   r]   r]   Z   s&    +)+<=`+ab,Tr$   r]   N)%	django.dbr   rest_frameworkr   r   r   r   rest_framework.responser   apps.companies.modelsr	   apps.companies.serializersr
   r   rest_framework.exceptionsr   datetimer   django.utilsr   django.db.modelsr   rest_framework.viewsr   rest_framework.permissionsr   apps.calls.modelsr   apps.permissions.permissionsr   utils.paginationsr   ModelViewSetr   rD   ListAPIViewr]   rB   r$   r"   <module>rr      se    $ B B , , W 5  ! " ( 6 " : 3(-- (T! !<TH$8$8 Tr$   