public async Task <QueryResult <Instructor> > GetInstructors(InstructorQuery queryObj) { var result = new QueryResult <Instructor>(); var query = SchedulingDbContext .Instructors .Include(i => i.User) .ThenInclude(u => u.Contact.Department) .AsQueryable(); query = query.ApplyFiltering(queryObj); result.TotalItems = await query.CountAsync(); result.Items = await query.ToListAsync(); return(result); }
public static IQueryable <Instructor> ApplyFiltering(this IQueryable <Instructor> query, InstructorQuery queryObj) { if (queryObj.DepartmentId.HasValue) { query = query.Where(i => i.User.Contact.DepartmentId == queryObj.DepartmentId); } if (queryObj.CollegeId.HasValue) { query = query.Where(i => i.User.Contact.Department.CollegeId == queryObj.CollegeId); } if (queryObj.OnlyActive) { query = query.Where(i => i.IsActive); } return(query); }