public async Task <Response <OrderResponse> > SetOrderAgent(SetOrderAgentRequest request) { var order = await _uow.Orders.FindAsync(new Guid(request.OrderId)); if (order == null) { return(new Response <OrderResponse>(ResponseStatus.NotFound, null, ResponseMessagesConstans.CannotFindOrder)); } // assign agent to product var product = order.CalculatedData.Products.FirstOrDefault(p => p.Product.Id.ToString() == request.ProductId); if (product == null) { return(new Response <OrderResponse>(ResponseStatus.NotFound, null, ResponseMessagesConstans.CannotFindProductInOrder)); } product.Service.UserId = request.UserId; // set Agents ready if are product is already assigned var hasEveryProductAgent = order.CalculatedData.Products.All(p => p.Service.UserId != null); if (hasEveryProductAgent) { order.State = OrderState.AgentsReady; } order = await _uow.Orders.FindAndReplaceAsync(order.Id, order); var response = _mapService.MapOrder(order); return(new Response <OrderResponse>(ResponseStatus.Ok, response)); }
public async Task <IHttpActionResult> SetOrderAgent([FromBody] SetOrderAgentRequest request) { var response = await _orderService.SetOrderAgent(request); return(new CreateResult(response)); }