コード例 #1
0
ファイル: OrderService.cs プロジェクト: stylkyn/ess
        public async Task <Response <OrderResponse> > SetOrderState(SetOrderStateRequest request)
        {
            var order = await _uow.Orders.FindAsync(new Guid(request.OrderId));

            if (order == null)
            {
                return(new Response <OrderResponse>(ResponseStatus.NotFound, null, ResponseMessagesConstans.CannotFindOrder));
            }

            // agent can set only specific states
            if (!request.RequestIdentity.HasAdminAccess && request.RequestIdentity.HasAgentAccess)
            {
                var availableStates = new List <OrderState> {
                    OrderState.Finished
                };
                if (!availableStates.Contains(request.State))
                {
                    return(new Response <OrderResponse>(ResponseStatus.BadRequest, null, ResponseMessagesConstans.AgentHasNotPermissionSetThisState));
                }
            }

            order.State = request.State;
            order       = await _uow.Orders.FindAndReplaceAsync(order.Id, order);

            var user = await _uow.Users.FindAsync(new Guid(order.Customer.UserId));

            if (user != null)
            {
                await _mailingLibrary.SendChangeOrderStateEmail(order, user);
            }

            var response = _mapService.MapOrder(order);

            return(new Response <OrderResponse>(ResponseStatus.Ok, response));
        }
コード例 #2
0
        public async Task <IHttpActionResult> SetOrderState([FromBody] SetOrderStateRequest request)
        {
            var response = await _orderService.SetOrderState(request);

            return(new CreateResult(response));
        }