public async Task <CartResponseModel> GetCheckoutAsync(CartRequestModel requestModel) { CartResponseModel responseModel = new CartResponseModel(); decimal totalPrice = default(decimal); List <int> printedEditionIds = requestModel.CartItemModels.Select(item => item.PrintedEditionId).ToList(); List <PrintedEdition> printedEditions = await _printedEditionRepository.GetRangeByIdAsync(printedEditionIds); foreach (CartItemModel cartItem in requestModel.CartItemModels) { PrintedEdition printedEdition = printedEditions.FirstOrDefault(item => item.Id == cartItem.PrintedEditionId); CheckoutItemModel checkoutItem = new CheckoutItemModel { PrintedEditionId = printedEdition.Id, PrintedEditionName = printedEdition.Name, Quantity = cartItem.Quantity, UnitPrice = printedEdition.Price, OrderAmount = printedEdition.Price * cartItem.Quantity }; totalPrice += checkoutItem.OrderAmount; responseModel.CheckoutItemModels.Add(checkoutItem); } responseModel.TotalPrice = totalPrice; return(responseModel); }
public CheckoutItemModel Get(string cartId) { var checkoutItems = this.checkoutRepository.Get(cartId); if (!checkoutItems.Any()) { return(null); } var sum = checkoutItems.Select(c => c.Price * c.Quantity).Sum(); var checkoutItem = new CheckoutItemModel(); checkoutItem.Cart = checkoutItems; checkoutItem.Sum = sum; return(checkoutItem); }