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"));
        }
Exemple #2
0
        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"));
        }
Exemple #3
0
        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);
        }
Exemple #5
0
        /// <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);
        }
Exemple #7
0
        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
            });
        }