public async Task <QueryResult <CourseOffering> > GetCourseOfferingsWithRelatedData(CourseOfferingQuery queryObj) { var result = new QueryResult <CourseOffering>(); var query = SchedulingDbContext.CourseOfferings .Include(co => co.Instructors) .ThenInclude(i => i.Instructor) .Include(co => co.Instructors) .ThenInclude(i => i.Type) .Include(co => co.Course) .Include(co => co.Section) .ThenInclude(s => s.Curriculum) .Include(co => co.Rooms) .ThenInclude(r => r.Type) .Include(co => co.Rooms) .ThenInclude(r => r.LabType) .Include(co => co.Section) .AsQueryable(); query = query.ApplyCourseOfferingFilter(queryObj); result.Items = await query.ToListAsync(); result.TotalItems = await query.CountAsync(); return(result); }
public static IQueryable <CourseOffering> ApplyCourseOfferingFilter(this IQueryable <CourseOffering> query, CourseOfferingQuery queryObj) { if (queryObj.DepartmentId.HasValue) { query = query.Where(c => c.Section.Curriculum.DepartmentId == queryObj.DepartmentId.Value); } query = query.Where(c => c.AcademicSemesterId == queryObj.SemesterId); return(query); }