public IActionResult RemoveConfirmed(int id) { var cartItem = _cartItemRepository.ReadCartItem(id); var item = _itemRepository.ReadAllItems().FirstOrDefault(c => c.Name == cartItem.Name && c.Type == cartItem.Type && c.Price == cartItem.Price); item.AmountInStock += cartItem.Quantity; _itemRepository.UpdateItem(item.Id, item); _cartItemRepository.DeleteCartItem(id); return(RedirectToAction("Index", "ShoppingCart")); }
public IActionResult DeleteConfirmed(int id) { // read Cartitem var cartItem = _cartItem.ReadCartItem(id); // read item var item = _item.ReadAllItems().FirstOrDefault( c => c.Name == cartItem.Name && c.Type == cartItem.Type && c.Price == cartItem.Price); // add quantity in cart back to amount of item in stock item.AmountInStock += cartItem.Quantity; // update item in stock to match the updated amount _item.UpdateItem(item.Id, item); // remove item from CartItem _cartItem.DeleteCartItem(id); // redirect to ShoppingCart/Item return(RedirectToAction("Index", "ShoppingCart")); }
public RemoveItemFromCartResponse RemoveItemFromCart(RemoveItemFromCartRequest removeItemFromCartRequest) { RemoveItemFromCartResponse response = new RemoveItemFromCartResponse(); var cartItem = _cartItemRepository.FindCartItemById(removeItemFromCartRequest.CartItmeId); _cartItemRepository.DeleteCartItem(cartItem); response.CartItemId = cartItem.Id; return(response); }
public async Task <bool> EmptyCart(App.Support.Common.Models.CartService.Cart cart) { foreach (var cartItem in cart.CartItems) { await _cartItemRepository.DeleteCartItem(cartItem); } _cartRepository.DeleteCart(cart); return(true); }
/// <summary> /// Adds a new order to the database /// </summary> /// <param name="order">Order to be added</param> /// <param name="visitorId">Visitor id of the corresponding cart</param> /// <returns>DTO of the order</returns> public AlzaAdminDTO <Order> AddOrder(Order order, string visitorId) { try { //todo check tolist var cartProductId = _cartItemRepository.GetCartItems().Where(ci => ci.VisitorId == visitorId).Select(ci => ci.ProductId).ToList(); order.StateId = 1; //default orderState is the first one var createdOrder = _orderRepository.AddOrder(order); foreach (var productId in cartProductId) { _cartItemRepository.DeleteCartItem(visitorId, productId); } return(AlzaAdminDTO <Order> .Data(createdOrder)); } catch (Exception e) { return(AlzaAdminDTO <Order> .Error(e.Message + Environment.NewLine + e.StackTrace)); } }
public void RemoveFromCart(RemoveFromCartViewModel removeFromCartViewModel) { var cartItem = _cartItemRepository.FindCartItemById(removeFromCartViewModel.CartItemId); _cartItemRepository.DeleteCartItem(cartItem); }
public async Task <ResultViewModel> AddToCart([FromBody] AdjustCartItemRequestViewModel model) { var accountId = HttpContext.Items[AppConsts.HttpContextItemAccountId]?.ToString(); if (accountId == null) { return new ResultViewModel { Data = null, Message = "Error: You must login before add Cart Item into Cart", Status = Status.Error } } ; var cart = _cartRepository.GetCartByAccountId(accountId) ?? _cartService.GenerateAnEmptyCart(Guid.Parse(accountId)); var cartViewModel = await _cartService.GenerateCartViewModel(cart); var checkProductAvailability = await _cartService.CheckProductAvailability(Guid.Parse(model.ProductId), model.Quantity); if (!checkProductAvailability) { return(new ResultViewModel { Data = cartViewModel, Message = "Error: You can not insert a Cart Item with quantity larger than inventory", Status = Status.Error }); } var cartItem = cart.CartItems.FirstOrDefault(ci => ci.ProductId.ToString() == model.ProductId); if (cartItem == null && model.Quantity > 0) { cartItem = new CartItem { ProductId = Guid.Parse(model.ProductId), Quantity = model.Quantity, AddedAt = DateTime.Now, CartId = cart.Id }; await _cartRepository.InsertOrUpdateCart(cart); await _cartItemRepository.InsertCartItem(cartItem); } else { cartViewModel = await _cartService.GenerateCartViewModel(cart); if (cartItem == null && model.Quantity < 0) { return(new ResultViewModel { Data = cartViewModel, Message = "Error: You can not decrease a Cart Item quantity to negative", Status = Status.Success }); } else { if (cartItem != null) { cartItem.Quantity += model.Quantity; if (cartItem.Quantity == 0) { await _cartItemRepository.DeleteCartItem(cartItem); } else { await _cartItemRepository.UpdateCartItem(cartItem); await _cartRepository.InsertOrUpdateCart(cart); } } } } _cartRepository.RemoveEmptyCart(cart); cartViewModel = await _cartService.GenerateCartViewModel(cart); return(new ResultViewModel { Data = cartViewModel, Message = "Success", Status = Status.Success }); }