public IActionResult ChooseCritics(long id) { if (!User.IsInRole("Admin")) { return(RedirectToAction("Index", "Home")); } var version = _paperVersionRepository.GetPaperVersion(id); if (version == null) { StatusMessage = "Error. Paper do not exists."; return(RedirectToAction("Index", "PaperVersions")); } var users = _userRepository.GetAdminsAndCritics(); ViewBag.Critics = new List <SelectListItem>(); foreach (var user in users) { ViewBag.Critics.Add(new SelectListItem { Text = user.Degree + " " + user.FirstName + " " + user.LastName + " (" + user.Email + ')', Value = user.Id }); } ; var model = new ChooseCriticsViewModel() { PaperVersion = version, PaperVersionId = version.Id, StatusMessage = StatusMessage }; return(View(model)); }
public IActionResult ChooseCritics(ChooseCriticsViewModel model) { if (!User.IsInRole("Admin")) { return(RedirectToAction("Index", "Home")); } if (ModelState.IsValid) { var version = _paperVersionRepository.GetPaperVersion(model.PaperVersionId); if (version == null) { StatusMessage = "Error. Paper do not exists."; return(RedirectToAction("Index", "PaperVersions")); } if (model.FirstCriticId == model.SecondCriticId) { StatusMessage = "Error. Two different critics should be chosen!"; return(RedirectToAction("ChooseCritics", model.PaperVersionId)); } var firstCritic = _userRepository.GetApplicationUser(model.FirstCriticId); var secondCritic = _userRepository.GetApplicationUser(model.SecondCriticId); if (!_userManager.IsInRoleAsync(firstCritic, "Critic").Result&& !_userManager.IsInRoleAsync(firstCritic, "Admin").Result) { StatusMessage = "Error. First user cannot become a critic!"; return(RedirectToAction("Index", "PaperVersions")); } if (!_userManager.IsInRoleAsync(secondCritic, "Critic").Result&& !_userManager.IsInRoleAsync(secondCritic, "Admin").Result) { StatusMessage = "Error. Second user cannot become a critic!"; return(RedirectToAction("Index", "PaperVersions")); } List <ReviewDTO> list = new List <ReviewDTO>(); list.Add(new ReviewDTO { CriticId = model.FirstCriticId, PaperVersionId = model.PaperVersionId, Deadline = model.Deadline } ); list.Add(new ReviewDTO { CriticId = model.SecondCriticId, PaperVersionId = model.PaperVersionId, Deadline = model.Deadline }); IEnumerable <ReviewDTO> reviews = list; var result = _reviewRepository.CreateReviews(reviews); if (result == 2) { _paperVersionRepository.SetStatusWaitingForReview(model.PaperVersionId); StatusMessage = "Critics has been choosen."; return(RedirectToAction("Index", "PaperVersions")); } } StatusMessage = "Error. Entered data is not valid."; return(RedirectToAction("Index", "PaperVersions")); }