Ejemplo n.º 1
0
        public async Task <IActionResult> Confirmation(int id, LabReceiveModel model)
        {
            var order = await _dbContext.Orders.Include(i => i.Creator).SingleOrDefaultAsync(o => o.Id == id);

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

            if (order.Status != OrderStatusCodes.Confirmed)
            {
                ErrorMessage = "You can only receive a confirmed order";
                return(RedirectToAction("Orders"));
            }

            if (string.IsNullOrWhiteSpace(order.RequestNum))
            {
                ErrorMessage = "You must add a request number first";
                return(RedirectToAction("AddRequestNumber", new { id = id }));
            }

            var orderDetails = order.GetOrderDetails();

            orderDetails.LabComments      = model.LabComments;
            orderDetails.AdjustmentAmount = model.AdjustmentAmount;
            if (orderDetails.AdjustmentAmount != 0)
            {
                orderDetails.AdjustmentComments = model.AdjustmentComments;
            }
            else
            {
                orderDetails.AdjustmentComments = null;
            }

            order.SaveDetails(orderDetails);

            order.Status = OrderStatusCodes.Received;

            await _orderService.SendOrderToAnlab(order);

            await _orderMessageService.EnqueueReceivedMessage(order, model.BypassEmail);

            var extraMessage = model.BypassEmail ? "Without Email" : "";
            var user         = _dbContext.Users.Single(a => a.Id == CurrentUserId);

            order.History.Add(new History
            {
                Action      = "Received",
                Status      = order.Status,
                ActorId     = user.NormalizedUserName,
                ActorName   = user.Name,
                JsonDetails = order.JsonDetails,
                Notes       = $"Request Number: {order.RequestNum} {extraMessage}",
            });

            await _dbContext.SaveChangesAsync();

            Message = "Order marked as received";
            return(RedirectToAction("Orders"));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Confirmation(int id, LabReceiveModel model)
        {
            var order = await _dbContext.Orders.Include(i => i.Creator).SingleOrDefaultAsync(o => o.Id == id);

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

            if (order.Status != OrderStatusCodes.Confirmed)
            {
                ErrorMessage = "You can only receive a confirmed order";
                return(RedirectToAction("Orders"));
            }

            if (String.IsNullOrWhiteSpace(order.RequestNum))
            {
                ErrorMessage = "You must add a request number first";
                return(RedirectToAction("AddRequestNumber", new { id = id }));
            }

            var orderDetails = order.GetOrderDetails();

            orderDetails.LabComments      = model.LabComments;
            orderDetails.AdjustmentAmount = model.AdjustmentAmount;

            order.SaveDetails(orderDetails);

            order.Status = OrderStatusCodes.Received;

            await _orderService.SendOrderToAnlab(order);

            await _orderMessageService.EnqueueReceivedMessage(order, model.BypassEmail);

            await _dbContext.SaveChangesAsync();

            Message = "Order marked as received";
            return(RedirectToAction("Orders"));
        }