Ejemplo n.º 1
0
        public IActionResult AddOrderRoute(int orderId, [FromBody] OrderRouteFormDto orderRouteFormDto)
        {
            var userId        = _userManager.GetUserIdAsInt(User);
            var orderRouteDto = _orderRouteAppService.AddOrderRoute(orderId, userId, orderRouteFormDto);

            if (orderRouteDto == null)
            {
                return(BadRequest());
            }

            return(StatusCode(StatusCodes.Status201Created, orderRouteDto));
        }
Ejemplo n.º 2
0
        public OrderRouteDto AddOrderRoute(int orderId, int senderId, OrderRouteFormDto orderRouteFormDto)
        {
            if (orderRouteFormDto.RecipientId.Value == senderId)
            {
                return(null);
            }

            var order = _orderRepository.GetById(orderId);

            if (order == null)
            {
                return(null);
            }

            var oldOrderStatus = order.OrderStatus;

            var recipientId = orderRouteFormDto.RecipientId.Value;
            var orderRoute  = new OrderRoute(recipientId, senderId, orderId, orderRouteFormDto.Comment);

            order.Send(orderRoute);

            if (order.OrderStatus == OrderStatus.OnEditing)
            {
                var users = _userRepository
                            .GetUsersInRoles(new[] { Roles.Stockkeeper })
                            .ToImmutableList();

                if (users.Any(u => u.Id == orderRouteFormDto.RecipientId.Value))
                {
                    order.ChangeStatus(OrderStatus.Active);
                }
            }

            _unitOfWork.Complete();

            orderRoute = _orderRouteRepository.GetById(orderRoute.Id);
            var orderRouteDto = _mapper.Map <OrderRouteDto>(orderRoute);

            orderRouteDto.OldOrderStatus = oldOrderStatus;
            orderRouteDto.NewOrderStatus = order.OrderStatus;

            return(orderRouteDto);
        }