
    %xEi	                        d Z ddlmZ ddlmZmZ ddlmZmZm	Z	 ddl
mZmZ ddlmZmZ  G d d	e	j                         Z G d
 de	j$                        Zy)z%Viewsets for investments and rewards.    )annotations)OpenApiResponseextend_schema)filterspermissionsviewsets   )
InvestmentReward)InvestmentSerializerRewardSerializerc                       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 ede ed      d       fd	       Z xZS )
InvestmentViewSetzCAuthenticated CRUD (create/list/retrieve) for a user's investments.-created_atc                    t         j                  j                  | j                  j                        j                  d      }| j                  j                  j                  d      }|r|j                  |      }|S )N)userr   status)r   )r
   objectsfilterrequestr   order_byquery_paramsget)selfquerysetr   s      G/home/cursorai/projects/telegram-earn/backend/apps/investments/views.pyget_querysetzInvestmentViewSet.get_queryset   sf    %%4<<+<+<%=Xm$ 	 **..x8f5H    investments_createzValidation error. Possible reasons: amount below minimum ($10), invalid amount format, or insufficient balance. Error format: {"amount": ["error message"]})description)   i  )operation_id	responsesc                *    t        |   |g|i |S )zFCreate a new investment, deducting balance from user's credit_balance.)supercreate)r   r   argskwargs	__class__s       r   r&   zInvestmentViewSet.create"   s      w~g7777r   )__name__
__module____qualname____doc__r
   r   noner   r   serializer_classr   IsAuthenticatedpermission_classesr   OrderingFilterfilter_backendsorderingr   r   r   r&   __classcell__)r)   s   @r   r   r      sz    M!!&&(H+%556--.OH )% 4

88r   r   c                      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)RewardViewSetz;Read-only access to rewards tied to the authenticated user.-reward_datec                   t         j                  j                  d      j                  | j                  j
                        j                  d      }| j                  j                  j                  d      }|r|j                  |      }|S )N
investment)investment__userr8   investment_id)r<   )	r   r   select_relatedr   r   r   r   r   r   )r   r   r<   s      r   r   zRewardViewSet.get_queryset>   sm    NN)),7VT\\%6%6V7Xn% 	 1155oF]CHr   N)r*   r+   r,   r-   r   r   r.   r   r   r/   r   r0   r1   r   r2   r3   r4   r    r   r   r7   r7   5   sG    E~~""$H'%556--.OHr   r7   N)r-   
__future__r   drf_spectacular.utilsr   r   rest_frameworkr   r   r   modelsr
   r   serializersr   r   ModelViewSetr   ReadOnlyModelViewSetr7   r>   r   r   <module>rF      s?    + " @ 9 9 & ?&8-- &8RH11 r   