public async Task <ActionResult <OrderViewModel> > PostAsync(Models.Orders.OrderCreateRequest request) { foreach (var item in request.Items) { var exists = await _orleansClient.GetGrain <IProduct>(item.ProductId).Created(); if (!exists) { return(NotFound()); } if (item.Quantity < 0) { ModelState.AddModelError(nameof(item.Quantity), "Invalid"); return(BadRequest(ModelState)); } } var order = MapFromRequest(request); var result = await _orleansClient.GetGrain <IOrders>(Guid.Empty).Add(order); var response = MapToViewModel(result); return(response); }
public static GrainInterfaces.Orders.OrderCreateRequest MapFromRequest(Models.Orders.OrderCreateRequest request) { return(new GrainInterfaces.Orders.OrderCreateRequest { Items = request.Items.Select(x => MapFromRequest(x)).ToList(), Name = request.Name, }); }