/* 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)); }
private HashSet <string> FilterUsersWhoNotSeeCourse(Notification notification, HashSet <string> recipientsIds) { if (notification.CourseId != "") { var course = courseManager.FindCourse(notification.CourseId); if (course != null) { var visibleUnits = unitsRepo.GetVisibleUnitIds(course); if (!visibleUnits.Any()) { var userIdsWithInstructorRoles = userRolesRepo.GetListOfUsersWithCourseRole(CourseRole.Tester, notification.CourseId, true); var sysAdminsIds = usersRepo.GetSysAdminsIds(); recipientsIds.IntersectWith(userIdsWithInstructorRoles.Concat(sysAdminsIds)); } } } return(recipientsIds); }
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(); }