Beispiel #1
0
        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));
        }
Beispiel #2
0
        public async Task <IHttpActionResult> SetOrderAgent([FromBody] SetOrderAgentRequest request)
        {
            var response = await _orderService.SetOrderAgent(request);

            return(new CreateResult(response));
        }