o
    6k~i                     @   s   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
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 G dd dejZdS )    )viewsetsstatus)action)Response)IsAuthenticated)CountAvgQ)timezone)	timedelta   )	PlaceViewSearchQuery)Place)Booking)Review)IsPlaceAdminc                   @   sZ   e Zd ZdZeegZeddgddd Zeddgddd Z	eddgdd	d
 Z
dS )AnalyticsViewSetzAnalytics ViewSetFget)detailmethodsc                 C   s   |j }t|dstdditjdS |jj}t 	 }t
jj||d }t
jj|dd }tjj|dd	 }tjj|dd	jtd
dd pJd}|jjdd }	t tdd }
tjj||
d }t|||t|d|	|dS )zGet dashboard statisticsplace_admin_profileerrorz%No place associated with this account)r   placedatepending)r   r   T)r   	is_activerating)avgr   r   )r      days)r   created_at__gte   )today_bookingspending_bookingstotal_reviews
avg_ratingactive_offersviews_last_7_days)userhasattrr   r   HTTP_400_BAD_REQUESTr   r   r
   nowr   r   objectsfiltercountr   	aggregater   offersr   r   round)selfrequestr+   r   todayr%   r&   r'   r(   r)   week_agoviews_count r:   4/var/www/newdalilibackend/backend/analytics/views.pydashboard_stats   sT   
z AnalyticsViewSet.dashboard_statsc           	      C   sz   |j }|jj}g }g }tdddD ]$}t  t|d }||	d t
jj||d }|| qt||dS )zGet bookings chart data   r!   z%Y-%m-%dr   )r"   bookings)r+   r   r   ranger
   r.   r   r   appendstrftimer   r/   r0   r1   r   )	r5   r6   r+   r   r"   bookings_countir   r1   r:   r:   r;   bookings_chartG   s   zAnalyticsViewSet.bookings_chartc                 C   sH   |j }|jj}i }tddD ]}tjj||dd }|||< qt|S )zGet reviews rating distributionr   r=   T)r   r   r   )	r+   r   r   r@   r   r/   r0   r1   r   )r5   r6   r+   r   distributionr   r1   r:   r:   r;   reviews_distribution\   s   
z%AnalyticsViewSet.reviews_distributionN)__name__
__module____qualname____doc__r   r   permission_classesr   r<   rE   rG   r:   r:   r:   r;   r      s    
3
r   N)rest_frameworkr   r   rest_framework.decoratorsr   rest_framework.responser   rest_framework.permissionsr   django.db.modelsr   r   r	   django.utilsr
   datetimer   modelsr   r   places.modelsr   bookings.modelsr   reviews.modelsr   common.permissionsr   ViewSetr   r:   r:   r:   r;   <module>   s    