public async Task <IActionResult> DeleteConfirmed(long id) { PaperVersionDTO paperVersion = _paperVersionRepository.GetPaperVersion(id); var user = await _userManager.GetUserAsync(HttpContext.User); if (paperVersion.Paper.Participancy.User.Id != user.Id && !User.IsInRole("Admin")) { StatusMessage = "Error. Access denied."; return(RedirectToAction("MyPaper", "Papers", new { id = paperVersion.PaperId })); } var path = Path.Combine( Directory.GetCurrentDirectory(), "Files\\Papers", paperVersion.FileName); if (System.IO.File.Exists(path)) { System.IO.File.Delete(path); } var result = _paperVersionRepository.DeleteVersion(id); if (result == 1) { StatusMessage = "Succesfully deleted."; if (User.IsInRole("Admin")) { return(RedirectToAction("Details", "Papers", new { id = paperVersion.PaperId })); } return(RedirectToAction("MyPaper", "Papers", new { id = paperVersion.PaperId })); } StatusMessage = "Error. Something went wrong."; return(RedirectToAction("MyPapers", "Papers")); }
public async Task <IActionResult> RejectVersionConfirmed(PaperVersionsRejectViewModel model) { PaperVersionDTO paperVersion = _paperVersionRepository.GetPaperVersion(model.Id); var user = await _userManager.GetUserAsync(HttpContext.User); if (!User.IsInRole("Admin")) { StatusMessage = "Error. Access denied."; return(RedirectToAction("MyPaper", "Papers", new { id = paperVersion.PaperId })); } if (paperVersion == null) { StatusMessage = "Error. Version do not exists."; return(RedirectToAction("MyPapers", "Papers")); } var result = _paperVersionRepository.SetStatusVersionRejected(model.Id); if (result == 1) { if (model.Comment != null) { _paperVersionRepository.SetComment(model.Id, model.Comment); } StatusMessage = "Succesfully rejected."; return(RedirectToAction("Index", "PaperVersions")); } StatusMessage = "Error. Something went wrong."; return(RedirectToAction("MyPapers", "Papers")); }
public async Task <IActionResult> Download(long id) { PaperVersionDTO paperVersion = _paperVersionRepository.GetPaperVersion(id); if (paperVersion == null) { StatusMessage = "Error. This version do not exists."; return(RedirectToAction("MyPapers", "Papers")); } var user = await _userManager.GetUserAsync(HttpContext.User); if (paperVersion.Paper.Participancy.User.Id != user.Id && !User.IsInRole("Admin") && paperVersion.Reviews.FirstOrDefault(r => r.CriticId == user.Id) == null) { StatusMessage = "Error. You don't have permission to do that."; return(RedirectToAction("MyPapers", "Papers")); } var path = Path.Combine( Directory.GetCurrentDirectory(), "wwwroot\\Papers", paperVersion.FileName); if (!System.IO.File.Exists(path)) { StatusMessage = "Error. This file don't exists."; return(RedirectToAction("MyPaper", "Papers", new { id = paperVersion.PaperId })); } var memory = new MemoryStream(); using (var stream = new FileStream(path, FileMode.Open)) { await stream.CopyToAsync(memory); } memory.Position = 0; return(File(memory, GetContentType(path), paperVersion.OriginalFileName)); }
public int AddPaperVersion(PaperVersionDTO paperVersion) { PaperVersion newPaper = Mapper.Map <PaperVersion>(paperVersion); _context.PaperVerison.Add(newPaper); _context.SaveChanges(); return((int)newPaper.Id); }
public IActionResult Discard(long id) { if (!User.IsInRole("Admin")) { return(RedirectToAction("Index", "Home")); } PaperVersionDTO paperVersion = _paperVersionRepository.GetPaperVersion(id); _paperVersionRepository.SetStatusVersionRejected(id); var result = _paperRepository.SetStatusDiscarded(paperVersion.PaperId); if (result == 1) { StatusMessage = "Succesfully discarded."; } return(RedirectToAction(nameof(Index))); }
public async Task <IActionResult> RejectVersion(long id) { PaperVersionDTO paperVersion = _paperVersionRepository.GetPaperVersion(id); var user = await _userManager.GetUserAsync(HttpContext.User); if (paperVersion == null) { StatusMessage = "Error. Version do not exists."; return(RedirectToAction("MyPapers", "Papers")); } if (paperVersion.Status != 0 && paperVersion.Status != 4) { StatusMessage = "Error. You can't reject this version now."; return(RedirectToAction("Index", "PaperVersions")); } var model = Mapper.Map <PaperVersionsRejectViewModel>(paperVersion); return(View(model)); }
public async Task <IActionResult> AddVersion(PaperVersionsAddViewModel model) { if (model == null) { StatusMessage = "Error. Something went wrong."; return(View()); } if (model.File == null || model.File.Length == 0) { StatusMessage = "Error. File is missing or broken."; return(View(model)); } var user = await _userManager.GetUserAsync(HttpContext.User); var paper = _paperRepository.GetPaper(model.PaperId); if (paper == null) { StatusMessage = "Error. Paper do not exists."; return(RedirectToAction("MyPapers", "Papers")); } if (paper.Status != 1) { StatusMessage = "Error. You cannot add new version."; return(RedirectToAction("MyPapers", "Papers")); } var participancy = _participanciesRepository.GetParticipancy(paper.ParticipancyId); if (paper.Participancy.User.Id != user.Id) { StatusMessage = "Error. You cannot add version of this paper."; return(RedirectToAction("MyPapers", "Papers")); } if (!model.File.FileName.EndsWith(".doc") && !model.File.FileName.EndsWith(".docx") && !model.File.FileName.EndsWith(".pdf") && !model.File.FileName.EndsWith(".odt")) { StatusMessage = "Error. File has forbidden extension.(Only .doc .docx .pdf .odt allowed)"; return(RedirectToAction("Add", new { id = model.PaperId })); } if (ModelState.IsValid) { string newFileName = Guid.NewGuid().ToString() + model.File.FileName.Substring(model.File.FileName.Length - 4); var path = Path.Combine( Directory.GetCurrentDirectory(), "wwwroot\\Papers", newFileName); using (var stream = new FileStream(path, FileMode.Create)) { await model.File.CopyToAsync(stream); } var paperVersion = new PaperVersionDTO { PaperId = model.PaperId, OriginalFileName = model.File.FileName.Split('\\').Last(), FileName = newFileName, Status = 0 }; var newVersionId = _paperVersionRepository.AddPaperVersion(paperVersion); paper = _paperRepository.GetPaper(paper.Id); var differentJustCreatedVersion = paper.PaperVersions.FirstOrDefault(v => v.Status == 0 && v.Id != newVersionId); var versionWithMinorChanges = paper.PaperVersions.FirstOrDefault(v => v.Status == 4); var pastVersionsWithReviews = paper.PaperVersions.Where(v => (v.Status == 4 || v.Status == 5) && v.Reviews.Count() >= 2).OrderByDescending(v => v.CreationDate); if (differentJustCreatedVersion != null) { _paperVersionRepository.SetStatusVersionRejected(differentJustCreatedVersion.Id); } else if (versionWithMinorChanges != null) { _paperVersionRepository.SetStatusVersionAccepted(newVersionId); _paperRepository.SetStatuAccepted(paper.Id); } if (pastVersionsWithReviews.Count() >= 1) { var lastReviews = pastVersionsWithReviews.First().Reviews.Where(r => r.Recommendation != 5 && r.Recommendation != 1); foreach (var critic in lastReviews) { var review = new ReviewDTO { CriticId = critic.CriticId, PaperVersionId = newVersionId, Deadline = DateTime.Now.AddMonths(1) }; _reviewRepository.CreateReview(review); } _paperVersionRepository.SetStatusWaitingForReview(newVersionId); } StatusMessage = "Version has beed added."; return(RedirectToAction("MyPaper", "Papers", new { id = model.PaperId })); } StatusMessage = "Error. Entered data is not valid."; return(RedirectToAction("MyPapers", "Papers")); }