/// <summary> /// Updates the specified cart. /// </summary> /// <param name="cart">The cart.</param> /// <returns>The updated cart if was successful and action status</returns> protected ICartResult Update(ICart cart) { ICartResult readResult = this.Read(cart); if (readResult.Status != CartStatus.Success) { return(readResult); } IEnumerable <Guid> toUpdate = cart.Products.Select(p => p.Id); IEnumerable <IProduct> products = readResult.Cart.Products .Where(p => !toUpdate.Contains(p.Id)) .Concat(cart.Products.Where(p => p.Amount > 0) ?? new IProduct[0]); ICart resultCart = this.CartRepository.Update(new Cart() { Id = cart.Id, Products = products.ToArray() }); return(new CartResult() { Cart = resultCart, Status = resultCart != null ? CartStatus.Success : CartStatus.RepositoryError }); }
protected IActionResult SubAction(ICart cart, CartAction action) { ICartResult result = this.CartService.Execute(new CartParameter() { Cart = cart, Action = action }); return(result.Status == CartStatus.Success ? (result.Cart != null ? new OkObjectResult(new CartViewModel(result.Cart)) : (IActionResult) new OkResult()) : BadRequestResult(StatusAttribute.GetDescritption(result.Status))); }