public void Setup() { this.eval = new Evaluation { EvaluationID = 1 }; this.raters = new List <Rater> { new Rater { RaterID = 1, Name = "Michael Scarn", Role = "Spy", Email = "*****@*****.**", Answers = "5,1,5", EvaluationID = this.eval.EvaluationID, Evaluation = this.eval }, new Rater { RaterID = 2, Name = "John Adams", Role = "Spy", Email = "*****@*****.**", Answers = "2,1,3", EvaluationID = this.eval.EvaluationID, Evaluation = this.eval }, new Rater { RaterID = 3, Name = "Alex Jefferson", Role = "Spy", Email = "*****@*****.**", Answers = "4,1,5", EvaluationID = this.eval.EvaluationID, Evaluation = this.eval } }; this.mockUnitOfWork = new Mock <IUnitOfWork>(); this.controller = new RatersController(); this.controller.UnitOfWork = mockUnitOfWork.Object; this.mockUnitOfWork.Setup( m => m.RaterRepository.Get(null, null, "")).Returns( raters); foreach (var rater in this.raters) { this.mockUnitOfWork.Object.RaterRepository.Insert(rater); } this.ratersVm = new AssignRatersViewModel { EvalId = this.eval.EvaluationID, Raters = this.raters }; }
public ActionResult ConfirmRaters(int?id) //evalId { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var eval = UnitOfWork.EvaluationRepository.GetByID(id); if (eval == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var employee = UnitOfWork.EmployeeRepository.GetByID(eval.EmployeeID); if (employee == null) { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } // If the employee has a previously completed eval (with raters), pull as much rater info from it as possible. if (employee.Evaluations.Any(e => e.IsComplete() && e.Raters.Count != 0)) { var completedEval = employee.Evaluations.Last(e => e.IsComplete() && e.Raters.Count != 0); var previousRaters = completedEval.Raters.ToList(); foreach (var rater in eval.Raters) { foreach (var prevRater in previousRaters) { if (rater.Role.Equals(prevRater.Role) && // Roles are the same !prevRater.Disabled && // Previous rater isn't disabled. !eval.Raters.Any(r => r.Email.Equals(prevRater.Email))) // model didn't already use this rater. { rater.Name = prevRater.Name; rater.Email = prevRater.Email; UnitOfWork.Save(); } } } } var model = new AssignRatersViewModel() { EvalId = eval.EvaluationID, Raters = eval.Raters.ToList() }; return(View("ConfirmRaters", model)); }
public ActionResult AssignRaters(AssignRatersViewModel model) { if (model == null || model.Raters.Count == 0) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var eval = UnitOfWork.EvaluationRepository.GetByID(model.EvalId); if (eval == null) { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } if (eval.Raters.Count != model.Raters.Count) { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } // Check for duplicate emails (Not using Unique tags because they don't need to be unique in the db). if (model.Raters.DistinctBy(r => r.Email).Count() != model.Raters.Count) { TempData["DuplicateError"] = "Please enter a unique email address for each rater."; return(RedirectToAction("AssignRaters", new { id = model.EvalId })); } if (model.Raters.Any(r => r.Email.Equals(eval.Employee.Email))) { TempData["DuplicateError"] = "Nice try. You can't rate yourself."; return(RedirectToAction("AssignRaters", new { id = eval.EvaluationID })); } var i = 0; foreach (var rater in eval.Raters) { rater.Name = model.Raters[i].Name; rater.Email = model.Raters[i].Email; UnitOfWork.Save(); i++; } return(RedirectToAction("NotifyRatersNow", "Raters", new { id = eval.EvaluationID })); }
public ActionResult EditRaters(AssignRatersViewModel model) { if (model == null || model.Raters.Count == 0) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var eval = UnitOfWork.EvaluationRepository.GetByID(model.EvalId); if (eval == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (model.Raters.DistinctBy(r => r.Email).Count() != model.Raters.Count) { TempData["DuplicateError"] = "Please enter a unique email address for each rater."; return(RedirectToAction("EditRaters", new { id = model.EvalId })); } if (model.Raters.Any(r => r.Email.Equals(eval.Employee.Email))) { TempData["DuplicateError"] = "Nice try. You can't rate yourself."; return(RedirectToAction("EditRaters", new { id = model.EvalId })); } var i = 0; foreach (var rater in eval.Raters) { rater.Name = model.Raters[i].Name; rater.Email = model.Raters[i].Email; UnitOfWork.Save(); i++; } TempData["EditRaterSuccess"] = "Successfully updated raters."; return(RedirectToAction("EmployeeEvalsIndex", "Evaluations", new { id = eval.EmployeeID })); }
public ActionResult ConfirmRaters(AssignRatersViewModel model) { return(RedirectToAction("NotifyRatersNow", new { id = model.EvalId })); }