/* Pass limit=0 to disable limiting */ public Task <List <UserRolesInfo> > FilterUsers(UserSearchQueryModel query, UserManager <ApplicationUser> userManager, int limit = 100) { var role = db.Roles.FirstOrDefault(r => r.Name == query.Role); IQueryable <ApplicationUser> users = db.Users; 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 async Task CopyGroupAccesses(Group group, Group newGroup) { var accesses = db.GroupAccesses.Where(a => a.GroupId == group.Id && a.IsEnabled).ToList(); var courseInstructorsIds = userRolesRepo.GetListOfUsersWithCourseRole(CourseRole.Instructor, newGroup.CourseId, includeHighRoles: true); foreach (var access in accesses) { if (!courseInstructorsIds.Contains(access.UserId)) { continue; } db.GroupAccesses.Add(new GroupAccess { GroupId = newGroup.Id, UserId = access.UserId, AccessType = access.AccessType, GrantedById = access.GrantedById, GrantTime = DateTime.Now, IsEnabled = true, }); } await db.SaveChangesAsync(); }