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);
        }