Ejemplo n.º 1
0
        /* 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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
        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();
        }