
    6i                         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
  G d de      Z G d d	e      Z G d
 de      Z G d de      Zy)    )Response)TRANSFER_STATUS)OurLimitOffsetPaginationLimitOffsetPagination)
pagination)UserMessagec                       e Zd Zd Zy)CallLimitOffsetPaginationc                 ^   | j                   j                  d   }|j                  |j                               }|j	                         xs d}|j                  t        j                  j                        j	                         }|j                  t        j                  j                        j	                         }|j                  t        j                  j                        j	                         }|j                  t        j                  j                        j	                         }t        |j	                         | j                         | j                         ||||t        ||z  dz  d      t        ||z  dz  d      t        ||z  dz  d      t        ||z  dz  d      |d      S )Nview   transfer_statusd      )countnextprevioustransfer_success_countnot_transfer_counttransfer_failedofftime_counttransfer_success_percentagenot_transfer_percentagetransfer_failed_percentageofftime_percentageresults)requestparser_contextfilter_querysetget_querysetr   filterr   
SUCCESSFULvalueNOT_TRANSFERREDFAILED	OFF_TTIMEr   get_next_linkget_previous_linkround)	selfdatar   querysettotalsuccess_countr   failed_countr   s	            >/var/www/html/dp2/backend_v2.1/server/apps/calls/pagination.pyget_paginated_responsez0CallLimitOffsetPagination.get_paginated_response   sk   ||**62''):):)<> %A 8R8R8X8XY__a%___=\=\=b=b_ciik7M7M7S7STZZ\ 8Q8Q8W8WX^^`^^%&&(..0&3"4+*,1=53HC2OQR,S',.@5.HC-OQR'S*/1E0La*P"')>#(Eq"I
  	    N)__name__
__module____qualname__r2    r3   r1   r
   r
      s    r3   r
   c                   &     e Zd Zd fd	Zd Z xZS )CallBDCLimitOffsetPaginationc                 v    || _         |j                  d      | _        t        |   | j                   ||      S )Nr   booking_intent)full_querysetr"   scheduled_querysetsuperpaginate_querysetr+   r-   r   r   	__class__s       r1   r@   z.CallBDCLimitOffsetPagination.paginate_queryset)   s8    %"*///"Cw(););WdKKr3   c                    | j                   j                         }| j                   j                  t        j                  j
                        j                         }| j                   j                  t        j                  j
                        j                         }| j                   j                  t        j                  j
                        j                         }| j                   j                  d      j                         }| j                   j                  d      j                         }dddd}|dkD  rTt        ||z  dz  d      |d<   t        ||z  dz  d      |d	<   t        ||z  dz  d      |d
<   t        ||z  dz  d      |d<   t        | j                  | j                         | j                         |||||||d
      S )Nr   r   r;   r   )calls_missed	schedulednot_scheduledr   r   rD   calls_receivedrE   rF   )
r   r   r   total_callsrecieved_callsrD   rE   rF   
percentager   )r=   r   r"   r   r#   r$   r&   r*   r   r(   r)   )	r+   r,   rH   rI   rD   rG   rE   rF   rJ   s	            r1   r2   z3CallBDCLimitOffsetPagination.get_paginated_response/   s   ((..0++22+66<< 3 

%' 	 ))00+2288 1 

%' 	 ++22+66<< 3 

%' 	 &&--Q-?EEG	**111CIIK&'a!L
?).{0Jc/QST)UJ~&+0.;2NRU1UWX+YJ'(&+Y-D,KQ&OJ{#*/1LPS0SUV*WJ'ZZ&&(..0&,("*$
  	r3   N)r4   r5   r6   r@   r2   __classcell__rB   s   @r1   r9   r9   '   s    L!r3   r9   c                   6     e Zd ZdZdZdZdZd fd	Zd Z xZ	S )MessagePagination
   limitoffsetr   c                 4    || _         t        | 	  |||      S z>
        Capture original queryset before pagination.
        r=   r?   r@   rA   s       r1   r@   z#MessagePagination.paginate_querysetX   !     &w(7DAAr3   c           	      
   | j                   }|j                  d      j                         }|j                  d      j                         }t        | j                  | j	                         | j                         |||d      S zH
        Use the captured queryset instead of hitting DB again.
        T)is_readF)r   r   r   
total_readtotal_unreadr   r=   r"   r   r   r(   r)   r+   r,   qsrZ   r[   s        r1   r2   z(MessagePagination.get_paginated_response_   {     YYtY,224
yyy/557ZZ&&(..0$(	
 	 		r3   rK   
r4   r5   r6   default_limitlimit_query_paramoffset_query_param	max_limitr@   r2   rL   rM   s   @r1   rO   rO   R   $    M!IBr3   rO   c                   6     e Zd ZdZdZdZdZd fd	Zd Z xZ	S )NotificationPaginationrP   rQ   rR   r   c                 4    || _         t        | 	  |||      S rT   rU   rA   s       r1   r@   z(NotificationPagination.paginate_querysetz   rV   r3   c           	      
   | j                   }|j                  d      j                         }|j                  d      j                         }t        | j                  | j	                         | j                         |||d      S rX   r\   r]   s        r1   r2   z-NotificationPagination.get_paginated_response   r_   r3   rK   r`   rM   s   @r1   rg   rg   t   re   r3   rg   N)rest_framework.responser   apps.calls.constantsr   utils.paginationsr   r   rest_frameworkr   apps.calls.modelsr   r
   r9   rO   rg   r7   r3   r1   <module>ro      sJ    , 0 M % )
 8 8)#; )V- D2 r3   