public async Task <IActionResult> CreateNew([FromBody] ApiV1OrderCreateRequestModel model) { if (model != null && ModelState.IsValid) { var userId = loginService.GetLoggedInUserId(); var orderEntity = new OrderEntity { CurrencyId = model.CurrencyId, UserId = userId }; var orderProductList = new List <OrderProductEntity>(); var totalPrice = decimal.Zero; foreach (var keyValuePair in model.ProductList) { if (!await productService.DoesProductExistByIdAsync(keyValuePair.Key)) { logger.LogDebug( $"Failed to add product with id {keyValuePair.Key} to the order. The given Product id doesn't exist at all."); return(BadRequest("The product Id doesn't exist")); } var currentProduct = await productService.GetByIdAsync(keyValuePair.Key); var orderProductEntity = new OrderProductEntity { Amount = keyValuePair.Value, OrderId = orderEntity.Id, ProductId = currentProduct.Id }; orderProductList.Add(orderProductEntity); totalPrice += currentProduct.Prices.Find(x => x.CurrencyId == model.CurrencyId).Price * keyValuePair.Value; } orderEntity.TotalPrice = totalPrice; await orderService.AddOrderAsync(orderEntity); orderProductList.ForEach(x => x.OrderId = orderEntity.Id); logger.LogInformation($"Successfully added new order."); await orderService.AddAllOrderProductsAsync(orderProductList); logger.LogInformation($"Successfully added new orderProductEntity."); return(Ok(orderEntity.ToApiV1OrderResponseModel())); } else { logger.LogWarning($"Erorr while adding Order. Validation failed"); return(BadRequest(ModelState.ToApiV1ErrorResponseModel())); } }