public IActionResult AddCritic(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 AddCriticViewModel() { PaperVersion = version, PaperVersionId = version.Id, StatusMessage = StatusMessage }; return(View(model)); }
public IActionResult AddCritic(AddCriticViewModel 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")); } var critic = _userRepository.GetApplicationUser(model.CriticId); if (!_userManager.IsInRoleAsync(critic, "Critic").Result&& !_userManager.IsInRoleAsync(critic, "Admin").Result) { StatusMessage = "Error. This user cannot become a critic!"; return(RedirectToAction("Index", "PaperVersions")); } if (version.Reviews.FirstOrDefault(r => r.CriticId == critic.Id) != null) { StatusMessage = "Error. " + critic.FirstName + " " + critic.LastName + " is already assigned to this version!"; var a = version.Reviews.Where(r => r.CriticId == critic.Id); return(RedirectToAction("AddCritic", "Reviews", new { Id = model.PaperVersionId })); } var review = new ReviewDTO { CriticId = model.CriticId, PaperVersionId = model.PaperVersionId, Deadline = model.Deadline }; var result = _reviewRepository.CreateReview(review); if (result == 1) { _paperVersionRepository.SetStatusWaitingForReview(model.PaperVersionId); StatusMessage = "Critic has been choosen."; return(RedirectToAction("Index", "PaperVersions")); } } StatusMessage = "Error. Entered data is not valid."; return(RedirectToAction("Index", "PaperVersions")); }
public AddCritic() { InitializeComponent(); DataContext = new AddCriticViewModel(this); }