From 06b540d069ea5de25dbfbf37760053346cbc3b78 Mon Sep 17 00:00:00 2001 From: Parsa Nazer Date: Tue, 11 Mar 2025 00:09:51 +0330 Subject: [PATCH] cart item clear and apply discount view --- backend/order/urls.py | 6 ++++-- backend/order/views.py | 32 +++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/backend/order/urls.py b/backend/order/urls.py index 325e1a5..d29e3b5 100644 --- a/backend/order/urls.py +++ b/backend/order/urls.py @@ -1,11 +1,13 @@ from django.conf.urls.static import static from django.contrib import admin from django.urls import path, include -from .views import CartItemViews, CartView, OrderlistView +from .views import CartItemViews, CartView, OrderlistView, CartItemClear, ApplyDiscountView urlpatterns = [ - path('list', OrderlistView.as_view(), name='order-list'), + path('all', OrderlistView.as_view(), name='order-list'), path('cart', CartView.as_view()), + path('cart/discount', ApplyDiscountView.as_view()), + path('cart/all', CartItemClear.as_view()), path('cart/item/', CartItemViews.as_view(), name='change-item-cart'), # path('payment', CartView.as_view()), # path('', CartView.as_view()), diff --git a/backend/order/views.py b/backend/order/views.py index 364287e..64912a1 100644 --- a/backend/order/views.py +++ b/backend/order/views.py @@ -7,7 +7,7 @@ from rest_framework.permissions import IsAuthenticated from .serializers import * # from cart.models import from rest_framework import status -from .models import OrderItemModel, OrderModel +from .models import OrderItemModel, OrderModel, DiscountCode try: pass except DiscountNotAvailableError: @@ -24,6 +24,36 @@ pay +class ApplyDiscountView(APIView): + serializer_class = DiscountCodeSerializer + permission_classes = [IsAuthenticated] + def post(self, request): + cart_order, created = OrderModel.objects.get_or_create( + user=request.user, + status='CART' + ) + discount_code = get_object_or_404(DiscountCode, code=request.data.get('code')) + + if not discount_code.is_valid(): + return Response({'detail': discount_code.not_valid_reason()}, status=status.HTTP_400_BAD_REQUEST) + cart_order.discount_code = discount_code + cart_order.save() + return Response({'detail': 'کد تخفیف با موفقیت اعمال شد'}, status=status.HTTP_200_OK) + + + +class CartItemClear(APIView): + permission_classes = [IsAuthenticated] + serializer_class = OrderItemSerailzier + def delete(self, request): + cart_order, created = OrderModel.objects.get_or_create( + user=request.user, + status='CART' + ) + cart_order.items.all().delete() + return Response({'detail': f'سبد خرید با موفقیت خالی شد'}, status=status.HTTP_204_NO_CONTENT) + + class CartItemViews(APIView): permission_classes = [IsAuthenticated] serializer_class = OrderItemSerailzier