/* Pass limit=0 to disable limiting */ public List <UserRolesInfo> FilterUsers(UserSearchQueryModel query, UserManager <ApplicationUser> userManager, int limit = 100) { var role = db.Roles.FirstOrDefault(r => r.Name == query.Role); var users = db.Users.Where(u => !u.IsDeleted); if (!string.IsNullOrEmpty(query.NamePrefix)) { var usersIds = GetUsersByNamePrefix(query.NamePrefix).Select(u => u.Id); users = users.Where(u => usersIds.Contains(u.Id)); } return(users .FilterByRole(role, userManager) .FilterByUserIds( userRolesRepo.GetListOfUsersWithCourseRole(query.CourseRole, query.CourseId, query.IncludeHighCourseRoles), userRolesRepo.GetListOfUsersByPrivilege(query.OnlyPrivileged, query.CourseId) ) .GetUserRolesInfo(limit, userManager)); }
private List <UserRolesInfo> FilterUsers(UserSearchQueryModel query, [CanBeNull] IQueryable <string> userIds, int limit) { var roles = db.Roles.ToList(); var role = string.IsNullOrEmpty(query.Role) ? null : roles.FirstOrDefault(r => r.Name == query.Role); var users = db.Users.Include(u => u.Roles).Where(u => !u.IsDeleted); if (userIds != null) { users = users.Where(u => userIds.Contains(u.Id)); } return(users .FilterByRole(role) .FilterByUserIds( userRolesRepo.GetListOfUsersWithCourseRole(query.CourseRole, query.CourseId, query.IncludeHighCourseRoles), userRolesRepo.GetListOfUsersByPrivilege(query.OnlyPrivileged, query.CourseId) ) .GetUserRolesInfo(limit, roles)); }