public async Task <Guid> NewOrderAsync(OrderRequest orderRequest) { var order = new Order(orderRequest.ClientName); await _orderRepository.AddAsync(order); var productsIds = orderRequest.Products.Select(x => x.ProductId).ToArray(); var products = await _productRepository.FindAsync(productsIds); foreach (var productOrder in orderRequest.Products) { var product = products.FirstOrDefault(x => x.Id == productOrder.ProductId); var orderProduct = order.AddProduct(product, productOrder.Quantity); await _orderProductRepository.AddOrUpdateAsync(orderProduct); } return(order.Id); }