public ActionResult Edit(WebOrderRequestEditViewModel viewModel) { string emailRecipientList = String.Empty; ResultContainer resultContainer = null; GRINGlobalService grinGlobalService = new GRINGlobalService(this.AuthenticatedUserSession.Environment); SmtpService smtpService = new SmtpService(); try { WebOrderRequest webOrderRequest = new WebOrderRequest(); webOrderRequest.ID = viewModel.ID; webOrderRequest.StatusCode = viewModel.Action; if (viewModel.Action == OrderRequestAction.NRRReviewEnd) { grinGlobalService.SetReviewStatus(viewModel.ID, AuthenticatedUser.Cooperator.WebCooperator.ID, false); } else { if ((viewModel.Action != "NRR_NOTE") && (viewModel.Action != "NRR_INFO")) { resultContainer = grinGlobalService.UpdateWebOrderRequest(webOrderRequest); } resultContainer = grinGlobalService.AddWebOrderRequestAction(new WebOrderRequestAction { WebOrderRequestID = viewModel.ID, ActionCode = viewModel.Action, Note = viewModel.ActionNote, CreatedByCooperatorID = AuthenticatedUser.WebUserID }); if (viewModel.Action == "NRR_APPROVE") { emailRecipientList = grinGlobalService.GetEmailNotificationList(viewModel.ID); grinGlobalService.SendEmail(viewModel.ID, "CAP", emailRecipientList); resultContainer = grinGlobalService.AddWebOrderRequestAction(new WebOrderRequestAction { WebOrderRequestID = viewModel.ID, ActionCode = viewModel.Action, Note = viewModel.ActionNote, CreatedByCooperatorID = AuthenticatedUser.WebUserID }); } else if (viewModel.Action == "NRR_REJECT") { emailRecipientList = grinGlobalService.GetEmailNotificationList(viewModel.ID); grinGlobalService.SendEmail(viewModel.ID, "CCL", emailRecipientList); grinGlobalService.SendEmail(viewModel.ID, "RRJ", viewModel.WebCooperator.EmailAddress); resultContainer = grinGlobalService.AddWebOrderRequestAction(new WebOrderRequestAction { WebOrderRequestID = viewModel.ID, ActionCode = viewModel.Action, Note = viewModel.ActionNote, CreatedByCooperatorID = AuthenticatedUser.WebUserID }); } else if (viewModel.Action == "NRR_INFO") { grinGlobalService.SendEmail(viewModel.ID, "RQI", viewModel.WebCooperator.EmailAddress); } if (resultContainer.ResultCode == ResultContainer.ResultCodeValue.Error.ToString()) { throw new Exception("Error sending mail: " + resultContainer.ResultMessage + resultContainer.ResultDescription); } } if ((viewModel.Action != "NRR_NOTE") && (viewModel.Action != "NRR_INFO")) { return(RedirectToAction("Index", "WebOrder")); } else { return(RedirectToAction("Edit", "WebOrder", new { id = viewModel.ID })); } } catch (Exception ex) { Log.Error(ex, ex.Message); return(RedirectToAction("InternalServerError", "Error")); } }
private WebOrderRequestEditViewModel GetData(int id, bool reviewMode) { ResultContainer resultContainer = null; WebOrderRequest webOrderRequest = null; GRINGlobalService grinGlobalService = new GRINGlobalService(this.AuthenticatedUserSession.Environment); WebOrderRequestEditViewModel viewModel = new WebOrderRequestEditViewModel(); try { if (reviewMode) { resultContainer = grinGlobalService.SetReviewStatus(id, AuthenticatedUser.Cooperator.WebCooperator.ID, true); resultContainer = grinGlobalService.AddWebOrderRequestAction(new WebOrderRequestAction { WebOrderRequestID = id, ActionCode = "NRR_REVIEW", CreatedByCooperatorID = AuthenticatedUser.WebUserID }); } webOrderRequest = grinGlobalService.GetWebOrderRequest(id); if (webOrderRequest == null) { throw new NullReferenceException(String.Format("Null web order request returned for ID {0}", id)); } viewModel.AuthenticatedUser = AuthenticatedUser; viewModel.WebCooperatorID = AuthenticatedUser.Cooperator.WebCooperator.ID; viewModel.StatusCode = webOrderRequest.StatusCode; viewModel.OrderDate = webOrderRequest.OrderDate; viewModel.WebCooperator = webOrderRequest.Cooperators.First(); viewModel.IsReviewMode = reviewMode; viewModel.IsLocked = webOrderRequest.IsLocked; viewModel.ID = webOrderRequest.ID; viewModel.OrderDate = webOrderRequest.OrderDate; viewModel.IntendedUseCode = webOrderRequest.IntendedUseCode; viewModel.IntendedUseNote = webOrderRequest.IntendedUseNote; viewModel.Note = webOrderRequest.Note; viewModel.SpecialInstruction = webOrderRequest.SpecialInstruction; viewModel.OwnedDate = webOrderRequest.OwnedDate; viewModel.OwnedByCooperatorID = webOrderRequest.OwnedByCooperatorID; viewModel.OwnedByCooperatorName = webOrderRequest.OwnedByCooperatorName; viewModel.WebOrderRequestItems = webOrderRequest.WebOrderRequestItems; viewModel.WebOrderRequestAddresses = webOrderRequest.Addresses; viewModel.EmailAddressList = webOrderRequest.EmailAddressList; viewModel.EmailTemplates = grinGlobalService.GetEmailTemplates(); var queryWebOrderRequestDates = from action in webOrderRequest.WebOrderRequestActions group action by action.ActionDate into webOrderRequestActionGroup orderby webOrderRequestActionGroup.Key descending select webOrderRequestActionGroup; foreach (var group in queryWebOrderRequestDates) { WebOrderRequestActionGroupViewModel webOrderRequestActionGroupViewModel = new WebOrderRequestActionGroupViewModel(); webOrderRequestActionGroupViewModel.ActionDate = DateTime.Parse(group.Key.ToString()); foreach (var subGroup in group) { WebOrderRequestAction webOrderRequestAction = new WebOrderRequestAction(); webOrderRequestAction.ID = subGroup.ID; webOrderRequestAction.ActionCode = subGroup.ActionCode; webOrderRequestAction.Title = subGroup.Title; webOrderRequestAction.Description = subGroup.Description; webOrderRequestAction.Note = subGroup.Note; webOrderRequestAction.ActionDate = subGroup.ActionDateTime; webOrderRequestAction.CreatedByCooperatorName = subGroup.CreatedByCooperatorName; webOrderRequestActionGroupViewModel.WebOrderRequestActions.Add(webOrderRequestAction); } viewModel.WebOrderRequestActionGroupViewModels.Add(webOrderRequestActionGroupViewModel); } } catch (Exception ex) { Log.Error(ex, ex.Message); } return(viewModel); }
public ActionResult Edit(WebOrderRequestEditViewModel viewModel) { ResultContainer resultContainer = null; GRINGlobalService grinGlobalService = new GRINGlobalService(this.AuthenticatedUserSession.Environment); SmtpService smtpService = new SmtpService(); try { WebOrderRequest webOrderRequest = new WebOrderRequest(); webOrderRequest.ID = viewModel.ID; webOrderRequest.StatusCode = viewModel.Action; if (viewModel.Action == OrderRequestAction.NRRReviewEnd) { grinGlobalService.SetReviewStatus(viewModel.ID, AuthenticatedUser.WebCooperatorID, false); } else { if (viewModel.Action != "NRR_NOTE") { resultContainer = grinGlobalService.UpdateWebOrderRequest(webOrderRequest); } resultContainer = grinGlobalService.AddWebOrderRequestAction(new WebOrderRequestAction { WebOrderRequestID = viewModel.ID, ActionCode = viewModel.Action, Note = viewModel.ActionNote, CreatedByCooperatorID = AuthenticatedUser.WebCooperatorID }); EmailMessage emailMessage = new EmailMessage(); emailMessage.SenderAddress = "*****@*****.**"; emailMessage.IsHtmlFormat = true; if (viewModel.Action == "NRR_APPROVE") { emailMessage.RecipientAddress = "*****@*****.**"; emailMessage.Subject = "NRR Review Update: Order #" + webOrderRequest.ID + " Approved"; emailMessage.Body = "Order # " + webOrderRequest.ID + " has been approved. You may now process it normally via the Order Wizard."; smtpService.SendMessage(emailMessage); } else if (viewModel.Action == "NRR_REJECT") { // EMAIL TO REQUESTOR //emailMessage.RecipientAddress = viewModel.WebCooperator.EmailAddress; emailMessage.RecipientAddress = "*****@*****.**"; emailMessage.Subject = "Your Germplasm Request (Order #" + webOrderRequest.ID + ")"; System.Text.StringBuilder sbEmailBody = new System.Text.StringBuilder(); sbEmailBody.Append("Dear Germplasm Requestor,<p>Thank you for your interest in our germplasm collection.The mission of the National Plant Germplasm System(NPGS)"); sbEmailBody.Append("is to provide materials in small quantities to research and education entities when genetic diversity or genetic standards are a"); sbEmailBody.Append("requirement.The accessions maintained by NPGS are not intended for home or personal use that can"); sbEmailBody.Append("be better served by commercially - available varieties."); sbEmailBody.Append("*** PLACEHOLDER FOR TEMPLATE TEXT ***"); emailMessage.Body = sbEmailBody.ToString(); smtpService.SendMessage(emailMessage); // EMAIL TO CURATORS emailMessage.RecipientAddress = "*****@*****.**"; emailMessage.Subject = "NRR Review Update: Order " + webOrderRequest.ID + " Canceled"; emailMessage.Body = "Order # " + webOrderRequest.ID + " has been determined to be a Non-Research Request (NRR), and has been cancelled. You may reference this order within the Order Wizard."; smtpService.SendMessage(emailMessage); } } if (viewModel.Action != "NRR_NOTE") { return(RedirectToAction("Index", "WebOrder")); } else { return(RedirectToAction("Edit", "WebOrder", new { id = viewModel.ID })); } } catch (Exception ex) { log.Error(ex.Message, ex); //TO DO: CHANGE return(View("~/Views/GRINGlobal/WebOrder/Index.cshtml")); } }