Ë
    %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¯<©<×+<Ñ+<Ð%Ó=ß‰X�mÓ$ð 	ð —‘×*Ñ*×.Ñ.¨xÓ8ˆÙØ—‘¨f�Ó5ˆHàˆó    Úinvestments_createz›Validation 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   € ä�N‰N×)Ñ)¨,Ó7ß‰V T§\¡\×%6Ñ%6ˆVÓ7ß‰X�nÓ%ð 	ð Ÿ™×1Ñ1×5Ñ5°oÓFˆÙØ—‘°]�ÓCˆHàˆ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˜×-Ñ-ô &8ôR�H×1Ñ1õ r   