private IEnumerable<UserBasicDto> GetUsersFromDb(GetUsersContract usersContract, bool isSuperUser, out int totalRecords) { totalRecords = 0; IEnumerable<UserBasicDto> users = null; var portalId = usersContract.PortalId; var pageIndex = usersContract.PageIndex; var pageSize = usersContract.PageSize; switch (usersContract.Filter) { case UserFilters.All: users = this.GetUsers(usersContract, null, null, isSuperUser ? null : (bool?)false, null, null, out totalRecords); break; case UserFilters.Authorized: users = this.GetUsers(usersContract, true, false, isSuperUser ? null : (bool?)false, null, null, out totalRecords); break; case UserFilters.SuperUsers: if (isSuperUser) { users = this.GetUsers(usersContract, null, null, true, null, null, out totalRecords); } break; case UserFilters.UnAuthorized: users = this.GetUsers(usersContract, false, false, isSuperUser ? null : (bool?)false, null, null, out totalRecords); break; case UserFilters.Deleted: users = this.GetUsers(usersContract, null, true, isSuperUser ? null : (bool?)false, null, null, out totalRecords); break; case UserFilters.HasAgreedToTerms: users = this.GetUsers(usersContract, null, null, false, true, null, out totalRecords); break; case UserFilters.HasNotAgreedToTerms: users = this.GetUsers(usersContract, null, null, false, false, null, out totalRecords); break; case UserFilters.RequestedRemoval: users = this.GetUsers(usersContract, null, null, false, null, true, out totalRecords); break; case UserFilters.RegisteredUsers: { IList<UserInfo> userInfos = RoleController.Instance.GetUsersByRole(portalId, PortalController.Instance.GetCurrentPortalSettings().RegisteredRoleName); if (!isSuperUser) { userInfos = (IList<UserInfo>)userInfos?.Where(x => !x.IsSuperUser); } if (userInfos != null) { totalRecords = userInfos.Count; users = GetSortedUsers( GetPagedUsers(userInfos, pageSize, pageIndex)?.Select(UserBasicDto.FromUserInfo), usersContract.SortColumn, usersContract.SortAscending); } break; } default: throw new ArgumentOutOfRangeException(); } return users; }
public HttpResponseMessage GetUsers(string searchText, UserFilters filter, int pageIndex, int pageSize, string sortColumn, bool sortAscending) { try { int totalRecords; var getUsersContract = new GetUsersContract { SearchText = searchText, PageIndex = pageIndex, PageSize = pageSize, SortColumn = sortColumn, SortAscending = sortAscending, PortalId = PortalController.GetEffectivePortalId(PortalId), Filter = filter }; var results = Components.UsersController.Instance.GetUsers(getUsersContract, UserInfo.IsSuperUser, out totalRecords); var response = new { Results = results, TotalResults = totalRecords }; return(Request.CreateResponse(HttpStatusCode.OK, response)); } catch (Exception ex) { Logger.Error(ex); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message)); } }
private static IList <UserBasicDto> GetUsersFromLucene(GetUsersContract usersContract, out int totalRecords) { var query = new SearchQuery { KeyWords = usersContract.SearchText, PortalIds = new List <int> { usersContract.PortalId }, PageIndex = 1, SearchTypeIds = new List <int> { SearchHelper.Instance.GetSearchTypeByName("user").SearchTypeId }, PageSize = SearchPageSize, WildCardSearch = true, CultureCode = null, NumericKeys = new Dictionary <string, int> { { "superuser", 0 } } }; var searchResults = SearchController.Instance.SiteSearch(query); var userIds = searchResults.Results.Distinct(new UserSearchResultComparer()).Take(SearchPageSize).Select(r => { int userId; TryConvertToInt32(r.UniqueKey.Split('_')[0], out userId); return(userId); }).Where(u => u > 0).ToList(); var currentIds = string.Join(",", userIds.Skip(usersContract.PageIndex * usersContract.PageSize).Take(usersContract.PageSize)); var users = UsersDataService.Instance.GetUsersByUserIds(usersContract.PortalId, currentIds).Where(u => UserController.GetUserById(usersContract.PortalId, u.UserId).Membership.Approved).ToList(); totalRecords = users.Count; return(users); }
public IEnumerable <UserBasicDto> GetUsers(GetUsersContract usersContract, bool isSuperUser, out int totalRecords) { return(!string.IsNullOrEmpty(usersContract.SearchText) && usersContract.Filter == UserFilters.Authorized && !HostController.Instance.GetBoolean("DisableUserCrawling", false) ? GetUsersFromLucene(usersContract, out totalRecords) : GetUsersFromDb(usersContract, isSuperUser, out totalRecords)); }
protected override IDataReader CallGetUsersBySearchTerm( GetUsersContract usersContract, bool?includeAuthorized, bool?includeDeleted, bool?includeSuperUsers) { LastSearch = SearchTextFilter.CleanWildcards(usersContract.SearchText); dataReader = new Mock <IDataReader>(); return(dataReader.Object); }
protected override IDataReader CallGetUsersBySearchTerm( GetUsersContract usersContract, bool?includeAuthorized, bool?includeDeleted, bool?includeSuperUsers, bool?hasAgreedToTerms, bool?requestsRemoval) { this.LastSearch = SearchTextFilter.CleanWildcards(usersContract.SearchText); this.dataReader = new Mock <IDataReader>(); return(this.dataReader.Object); }
public void Init() { usersContract = new GetUsersContract { SearchText = null, PageIndex = 0, PageSize = 10, SortColumn = "displayname", SortAscending = true, PortalId = 0, Filter = UserFilters.All }; usersCtrl = new UsersControllerTestable(); }
private IEnumerable <UserBasicDto> GetUsers(GetUsersContract usersContract, bool?includeAuthorized, bool?includeDeleted, bool?includeSuperUsers, out int totalRecords) { var parsedSearchText = string.IsNullOrEmpty(usersContract.SearchText) ? "" : SearchTextFilter.CleanWildcards(usersContract.SearchText.Trim()); List <UserBasicDto2> records = CBO.FillCollection <UserBasicDto2>( CallGetUsersBySearchTerm( usersContract, includeAuthorized, includeDeleted, includeSuperUsers)); totalRecords = records.Count == 0 ? 0 : records[0].TotalCount; return(records); }
protected virtual IDataReader CallGetUsersBySearchTerm(GetUsersContract usersContract, bool?includeAuthorized, bool?includeDeleted, bool?includeSuperUsers) { var parsedSearchText = string.IsNullOrEmpty(usersContract.SearchText) ? "" : SearchTextFilter.CleanWildcards(usersContract.SearchText.Trim()); return(DataProvider.Instance().ExecuteReader( "Personabar_GetUsersBySearchTerm", usersContract.PortalId, string.IsNullOrEmpty(usersContract.SortColumn) ? "Joined" : usersContract.SortColumn, usersContract.SortAscending, usersContract.PageIndex, usersContract.PageSize, parsedSearchText, includeAuthorized, includeDeleted, includeSuperUsers)); }
private IEnumerable<UserBasicDto> GetUsers(GetUsersContract usersContract, bool? includeAuthorized, bool? includeDeleted, bool? includeSuperUsers, bool? hasAgreedToTerms, bool? requestsRemoval, out int totalRecords) { var parsedSearchText = string.IsNullOrEmpty(usersContract.SearchText) ? "" : SearchTextFilter.CleanWildcards(usersContract.SearchText.Trim()); usersContract.SearchText = string.Format("{0}*", parsedSearchText); List<UserBasicDto2> records = CBO.FillCollection<UserBasicDto2>( this.CallGetUsersBySearchTerm( usersContract, includeAuthorized, includeDeleted, includeSuperUsers, hasAgreedToTerms, requestsRemoval)); totalRecords = records.Count == 0 ? 0 : records[0].TotalCount; return records; }
public override ConsoleResultModel Run() { var usersList = new List <UserModelBase>(); var recCount = 0; var max = this.Max <= 0 ? 10 : (this.Max > 500 ? 500 : this.Max); // We need to cover the site group scenario for child portal var portalId = PortalController.GetEffectivePortalId(this.PortalId); var getUsersContract = new GetUsersContract { SearchText = null, PageIndex = this.Page > 0 ? this.Page - 1 : 0, PageSize = max, SortColumn = "displayname", SortAscending = true, PortalId = portalId, Filter = UserFilters.All, }; if (!string.IsNullOrEmpty(this.Username)) { // do username lookup getUsersContract.SearchText = this.Username; } else if (!string.IsNullOrEmpty(this.Email)) { // must be email getUsersContract.SearchText = this.Email; } else if (!string.IsNullOrEmpty(this.Role)) { // exact match only allowed at this time. Listing users in multiple roles would require // 1) getting all ID's of roles matching search phrase; // 2) getting all users in each of those roles; // 3) de-duplicating the users list; // for large user bases this could take a really long time. getUsersContract = null; KeyValuePair <HttpStatusCode, string> response; var users = UsersController.Instance.GetUsersInRole(this.PortalSettings, this.Role, out recCount, out response, this.Page, max); if (users != null) { usersList = ConvertList(users); } else { return(new ConsoleErrorResultModel(response.Value)); } } if (getUsersContract != null) { usersList = ConvertList(UsersController.Instance.GetUsers(getUsersContract, this.User.IsSuperUser, out recCount), this.PortalId); } if ((usersList == null || usersList.Count == 0) && recCount == 0) { return(new ConsoleResultModel(this.LocalizeString("noUsers"))); } var totalPages = recCount / max + (recCount % max == 0 ? 0 : 1); var pageNo = this.Page > 0 ? this.Page : 1; return(new ConsoleResultModel { Data = usersList, PagingInfo = new PagingInfo { PageNo = pageNo, TotalPages = totalPages, PageSize = max, }, Records = usersList?.Count ?? 0, Output = usersList?.Count == 0 ? this.LocalizeString("noUsers") : "", }); }
public IEnumerable <UserBasicDto> GetUsers(GetUsersContract usersContract, bool isSuperUser, out int totalRecords) { return(this.GetUsersFromDb(usersContract, isSuperUser, out totalRecords) ?? new List <UserBasicDto>()); }
private static IEnumerable <UserBasicDto> GetUsersFromDb(GetUsersContract usersContract, bool isSuperUser, out int totalRecords) { totalRecords = 0; List <UserBasicDto> users = null; ArrayList dbUsers = null; IEnumerable <UserInfo> userInfos = null; var portalId = usersContract.PortalId; var pageIndex = usersContract.PageIndex; var pageSize = usersContract.PageSize; var searchText = usersContract.SearchText; var paged = false; switch (usersContract.Filter) { case UserFilters.All: if (string.IsNullOrEmpty(searchText)) { dbUsers = UserController.GetUsers(portalId, pageIndex, pageSize, ref totalRecords, true, false); } else { dbUsers = UserController.GetUsersByDisplayName(portalId, searchText + "%", pageIndex, pageSize, ref totalRecords, true, false); } paged = true; userInfos = dbUsers?.OfType <UserInfo>().ToList(); break; case UserFilters.SuperUsers: if (isSuperUser) { dbUsers = UserController.GetUsers(Null.NullInteger, pageIndex, pageSize, ref totalRecords, true, true); userInfos = dbUsers?.OfType <UserInfo>().ToList(); } paged = true; break; case UserFilters.UnAuthorized: dbUsers = UserController.GetUnAuthorizedUsers(portalId, false, false); userInfos = dbUsers?.OfType <UserInfo>().ToList(); if (!isSuperUser) { userInfos = userInfos?.Where(x => !x.IsSuperUser); } break; case UserFilters.Deleted: dbUsers = UserController.GetDeletedUsers(portalId); userInfos = dbUsers?.OfType <UserInfo>().ToList(); if (!isSuperUser) { userInfos = userInfos?.Where(x => !x.IsSuperUser); } break; // case UserFilters.Online: // dbUsers = UserController.GetOnlineUsers(usersContract.PortalId); // break; case UserFilters.RegisteredUsers: userInfos = RoleController.Instance.GetUsersByRole(portalId, PortalController.Instance.GetCurrentPortalSettings().RegisteredRoleName); if (!isSuperUser) { userInfos = userInfos?.Where(x => !x.IsSuperUser); } break; case UserFilters.Authorized: if (string.IsNullOrEmpty(searchText)) { var reader = DataProvider.Instance() .ExecuteReader("Personabar_GetUsers", usersContract.PortalId, string.IsNullOrEmpty(usersContract.SortColumn) ? "Joined" : usersContract.SortColumn, usersContract.SortAscending, usersContract.PageIndex, usersContract.PageSize); if (reader.Read()) { totalRecords = reader.GetInt32(0); reader.NextResult(); } users = CBO.FillCollection <UserBasicDto>(reader); } else { dbUsers = UserController.GetUsersByDisplayName(portalId, searchText + "%", pageIndex, pageSize, ref totalRecords, false, false); users = dbUsers?.OfType <UserInfo>().Select(UserBasicDto.FromUserInfo).ToList(); } paged = true; break; default: throw new ArgumentOutOfRangeException(); } if (users == null && userInfos != null) { var enumerable = userInfos as UserInfo[] ?? userInfos.ToArray(); totalRecords = paged ? totalRecords : enumerable.Length; var sorted = GetSortedUsers(enumerable, usersContract.SortColumn, usersContract.SortAscending); users = paged ? sorted.Select(UserBasicDto.FromUserInfo).ToList() : GetPagedUsers(sorted, pageSize, pageIndex)?.Select(UserBasicDto.FromUserInfo).ToList(); } return(users); }