public async Task <Order> CreateOrderAsync(string buyerEmail, int deliveryMethodId, string basketId, Address shipingAddress) { var basket = await _basketRepo.GetBasketAsync(basketId); var items = new List <OrderItem>(); foreach (var item in basket.Items) { var productItem = await _productRepo.GetById(item.Id); var itemOrder = new ProductItemOrdered(productItem.Id, productItem.Name, productItem.PictureUrl); var orderItem = new OrderItem(itemOrder, productItem.Price, item.Quantity); items.Add(orderItem); } var deliveryMethod = await _deliveryRepo.GetById(deliveryMethodId); var subTotal = items.Sum(item => item.Price * item.Quantity); var order = new Order(items, buyerEmail, shipingAddress, deliveryMethod, subTotal); return(order); }
public async Task <ActionResult <CustomerBasket> > GetBasketById(string id) { var basket = await _basketManager.GetBasketAsync(id); return(Ok(basket ?? new CustomerBasket(id))); }