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