public virtual ActionResult Update(CartUpdate info) { var cartId = _EnsureCart(); _CartService.UpdateLineItemQty(cartId, info.Updates); return(RedirectToAction(MVC.Store.Cart.Index())); }
public static void Initialize(TestContext context) { var config = new TestConfig { ResetHttpContext = true }; var cartAdd = new BaseIntegrationTest <CartAdd, CartResponse>(config); var cartAddRequest = RequestBuilder.GetCartAddRequestForShoes(); var cartAddResponse = (Response <CartResponse>)cartAdd.TestObject.Execute(cartAddRequest); cartAdd = new BaseIntegrationTest <CartAdd, CartResponse>(); cartAddRequest = RequestBuilder.GetCartAddRequestForGiftCard(); cartAddResponse = (Response <CartResponse>)cartAdd.TestObject.Execute(cartAddRequest); cartAdd = new BaseIntegrationTest <CartAdd, CartResponse>(); cartAddRequest = RequestBuilder.GetCartAddRequestForAccessories(); cartAddResponse = (Response <CartResponse>)cartAdd.TestObject.Execute(cartAddRequest); var cartDetail = new BaseIntegrationTest <CartDetail, CartResponse>(); var cartDetailRequest = new EmptyRequest(); var cartDetailResponse = (Response <CartResponse>)cartDetail.TestObject.Execute(cartDetailRequest); _itemCountBefore = cartDetailResponse.resultset.Cart.CartItemCount; var cartUpdate = new BaseIntegrationTest <CartUpdate, CartResponse>(); var cartUpdateRequest = RequestBuilder.GetCartUpdateRequest(cartDetailResponse.resultset.Cart.CartItems); _result = (Response <CartResponse>)cartUpdate.TestObject.Execute(cartUpdateRequest); _itemCountAfter = _result.resultset.Cart.CartItemCount; _testObject = cartUpdate.TestObject; }
public ShoppingCart Put([FromBody] CartUpdate item) { var userId = HttpContext.GetUserId(); if (!userId.HasValue) { throw new Exception("Please login first"); } return(shoppingCartService.UpdateItem(item.ShoppingCartItemId, item.Quantity, userId.Value)); }
public async Task <(bool status, Cart cart)> ReplaceCartContentsAsync(CartUpdate cartUpdateRequest) { var response = await _httpClient.PostAsync <Cart>(_endpoints.Cart(_cartId), cartUpdateRequest); if (!response.Success) { return(false, null); } _cartId = response.Model.Id; return(true, response.Model); }
public ActionResult <CartUpdate> Post([FromBody] CartUpdate cartUpdate) { if (cartUpdate.Email.Equals("")) { return(NotFound()); } try { SQL_Interface.Instance.AddProductToCart(cartUpdate.Email, cartUpdate.productUpdate); return(CreatedAtAction(nameof(Get), new { email = cartUpdate.Email }, cartUpdate)); } catch (Exception) { return(NotFound()); } }
public CartDto Update(Guid userId, [FromBody] CartUpdate data) { var cart = _context.Cart.Include(x => x.CartItems).ThenInclude(x => x.Product).FirstOrDefault(x => x.UserId == userId); var product = cart.CartItems.FirstOrDefault(x => x.ProductId == data.ProductId); if (product == null) { _context.CartItems.Add(new CartItem { CartId = cart.Id, ProductId = data.ProductId, Quantity = data.Quantity }); } else { product.Quantity = data.Quantity; if (data.Quantity == 0) { _context.CartItems.Remove(product); } } _context.SaveChanges(); return(new CartDto(_context.Cart.Include(x => x.CartItems).ThenInclude(x => x.Product).FirstOrDefault(x => x.UserId == userId))); }
public IActionResult UpdateCart([FromBody] CartUpdate cu) { int cartCount; float subTotal; float total = 0; try { int productId; int qty; productId = cu.ProductId; qty = cu.Qty; Debug.WriteLine($"Prod ID:{productId}, Qty: {qty}"); if (qty <= 0) { return(Json(new { success = false })); } // if user is not logged in, update cart data in Session State as a Jsonified dict if (!User.Identity.IsAuthenticated) { var cartList = HttpContext.Session.GetJson <CartListViewModel>("cart"); // check if "cart" exists in Session data if (cartList != null) { // update cart item qty if cart item exists, otherwise add new cart item cartList.UpdateCart(new Cart { ProductId = productId, Qty = qty }); } // create new cratList Dict if there isn't one in session else { cartList = new CartListViewModel(); cartList.UpdateCart(new Cart { ProductId = productId, Qty = qty }); } // update "cart" Session data HttpContext.Session.SetJson("cart", cartList); // get latest "cartCount" and set to Session data cartCount = cartList.CartCount; HttpContext.Session.SetInt32("cartCount", cartCount); // for debugging, to delete foreach (Cart c in cartList.List) { Debug.WriteLine($"Prod: {c.ProductId} - {c.Qty}"); } Debug.WriteLine("Cart count: " + cartCount); var prod = db.Products.FirstOrDefault(p => p.Id == productId); subTotal = (prod.UnitPrice * qty) * (1 - prod.Discount); foreach (Cart c in cartList.List) { var currProd = db.Products.FirstOrDefault(p => p.Id == c.ProductId); var unitPrice = currProd.UnitPrice; var discount = currProd.Discount; total += unitPrice * c.Qty * (1 - discount); } } // else user is logged in, update cart data in SQL db Cart table else { string userId = User.FindFirst("userId").Value; var cart = db.Carts.FirstOrDefault(c => c.ProductId == productId && c.UserId == userId); // update cart item's qty if exists, otherwise add new Cart object if (cart != null) { cart.Qty = qty; } else { cart = new Cart() { UserId = userId, ProductId = productId, Qty = qty }; db.Carts.Add(cart); } db.SaveChanges(); // get latest "cartCount" and set to Session data cartCount = db.Users.FirstOrDefault(u => u.Id == userId).Carts.Sum(c => c.Qty); HttpContext.Session.SetInt32("cartCount", cartCount); // for debugging, to delete //foreach (Cart c in db.Users.FirstOrDefault(u => u.Id == userId).Carts) //{ // Debug.WriteLine($"Prod: {c.ProductId} - {c.Qty}"); //} //Debug.WriteLine("Cart count: " + cartCount); subTotal = cart.Product.UnitPrice * qty * (1 - cart.Product.Discount); foreach (Cart c in db.Users.FirstOrDefault(u => u.Id == userId).Carts) { total += c.Product.UnitPrice * c.Qty * (1 - c.Product.Discount); } } HttpContext.Session.SetInt32("cartCount", cartCount); } catch (Exception ex) { Debug.WriteLine(ex.Message); _logger.LogError(ex, $"Error updating cart for {cu}"); return(Json(new { success = false })); } return(Json(new { success = true, cartCount = cartCount, subTotal = subTotal.ToString("S$ 0.00"), total = total.ToString("S$ 0.00") })); }