示例#1
0
        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);
        }