public ActionResult PendingCourseList(Int32?venueId) { CourseSearchModel model = new CourseSearchModel { CourseStatus = (Int32)Constants.RecordStatus.Pending }; return(List(venueId, null, model)); }
private void GetLookups(CourseSearchModel model, Int32 providerId) { ViewBag.RecordStatuses = new SelectList( db.RecordStatus.Where(s => !s.IsDeleted), "RecordStatusId", "RecordStatusName", model.CourseStatus); ViewBag.StudyModes = new SelectList( db.StudyModes, "StudyModeId", "StudyModeName", model.StudyModeId); ViewBag.AttendanceTypes = new SelectList( db.AttendanceTypes, "AttendanceTypeId", "AttendanceTypeName", model.AttendanceModeId); ViewBag.AttendancePatterns = new SelectList( db.AttendancePatterns, "AttendancePatternId", "AttendancePatternName", model.AttendancePatternId); ViewBag.Venues = new SelectList( db.Venues.Where(x => x.ProviderId == providerId), "VenueId", "VenueName", model.VenueId); ViewBag.OpportunityStatuses = new SelectList( db.RecordStatus.Where(s => !s.IsDeleted && s.RecordStatusId != (int)Constants.RecordStatus.Pending), "RecordStatusId", "RecordStatusName", model.OpportunityStatus); ViewBag.StartDateOptions = new SelectList(new List <SelectListItem> { new SelectListItem { Text = AppGlobal.Language.GetText(this, "Before", "Before"), Value = "1" }, new SelectListItem { Text = AppGlobal.Language.GetText(this, "After", "After"), Value = "2" } }, "Value", "Text", model.StartDateId); }
public ActionResult List(Int32?venueId, Constants.CourseSearchQAFilter?qualitySearchMode, CourseSearchModel model) { Provider provider = db.Providers.Find(userContext.ItemId); if (provider == null) { return(HttpNotFound()); } if (model == null) { model = new CourseSearchModel(); } if (venueId.HasValue && Request.HttpMethod == "GET") { model.VenueId = venueId; } if (qualitySearchMode.HasValue && Request.HttpMethod == "GET") { model.QualitySearchMode = qualitySearchMode; } IQueryable <Course> courses = db.Courses.Include("LearningAim").Where(x => x.ProviderId == userContext.ItemId); if (!model.QualitySearchMode.HasValue) { // Get Courses Based on Search Criteria if (!String.IsNullOrEmpty(model.ProviderCourseId)) { courses = courses.Where(x => x.ProviderOwnCourseRef.Contains(model.ProviderCourseId)); } if (!String.IsNullOrEmpty(model.ProviderCourseTitle)) { courses = courses.Where(x => x.CourseTitle.Contains(model.ProviderCourseTitle)); } if (!String.IsNullOrEmpty(model.LearningAimReference)) { courses = courses.Where(x => x.LearningAimRefId.Contains(model.LearningAimReference)); } if (model.LastUpdated.HasValue) { //Bug fix, cannot use AddDays within a linq expression. Calculate outside of linq, also cater for null ModifiedDateTime DateTime dateTo = model.LastUpdated.Value.AddDays(1); courses = courses.Where(x => (x.ModifiedDateTimeUtc ?? x.CreatedDateTimeUtc) >= model.LastUpdated && (x.ModifiedDateTimeUtc ?? x.CreatedDateTimeUtc) < dateTo); } if (model.CourseStatus.HasValue) { courses = courses.Where(x => x.RecordStatusId == model.CourseStatus); } if (!String.IsNullOrEmpty(model.ProviderOpportunityId)) { courses = courses.Where(x => x.CourseInstances.Any(i => i.ProviderOwnCourseInstanceRef == model.ProviderOpportunityId)); } if (model.StudyModeId.HasValue) { courses = courses.Where(x => x.CourseInstances.Any(i => i.StudyModeId == model.StudyModeId)); } if (model.AttendanceModeId.HasValue) { courses = courses.Where(x => x.CourseInstances.Any(i => i.AttendanceTypeId == model.AttendanceModeId)); } if (model.AttendancePatternId.HasValue) { courses = courses.Where(x => x.CourseInstances.Any(i => i.AttendancePatternId == model.AttendancePatternId)); } if (model.VenueId.HasValue) { courses = courses.Where(x => x.CourseInstances.Any(i => i.Venues.Any(v => v.VenueId == model.VenueId))); } if (model.StartDateId.HasValue && model.StartDate.HasValue) { if (model.StartDateId == 1) { /* Before */ courses = courses.Where(x => x.CourseInstances.Any(i => i.CourseInstanceStartDates.Any(sd => sd.StartDate < model.StartDate))); } else { /* After */ courses = courses.Where(x => x.CourseInstances.Any(i => i.CourseInstanceStartDates.Any(sd => sd.StartDate >= model.StartDate))); } } if (!String.IsNullOrEmpty(model.StartDateDescription)) { courses = courses.Where(x => x.CourseInstances.Any(i => i.StartDateDescription.Contains(model.StartDateDescription))); } if (model.OpportunityStatus.HasValue) { courses = courses.Where(x => x.CourseInstances.Any(i => i.RecordStatusId == model.OpportunityStatus)); } } if (model.QualitySearchMode.HasValue) { //New quality score filtering options if (model.QualitySearchMode == Constants.CourseSearchQAFilter.CourseShortSummary) { courses = courses.Where(x => x.CourseSummary.Length <= 200); } else if (model.QualitySearchMode == Constants.CourseSearchQAFilter.CourseNonDistinctSummary) { var nonDistinct = courses.GroupBy(c => c.CourseSummary).Where(grp => grp.Count() > 1).Select(grp => grp.Key); courses = courses.Where(x => x.CourseSummary.Length > 200 && nonDistinct.Contains(x.CourseSummary)); } else if (model.QualitySearchMode == Constants.CourseSearchQAFilter.CoursesPending) { courses = courses.Where(x => x.RecordStatusId == (int)Constants.RecordStatus.Pending); } } CourseDateStatusModel courseDateStatuses = new CourseDateStatusModel { ProviderId = provider.ProviderId }; courseDateStatuses.Populate(db); foreach (Course c in courses.OrderByDescending(x => x.ModifiedDateTimeUtc ?? x.CreatedDateTimeUtc)) { CourseDateStatusModelItem item = courseDateStatuses.Items.Where(x => x.CourseId == c.CourseId).FirstOrDefault(); if (item != null) { model.Courses.Add(new CourseListModel(c, item.MaxStartDate, item.DateStatus)); } else { model.Courses.Add(new CourseListModel(c, (DateTime?)null, null)); } } if (model.QualitySearchMode.HasValue) { //New quality score filtering options if (model.QualitySearchMode == Constants.CourseSearchQAFilter.CoursesOutOfDate) { model.Courses = model.Courses.Where(x => x.DateStatus == Constants.CourseFilterDateStatus.OutOfDate).ToList(); } if (model.QualitySearchMode == Constants.CourseSearchQAFilter.CoursesExpiring) { model.Courses = model.Courses.Where(x => x.DateStatus == Constants.CourseFilterDateStatus.Expiring).ToList(); } if (model.QualitySearchMode == Constants.CourseSearchQAFilter.CoursesUpToDate) { model.Courses = model.Courses.Where(x => x.DateStatus == Constants.CourseFilterDateStatus.UpToDate).ToList(); } else if (model.QualitySearchMode == Constants.CourseSearchQAFilter.LearningAimExpired) { model.Courses = model.Courses.Where(x => x.IsLARSExpired.HasValue && x.IsLARSExpired.Value).ToList(); } else if (model.QualitySearchMode == Constants.CourseSearchQAFilter.LearningAimNone) { model.Courses = model.Courses.Where(x => !x.IsLARSExpired.HasValue).ToList(); } } // Populate drop downs GetLookups(model, userContext.ItemId ?? -1); model.NumberOfPendingCourses = courses.Count(x => x.RecordStatusId == (Int32)Constants.RecordStatus.Pending); return(View("List", model)); }