public ActionResult ContinueTraining(int trainingReviewid) { int userid = (int)Membership.GetUser().ProviderUserKey; var existingTraining = _db.TrainingReviews.Find(trainingReviewid); if (existingTraining == null || existingTraining.UserID != userid || existingTraining.Status != "Current") { return(View("Error")); } var trainingInputModel = new TrainingInputModel { PubID = existingTraining.TrainingPublicationID, PubNumber = existingTraining.TrainingPublication.TrainingPublicationNumber, Files = existingTraining.TrainingPublication.TrainingDocuments.Where(pd => pd.Status == "Current").Select(pd => new ReadViewModel { TrainingDocumentID = pd.TrainingDocumentID, FileName = pd.FileName, FileType = pd.FileType, FileUrl = pd.FileUrl }).ToList(), TrainingReviewItems = existingTraining.TrainingReviewItems.Select(item => new TrainingReviewItemInputModel { TrainingPublicationID = item.TrainingPublicationID, CheckListID = item.CheckListCheckListID, Section = item.CheckList.Section, Item = item.CheckList.Item, ItemNumber = item.CheckList.ItemNumber, CheckListName = item.CheckList.CheckListName, CheckListNumber = item.CheckList.CheckListNumber, Criteria = item.CheckList.Criteria, Critical = item.CheckList.Critical, Options = item.CheckList.ChecklistOptionLinks.Where(o => o.Status == "Current").Select(o => o.Option).ToList(), TrainingReviewItemID = item.TrainingReviewItemID, Comments = item.Comments, OptionID = item.OptionOptionID, TrainingReviewID = item.TrainingReviewID }).ToList().OrderBy(c => float.Parse(c.ItemNumber, CultureInfo.InvariantCulture.NumberFormat)).ThenBy(c => c.CheckListNumber).ToList() }; return(View(trainingInputModel)); }
public ActionResult NewTraining() { var userid = (int)Membership.GetUser().ProviderUserKey; var allTraining = _db.TrainingPublications.Where(tp => !tp.TrainingReviews.Where(tr => tr.Status == "Current").Select(tr => tr.UserID).Contains(userid)); if (!allTraining.Any()) { return(RedirectToAction("Index")); } var RandomTraining = allTraining.OrderBy(t => Guid.NewGuid()).FirstOrDefault(); /////////////// save training review & training review items var newTrainingReview = new TrainingReview { UserID = userid, TrainingPublicationID = RandomTraining.TrainingPublicationID, TotalPoints = _db.CheckLists.Count(tr => !string.IsNullOrEmpty(tr.CheckListNumber)), LastUpdateTime = DateTime.Now }; _db.TrainingReviews.Add(newTrainingReview); var newTrainReviewItem = (from item in _db.CheckLists where !string.IsNullOrEmpty(item.CheckListNumber) select item).AsEnumerable().Select(checklist => new TrainingReviewItem { CheckListCheckListID = checklist.CheckListID, ReviewerId = userid, TrainingPublicationID = RandomTraining.TrainingPublicationID, TrainingReview = newTrainingReview, LastUpdateTime = DateTime.Now }).ToList(); _db.TrainingReviewItems.AddRange(newTrainReviewItem); _db.SaveChanges(); /////////////// create training input model var trainingInputModel = new TrainingInputModel { TrainingReviewID = newTrainingReview.TrainingReviewID, PubID = newTrainingReview.TrainingPublicationID, PubNumber = RandomTraining.PMID, Files = RandomTraining.TrainingDocuments.Where(pd => pd.Status == "Current").Select(pd => new ReadViewModel { TrainingDocumentID = pd.TrainingDocumentID, FileName = pd.FileName, FileType = pd.FileType, FileUrl = pd.FileUrl }).ToList(), TrainingReviewItems = newTrainReviewItem.Select(c => new TrainingReviewItemInputModel { TrainingReviewItemID = c.TrainingReviewItemID, TrainingPublicationID = RandomTraining.TrainingPublicationID, CheckListID = c.CheckList.CheckListID, Section = c.CheckList.Section, Item = c.CheckList.Item, ItemNumber = c.CheckList.ItemNumber, CheckListName = c.CheckList.CheckListName, CheckListNumber = c.CheckList.CheckListNumber, Criteria = c.CheckList.Criteria, Critical = c.CheckList.Critical, Options = c.CheckList.ChecklistOptionLinks.Where(o => o.Status == "Current").Select(o => o.Option).ToList(), TrainingReviewID = newTrainingReview.TrainingReviewID }).ToList().OrderBy(c => float.Parse(c.ItemNumber, CultureInfo.InvariantCulture.NumberFormat)).ThenBy(c => c.CheckListNumber).ToList() }; return(View(trainingInputModel)); }