public Order PlaceOrder(Cart cart) { var cartLineItemPrices = cart.CartLineItems.ToDictionary(cli => cli.Id, cli => _priceService.GetCartLineItemPrice(cli)); var order = new Order(Guid.NewGuid(), cart, cartLineItemPrices); var price = _priceService.GetTotalCartPrice(cart); order.Total = price; _orderRepository.Add(order); DomainEvents.Raise(new OrderPlacedEvent(order.Id, order.CustomerId)); return(order); }
/// <summary> /// Gets the entire cart. /// </summary> /// <returns></returns> public CartViewModel Get() { var cart = _currentCart.Cart; var cartVm = _cartViewModelFactory.Create(cart); var cartPrice = _priceService.GetTotalCartPrice(cart); cartVm.Price = cartPrice.Amount; cartVm.Currency = cartPrice.Currency.ToString(); cartVm.PriceFormatted = cartPrice.ToString(); var cartLineItemPrices = cart.CartLineItems.ToDictionary(cli => cli.VariantId, cli => _priceService.GetCartLineItemPrice(cli)); foreach (var cli in cartVm.CartLineItems) { var price = cartLineItemPrices.Single(p => p.Key == cli.VariantId).Value; cli.Price = price.Amount; cli.Currency = price.Currency.ToString(); cli.PriceFormatted = price.ToString(); } return(cartVm); }