public ActionResult NewReview() { var avaliableRecord = _db.Records.Where( r => r.PaperDocuments.Count(pd => pd.DeletePaperDocument == false) > 0 && r.DeleteRecord == false && r.AcceptanceStatus == "Accepted" && r.AcceptanceStatus_randomizer == "Pass TC1" && r.ReviewCompletions.Count(rc => rc.Status == Enums.Status.Current.ToString() && rc.ComplesionDate != null && !rc.Reconciliation) >= 2 && r.ReviewCompletions.Count(rc => rc.Status == Enums.Status.Current.ToString() && rc.Reconciliation) == 0 && r.ReviewCompletions.Count(rc => rc.UserID == userid && rc.Status == Enums.Status.Current.ToString() && !rc.Reconciliation) == 0); var randomRecord = avaliableRecord.OrderBy(r => Guid.NewGuid()).FirstOrDefault(); if (randomRecord == null) { throw new Exception("There are no more publication for you to review. Please contact admin for further assistance. Thank you for reviewing on IICARus Project"); } var CheckList = _db.CheckLists.Include("ChecklistOptionLinks"); var newReviewCompletion = new ReviewCompletion() { UserID = userid, RecordRecordID = randomRecord.RecordID, Role = Enums.userRoles.Reconciler, LastUpdateTime = DateTime.Now, Reconciliation = true }; _db.ReviewCompletions.Add(newReviewCompletion); var newReviewItems = (from c in _db.CheckLists where !string.IsNullOrEmpty(c.CheckListNumber) select c).AsEnumerable().Select(checklist => new PaperQuality() { CheckListCheckListID = checklist.CheckListID, ReviewerId = userid, RecordRecordID = randomRecord.RecordID, ReviewCompletion = newReviewCompletion, LastUpdateTime = DateTime.Now }).ToList(); _db.PaperQualities.AddRange(newReviewItems); _db.SaveChanges(); var r1 = newReviewCompletion.Record.ReviewCompletions.Where(rc => rc.Status == Enums.Status.Current.ToString()).OrderBy(s => s.LastUpdateTime).FirstOrDefault(); var r2 = newReviewCompletion.Record.ReviewCompletions.Where(rc => rc.Status == Enums.Status.Current.ToString()).OrderBy(s => s.LastUpdateTime).Skip(1).FirstOrDefault(); var reviewIM = new ReconReviewInputModel(newReviewCompletion, r1, r2, _db.Species.ToList()); return(View(reviewIM)); }
public ActionResult ContinueReview(int rcid) { var reviewComplesion = _db.ReviewCompletions.Find(rcid); if (reviewComplesion == null || reviewComplesion.Status != Enums.Status.Current.ToString() || reviewComplesion.PaperQualities.Count(pq => pq.Status == Enums.Status.Current.ToString()) == 0 || reviewComplesion.UserID != userid) { throw new Exception("review not valid."); } var r1 = reviewComplesion.Record.ReviewCompletions.Where(rc => rc.Status == Enums.Status.Current.ToString()).OrderBy(s => s.LastUpdateTime).FirstOrDefault(); var r2 = reviewComplesion.Record.ReviewCompletions.Where(rc => rc.Status == Enums.Status.Current.ToString()).OrderBy(s => s.LastUpdateTime).Skip(1).FirstOrDefault(); var reviewIM = new ReconReviewInputModel(reviewComplesion, r1, r2, _db.Species.ToList(), reviewComplesion); return(View(reviewIM)); }
public ActionResult NewReview(ReconReviewInputModel ReviewIM) { if (!ModelState.IsValid) { throw new Exception("Model State error"); } var ExistingReviewCompletion = _db.ReviewCompletions.Find(ReviewIM.ReviewCompleteID); if (ExistingReviewCompletion.UserID != userid || ExistingReviewCompletion.Status != "Current") { throw new Exception("Review not valid."); } ExistingReviewCompletion.Role = IICURas.Enums.userRoles.Reconciler; var ExistingReviewItems = ExistingReviewCompletion.PaperQualities.Where(pq => pq.Status == "Current"); foreach (var item in ReviewIM.ReviewItems) { var ExistingReviewItem = ExistingReviewItems.FirstOrDefault(ri => ri.CheckListCheckListID == item.CheckListID && ri.PaperQualityID == ri.PaperQualityID && ri.RecordRecordID == ri.RecordRecordID && ri.ReviewerId == userid); if (ExistingReviewItem == null) { continue; } if (ExistingReviewItem.OptionOptionID != item.OptionID) { ExistingReviewItem.OptionOptionID = item.OptionID; } if (ExistingReviewItem.Comments != item.Comments) { ExistingReviewItem.Comments = item.Comments; } if (ExistingReviewItem.OptionOptionID != item.OptionID || ExistingReviewItem.Comments != item.Comments) { ExistingReviewItem.LastUpdateTime = DateTime.Now; } } ExistingReviewCompletion.LastUpdateTime = DateTime.Now; if (ExistingReviewCompletion.LinkRecordUserSpecies.Any()) { foreach (var ExistingSpecie in ExistingReviewCompletion.LinkRecordUserSpecies) { if (ReviewIM.SpeciesIDs != null && ReviewIM.SpeciesIDs.Any() && ReviewIM.SpeciesIDs.Contains(ExistingSpecie.SpecieID)) { if (ExistingSpecie.Status != "Current") { ExistingSpecie.Status = "Current"; ExistingSpecie.LastUpdateTime = DateTime.Now; } } else { ExistingSpecie.Status = "Archived"; ExistingSpecie.LastUpdateTime = DateTime.Now; } } } if (ReviewIM.SpeciesIDs != null && ReviewIM.SpeciesIDs.Any()) { foreach (var linkRUP in from NewSpecieID in ReviewIM.SpeciesIDs where !ExistingReviewCompletion.LinkRecordUserSpecies.Select(l => l.SpecieID).Contains(NewSpecieID) select new LinkRecordUserSpecie() { UserID = userid, RecordID = ReviewIM.RecordID, SpecieID = NewSpecieID, ReviewCompletion = ExistingReviewCompletion, LastUpdateTime = DateTime.Now }) { _db.LinkRecordUserSpecies.Add(linkRUP); } } _db.SaveChanges(); return(RedirectToAction("Index")); }