protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if (value != null) { if (value.GetType() == typeof(RespondViewModel)) { RespondViewModel vm = (RespondViewModel)value; if (vm.SubmitResponse) { foreach (ScreeningRequestPersonEntityViewModel srpevm in vm.Responses.Values) { if (srpevm.ScreeningResultID == ScreeningResult.ID_PENDING) // TODO decouple from hard-coded id numbers { return(new ValidationResult(COLOR_CODING_ERROR_MESSAGE)); } } } } else if (value.GetType() == typeof(ConsolidateViewModel)) { ConsolidateViewModel vm = (ConsolidateViewModel)value; if (vm.SendForFinalDecision) { foreach (RecommendationViewModel rvm in vm.Recommendations.Values) { if (rvm.ScreeningResultID == ScreeningResult.ID_PENDING) { return(new ValidationResult(COLOR_CODING_ERROR_MESSAGE)); } } } } else if (value.GetType() == typeof(FinalizeViewModel)) { FinalizeViewModel vm = (FinalizeViewModel)value; if (vm.Finalize) { foreach (FinalDecisionViewModel fdvm in vm.FinalDecisions.Values) { if (fdvm.ScreeningResultID == ScreeningResult.ID_PENDING) { return(new ValidationResult(COLOR_CODING_ERROR_MESSAGE)); } if (fdvm.ScreeningSupportStatusID == ScreeningSupportStatus.ID_PENDING) { return(new ValidationResult(SUPPORT_STATUS_ERROR_MESSAGE)); } } } } } return(ValidationResult.Success); }
public ActionResult RequestAction(ConsolidateViewModel cvm) { if (ModelState.IsValid) { // update commentary foreach (RecommendationViewModel rvm in cvm.Recommendations.Values) { ScreeningRequestPersonRecommendation srpr; if (rvm.Id > 0) { srpr = this.screeningTasks.GetRecommendation(rvm.Id); } else { srpr = new ScreeningRequestPersonRecommendation(); } if (srpr.Version > rvm.Version) { ModelState.AddModelError("somekey", "Data has changed since you loaded this page. Please reload before saving again. Try pressing the back button to recover your edits."); return(RequestAction(cvm)); } srpr.Commentary = rvm.Commentary; srpr.Version = rvm.Version; srpr.RequestPerson = this.requestPersonTasks.GetRequestPerson(rvm.RequestPersonID); srpr.ScreeningResult = this.screeningTasks.GetScreeningResult(rvm.ScreeningResultID); this.screeningTasks.SaveOrUpdateRecommendation(srpr, User.Identity.Name); } if (cvm.SendForFinalDecision) { ViewBag.SuccessMessage = "Screening request sent for final decision."; // update status this.requestTasks.SaveRequestHistory(cvm.Id, this.requestTasks.GetRequestStatus(RequestStatus.NAME_SENT_FOR_FINAL_DECISION).Id, User.Identity.Name); // send email notification this.emailTasks.SendRequestSentForFinalDecisionEmail(User.Identity.Name, cvm.Id); return(RedirectToAction("Index")); } else { //ViewBag.SuccessMessage = "Successfully saved commentary. Click 'Send for Final Decision' when complete."; return(RedirectToAction("RequestAction", new { id = cvm.Id })); // need to finish transaction in order to load Recommendation.Id } } return(RequestAction(cvm.Id)); }
public ActionResult RequestAction(int id) { Request request = this.requestTasks.Get(id); if (request != null) { ViewBag.Request = request; ViewBag.ScreeningEntities = ScreeningEntity.GetNames(request.GetCreatedDate()); ConsolidateViewModel cvm = new ConsolidateViewModel(request, this.screeningTasks.GetScreeningResults(request.GetCreatedDate())); return(View(cvm)); } else { return(new HttpNotFoundResult()); } }