public ActionResult Index(UserIndexOptions options, PagerParameters pagerParameters) { if (!Services.Authorizer.Authorize(Permissions.ManageUsers, "Not authorized to list users")) return new HttpUnauthorizedResult(); var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters); // default options if (options == null) options = new UserIndexOptions(); var users = _userRepository.Table; switch (options.Filter) { case UsersFilter.Approved: users = users.Where(u => u.RegistrationStatus == UserStatus.Approved); break; case UsersFilter.Pending: users = users.Where(u => u.RegistrationStatus == UserStatus.Pending); break; case UsersFilter.EmailPending: users = users.Where(u => u.EmailStatus == UserStatus.Pending); break; } if (!String.IsNullOrWhiteSpace(options.Search)) { users = users.Where(u => u.UserName.Contains(options.Search) || u.Email.Contains(options.Search)); } switch (options.Order) { case UsersOrder.Name: users = users.OrderBy(u => u.UserName); break; case UsersOrder.Email: users = users.OrderBy(u => u.Email); break; } pager.Total = users.Count(); var results = users.Skip((pager.Page - 1) * pager.PageSize).Take(pager.PageSize) .ToList(); var model = new UsersIndexViewModel { Users = results .Select(x => new UserEntry { User = x }) .ToList(), Options = options, Pager = pager }; // maintain previous route data when generating page links var routeData = new RouteData(); routeData.Values.Add("Options.Filter", options.Filter); routeData.Values.Add("Options.Search", options.Search); routeData.Values.Add("Options.Order", options.Order); pager.RouteData = routeData; return View(model); }
public ActionResult Index(int? role, UserIndexOptions options, PagerParameters pagerParameters) { var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters); var userItems = new List<UserItemViewModel>(); int userTotal; var skip = pager.Page > 0 ? (pager.Page - 1)*pager.PageSize : 0; var take = pager.PageSize == 0 ? int.MaxValue : pager.PageSize; using (var connection = new SqlConnection(_shellSettings.DataConnectionString)) { connection.Open(); using (var transaction = connection.BeginTransaction()) { using (var command = connection.CreateCommand()) { command.Transaction = transaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "GetUsers"; if (role.HasValue) { var roleIdParameter = new SqlParameter("@RoleId", SqlDbType.Int) { Value = role.Value }; command.Parameters.Add(roleIdParameter); } var skipParameter = new SqlParameter("@Skip", SqlDbType.Int) { Value = skip }; var takeParameter = new SqlParameter("@Take", SqlDbType.Int) { Value = take }; command.Parameters.Add(skipParameter); command.Parameters.Add(takeParameter); using (var reader = command.ExecuteReader()) { while (reader.Read()) { var userItemViewModel = new UserItemViewModel { Email = (string) reader["UserName"], UserId = (int) reader["UserId"], IsTeeyootUser = (bool) reader["IsTeeyootUser"] }; if (reader["CurrencyName"] != DBNull.Value) userItemViewModel.Currency = (string) reader["CurrencyName"]; userItems.Add(userItemViewModel); } } } using (var command = connection.CreateCommand()) { command.Transaction = transaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "GetUsersCount"; if (role.HasValue) { var roleIdParameter = new SqlParameter("@RoleId", SqlDbType.Int) { Value = role.Value }; command.Parameters.Add(roleIdParameter); } userTotal = (int) command.ExecuteScalar(); } FillUsersWithRoles(userItems, transaction); transaction.Commit(); } } var pagerShape = Shape.Pager(pager).TotalItemCount(userTotal); var roles = _roleRepository.Table .Select(r => new RoleItemViewModel { Id = r.Id, Name = r.Name }) .ToList(); var viewModel = new AdminUserIndexViewModel { Roles = roles, SelectedRoleId = role, Users = userItems, Pager = pagerShape }; return View(viewModel); }
public async Task<ActionResult> Index(UserIndexOptions options, PagerParameters pagerParameters) { if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageUsers)) { return Unauthorized(); } var siteSettings = await _siteService.GetSiteSettingsAsync(); var pager = new Pager(pagerParameters, siteSettings.PageSize); // default options if (options == null) { options = new UserIndexOptions(); } var users = _session.QueryAsync<User, UserIndex>(); switch (options.Filter) { case UsersFilter.Approved: //users = users.Where(u => u.RegistrationStatus == UserStatus.Approved); break; case UsersFilter.Pending: //users = users.Where(u => u.RegistrationStatus == UserStatus.Pending); break; case UsersFilter.EmailPending: //users = users.Where(u => u.EmailStatus == UserStatus.Pending); break; } if (!string.IsNullOrWhiteSpace(options.Search)) { users = users.Where(u => u.NormalizedUserName.Contains(options.Search) || u.NormalizedEmail.Contains(options.Search)); } switch (options.Order) { case UsersOrder.Name: users = users.OrderBy(u => u.NormalizedUserName); break; case UsersOrder.Email: users = users.OrderBy(u => u.NormalizedEmail); break; case UsersOrder.CreatedUtc: //users = users.OrderBy(u => u.CreatedUtc); break; case UsersOrder.LastLoginUtc: //users = users.OrderBy(u => u.LastLoginUtc); break; } var count = await users.Count(); var results = await users .Skip(pager.GetStartIndex()) .Take(pager.PageSize) .List(); // maintain previous route data when generating page links var routeData = new RouteData(); routeData.Values.Add("Options.Filter", options.Filter); routeData.Values.Add("Options.Search", options.Search); routeData.Values.Add("Options.Order", options.Order); var pagerShape = New.Pager(pager).TotalItemCount(count).RouteData(routeData); var model = new UsersIndexViewModel { Users = results .Select(x => new UserEntry { User = x }) .ToList(), Options = options, Pager = pagerShape }; return View(model); }
public ActionResult Index(UserIndexOptions options, PagerParameters pagerParameters) { //if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to list users"))) if (!Services.Authorizer.Authorize(Permissions.ChangePassword, T("Not authorized to list users"))) return new HttpUnauthorizedResult(); var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters); // default options if (options == null) options = new UserIndexOptions(); var users = Services.ContentManager.Query<UserPart, UserPartRecord>(); switch (options.Filter) { case UsersFilter.Approved: users = users.Where(u => u.RegistrationStatus == UserStatus.Approved); break; case UsersFilter.Pending: users = users.Where(u => u.RegistrationStatus == UserStatus.Pending); break; case UsersFilter.EmailPending: users = users.Where(u => u.EmailStatus == UserStatus.Pending); break; } if (!String.IsNullOrWhiteSpace(options.Search)) { users = users.Where(u => u.UserName.Contains(options.Search) || u.Email.Contains(options.Search)); } var pagerShape = Shape.Pager(pager).TotalItemCount(users.Count()); switch (options.Order) { case UsersOrder.Name: users = users.OrderBy(u => u.UserName); break; case UsersOrder.Email: users = users.OrderBy(u => u.Email); break; } var results = users .Slice(pager.GetStartIndex(), pager.PageSize) .ToList(); var model = new UsersIndexViewModel { Users = results .Select(x => new UserEntry { User = x.Record }) .ToList(), Options = options, Pager = pagerShape }; // maintain previous route data when generating page links var routeData = new RouteData(); routeData.Values.Add("Options.Filter", options.Filter); routeData.Values.Add("Options.Search", options.Search); routeData.Values.Add("Options.Order", options.Order); pagerShape.RouteData(routeData); return View(model); }