Ejemplo n.º 1
0
        private UserPage GetUserPage(UserManagementFilter filter)
        {
            UserPage result = new ViewModels.AdminTools.UserPage {
                CurrentPage = 0, TotalPages = 0, Users = new List <UserViewModel>()
            };

            using (ApplicationDbContext context = ApplicationDbContext.Create())
            {
                // Filter the users by user email (user name)
                List <ApplicationUser> matchingUsers = (from user in context.Users
                                                        where ((filter.Email == null || filter.Email == "") || user.Email.Contains(filter.Email)) &&
                                                        (!kExcludedUsers.Contains(user.Id))
                                                        select user).ToList();

                List <UserViewModel> resultUsers = new List <UserViewModel>();

                // Filter the users by role
                foreach (ApplicationUser user in matchingUsers)
                {
                    string role = user.Roles.Single().RoleId;
                    if (string.IsNullOrEmpty(filter.Role) || role == filter.Role)
                    {
                        resultUsers.Add(new UserViewModel {
                            Id = user.Id, Email = user.Email, Username = user.UserName, Role = role
                        });
                    }
                }

                // Get the result page
                int offset = (filter.PageNumber - 1) * filter.ResultsPerPage;
                int pages  = (int)Math.Ceiling(resultUsers.Count / (double)filter.ResultsPerPage);
                // If there are enough results to make a page,
                if (matchingUsers.Count - offset >= filter.ResultsPerPage)
                {
                    // Get a full page
                    resultUsers = resultUsers.Skip(offset).Take(filter.ResultsPerPage).ToList();
                }
                else
                {
                    // Get the remaining users
                    resultUsers = resultUsers.Skip(offset).ToList();
                }

                result = new UserPage {
                    CurrentPage = filter.PageNumber, TotalPages = pages, Users = resultUsers
                };
            }

            return(result);
        }
Ejemplo n.º 2
0
 public ActionResult UserPage(UserManagementFilter filter)
 {
     return(Json(GetUserPage(filter)));
 }