diff --git a/alkator/urls.py b/alkator/urls.py index c40fbea..5c1a9ea 100644 --- a/alkator/urls.py +++ b/alkator/urls.py @@ -23,7 +23,8 @@ from alkatorapi.views import ( payment_result, payment_state, invoice, upload_files, login_status, change_racer, - products, cart_add, cart, cart_delete + products, cart_add, cart, cart_delete, + cart_decrease, ) urlpatterns = [ @@ -45,4 +46,5 @@ urlpatterns = [ path('api/cart/add', cart_add), path('api/cart', cart), path('api/cart/delete', cart_delete), + path('api/cart/decrease', cart_decrease), ] diff --git a/alkatorapi/views.py b/alkatorapi/views.py index 33fadd9..c5c1290 100644 --- a/alkatorapi/views.py +++ b/alkatorapi/views.py @@ -382,6 +382,20 @@ def cart_delete(request): return HttpResponse('{"status":"success", "reason":"Úspěšně odstraněno z košíku."}') +def cart_decrease(request): + _id = request.GET['id'] + user = request.user + cart = user.cart + product = Product.objects.get(id=_id) + cart_product = CartProduct.objects.get(cart=cart, product=product) + cart_product.quantity -= 1 + if cart_product.quantity == 0: + cart_product.delete() + else: + cart_product.save() + return HttpResponse('{"status":"success", "reason":"Úspěšně sníženo množství v košíku."}') + + def cart(request): user = request.user if not user.is_authenticated: diff --git a/frontend/src/scripts/index.js b/frontend/src/scripts/index.js index 0ee6a22..d31acd5 100644 --- a/frontend/src/scripts/index.js +++ b/frontend/src/scripts/index.js @@ -112,6 +112,31 @@ class Main extends Component { } }) } + decreaseInCart(product){ + fetch(addr_prefix + "/api/cart/decrease?id=" + product.id).then(resp => resp.json()).then(json=>{ + if(json.status == "failed"){ + this.setState({ + status_text: json.reason, + status: "failed", + }) + }else{ + this.setState({ + cart: this.state.cart.filter(iter_product => { + if(iter_product.id == product.id){ + iter_product.quantity -= 1 + if(iter_product.quantity == 0) + return false; + return true + }else{ + return true + } + }), + status_text: json.reason, + status: "success", + }) + } + }) + } onSubmit(event){ event.preventDefault(); let form = document.getElementById("form"); @@ -301,6 +326,7 @@ class Main extends Component { {product.quantity} + {product.price} Kč