public ActionResult ReplaceRater(ReplaceRaterViewModel model) { if (model == null || model.EvalId == null || model.RaterToReplace == null || model.NewRater == null) { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } var eval = UnitOfWork.EvaluationRepository.GetByID(model.EvalId); if (eval == null) { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } if (eval.Raters.Any(r => r.Email.Equals(model.NewRater.Email))) { TempData["DuplicateError"] = "This evaluation already has a rater with that email."; return(RedirectToAction("ReplaceRater", new { id = model.RaterToReplace.RaterID })); } if (model.NewRater.Email.Equals(eval.Employee.Email)) { TempData["DuplicateError"] = "Nice try. You can't rate yourself."; return(RedirectToAction("ReplaceRater", new { id = model.RaterToReplace.RaterID })); } var raterToDisable = UnitOfWork.RaterRepository.GetByID(model.RaterToReplace.RaterID); if (raterToDisable == null) { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } raterToDisable.Disabled = true; UnitOfWork.Save(); eval.Raters.Add(model.NewRater); UnitOfWork.Save(); TempData["ReplaceRaterSuccess"] = "Successfully replaced rater."; return(RedirectToAction("EditRaters", "Raters", new { id = eval.EvaluationID })); }
// GET: ReplaceRater public ActionResult ReplaceRater(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var raterToReplace = UnitOfWork.RaterRepository.GetByID(id); if (raterToReplace == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var eval = UnitOfWork.EvaluationRepository.GetByID(raterToReplace.EvaluationID); if (eval == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var employee = UnitOfWork.EmployeeRepository.GetByID(eval.EmployeeID); if (employee == null || !employee.Email.Equals(User.Identity.GetUserName())) { return(new HttpStatusCodeResult(HttpStatusCode.Unauthorized)); } var model = new ReplaceRaterViewModel() { EvalId = eval.EvaluationID, RaterToReplace = raterToReplace, NewRater = new Rater { Role = raterToReplace.Role } }; return(View("ReplaceRater", model)); }