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)); }
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); }