
    %xEi
                        d 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
  G d dej                        Z G d	 d
ej                        Zy)z"Viewsets for referral commissions.    )annotations)filterspermissionsviewsets   )
Commission)CommissionSerializerc                      e Zd ZdZej
                  j                         ZeZ	e
j                  gZej                  gZdgZd Zy)CommissionViewSetz7Authenticated access to commissions earned by the user.-created_atc                    t         j                  j                  ddd      j                  | j                  j
                        j                  d      }| j                  j                  j                  d      }|r|j                  |      }|S )Nupline_userdownline_userreward)r   r   status)r   )	r   objectsselect_relatedfilterrequestuserorder_byquery_paramsget)selfquerysetstatus_params      E/home/cursorai/projects/telegram-earn/backend/apps/referrals/views.pyget_querysetzCommissionViewSet.get_queryset   ss    --m_hWV 1 1V2Xm$ 	 ||0044X>l;H    N)__name__
__module____qualname____doc__r   r   noner   r	   serializer_classr   IsAuthenticatedpermission_classesr   OrderingFilterfilter_backendsorderingr    r   r   r   r      sH    A!!&&(H+%556--.OHr   r   c                  :    e Zd ZdZej
                  gZeZd Z	d Z
y)ReferralNetworkViewSetzGAuthenticated access to the list of users referred by the current user.c                   ddl m} ddlm} ddlm}m}m} ddlm	} |j                  j                  | j                  j                        j                   | |d ||j                  |j                   g      	      d |d
d             | |d ||j                  |j                   |j"                  g      	      d |d
d                  j%                  d      }|S )Nr   )User)
Investment)SumQDecimalField)Coalesce)referred_byinvestments__amount)investments__status__in)r         )
max_digitsdecimal_places)output_field)active_investment_totaltotal_investmentr   )apps.users.modelsr/   apps.investments.modelsr0   django.db.modelsr1   r2   r3   django.db.models.functionsr4   r   r   r   r   annotateSTATUS_PENDINGSTATUS_ACTIVESTATUS_COMPLETEDr   )r   r/   r0   r1   r2   r3   r4   r   s           r   r   z#ReferralNetworkViewSet.get_queryset(   s    *6997<<&&4<<3D3D&ENN$,)&55&441 )RJ% &)&55&44&771	 )RJ O 
8 (=
!9 	< r   c                    ddl m} |S )Nr   )ReferralNetworkSerializer)serializersrH   )r   rH   s     r   get_serializer_classz+ReferralNetworkViewSet.get_serializer_classO   s    :((r   N)r    r!   r"   r#   r   r&   r'   r	   r%   r   rJ   r+   r   r   r-   r-   "   s%    Q%556+%N)r   r-   N)r#   
__future__r   rest_frameworkr   r   r   modelsr   rI   r	   ReadOnlyModelViewSetr   r-   r+   r   r   <module>rO      s;    ( " 9 9  -55 .0)X:: 0)r   