Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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"));
        }