mirror of
https://github.com/i701/sarlink-portal-api.git
synced 2025-07-07 06:06:31 +00:00
feat(views): implement topup cancellation and update status to CANCELLED ✨
This commit is contained in:
@ -9,7 +9,7 @@ from .views import (
|
|||||||
ListCreateTopupView,
|
ListCreateTopupView,
|
||||||
VerifyTopupPaymentAPIView,
|
VerifyTopupPaymentAPIView,
|
||||||
TopupDetailAPIView,
|
TopupDetailAPIView,
|
||||||
DeleteTopupView,
|
CancelTopupView,
|
||||||
)
|
)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
@ -37,8 +37,8 @@ urlpatterns = [
|
|||||||
name="verify-topup-payment",
|
name="verify-topup-payment",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"topup/<str:pk>/delete/",
|
"topup/<str:pk>/cancel/",
|
||||||
DeleteTopupView.as_view(),
|
CancelTopupView.as_view(),
|
||||||
name="delete-topup",
|
name="cancel-topup",
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
@ -397,6 +397,8 @@ class VerifyTopupPaymentAPIView(StaffEditorPermissionMixin, generics.UpdateAPIVi
|
|||||||
if topup_verification_response.success:
|
if topup_verification_response.success:
|
||||||
user.wallet_balance += topup_instance.amount # type: ignore
|
user.wallet_balance += topup_instance.amount # type: ignore
|
||||||
user.save()
|
user.save()
|
||||||
|
topup_instance.status = "PAID"
|
||||||
|
topup_instance.save()
|
||||||
return Response(
|
return Response(
|
||||||
{
|
{
|
||||||
"status": topup_verification_response.success,
|
"status": topup_verification_response.success,
|
||||||
@ -418,17 +420,22 @@ class VerifyTopupPaymentAPIView(StaffEditorPermissionMixin, generics.UpdateAPIVi
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class DeleteTopupView(StaffEditorPermissionMixin, generics.DestroyAPIView):
|
class CancelTopupView(StaffEditorPermissionMixin, generics.UpdateAPIView):
|
||||||
queryset = Topup.objects.all()
|
queryset = Topup.objects.all().select_related("user")
|
||||||
serializer_class = TopupSerializer
|
serializer_class = TopupSerializer
|
||||||
lookup_field = "pk"
|
lookup_field = "pk"
|
||||||
|
|
||||||
def delete(self, request, *args, **kwargs):
|
def update(self, request, *args, **kwargs):
|
||||||
instance = self.get_object()
|
instance = self.get_object()
|
||||||
user = request.user
|
user = request.user
|
||||||
|
if instance.status == "CANCELLED":
|
||||||
|
return Response(
|
||||||
|
{"message": "Topup has already been cancelled."},
|
||||||
|
status=status.HTTP_400_BAD_REQUEST,
|
||||||
|
)
|
||||||
if instance.is_expired:
|
if instance.is_expired:
|
||||||
return Response(
|
return Response(
|
||||||
{"message": "Expired topups cannot be deleted."},
|
{"message": "Expired topups cannot be cancelled."},
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
status=status.HTTP_400_BAD_REQUEST,
|
||||||
)
|
)
|
||||||
if (
|
if (
|
||||||
@ -445,4 +452,6 @@ class DeleteTopupView(StaffEditorPermissionMixin, generics.DestroyAPIView):
|
|||||||
{"message": "Paid topups cannot be deleted."},
|
{"message": "Paid topups cannot be deleted."},
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
status=status.HTTP_400_BAD_REQUEST,
|
||||||
)
|
)
|
||||||
return super().delete(request, *args, **kwargs)
|
instance.status = "CANCELLED"
|
||||||
|
instance.save()
|
||||||
|
return super().update(request, *args, **kwargs)
|
||||||
|
Reference in New Issue
Block a user