public bool AddProductToShoppingCart(AddProductToShoppingCartModel addProductToShoppingCartModel) { bool result = false; if (addProductToShoppingCartModel.ProductId == 0 || addProductToShoppingCartModel.ShoppingCartId == 0 || addProductToShoppingCartModel.VariantId == 0) { throw new AddProductToShoppingCartException(); } if (CheckStock(addProductToShoppingCartModel.ProductId, addProductToShoppingCartModel.VariantId, addProductToShoppingCartModel.Quantity)) { lock (ShoppingCartManager.LockShoppingCartByProducts.GetOrAdd(addProductToShoppingCartModel.ShoppingCartId, _ => new object())) { //Check stocks before adding products to shoppingcart var shoppingCartItem = this.ShoppingCartServiceContext.ShoppingCartItems .FirstOrDefault(t => t.ProductId == addProductToShoppingCartModel.ProductId && t.VariantId == addProductToShoppingCartModel.VariantId); if (shoppingCartItem == null) { shoppingCartItem = new Data.Entites.ShoppingCartItem { ProductId = addProductToShoppingCartModel.ProductId, VariantId = addProductToShoppingCartModel.VariantId, ShoppingCartId = addProductToShoppingCartModel.ShoppingCartId }; this.ShoppingCartServiceContext.ShoppingCartItems.Add(shoppingCartItem); } shoppingCartItem.Quantity += addProductToShoppingCartModel.Quantity; this.ShoppingCartServiceContext.SaveChanges(); result = true; } } return(result); }
public AddProductToShoppingCartCommand(Guid id, AddProductToShoppingCartModel model) { Id = id; Model = model; }
public void AddProductToShoppingCart(AddProductToShoppingCartModel addProductToShoppingCartModel) { this.ShoppingCartManager.AddProductToShoppingCart(addProductToShoppingCartModel); }
public IActionResult AddProductToCart(Guid id, [FromBody] AddProductToShoppingCartModel model) { var result = DispatchCommand(new AddProductToShoppingCartCommand(id, model)); return(result.AsActionResult(NoContent)); }