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);
        }
Beispiel #2
0
        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);
        }