public async Task <IPageable <LocationModel> > GetChildLocationsByParentId(string parentId, int pageSize, int pageIndex, uint recursiveDepth = 1) { var locations = (await _gameScreenContext.GetLocationsByParentId(parentId, pageSize + 1, pageIndex)).ToArray(); var hasMore = locations.Length > pageSize; var result = new PageableList <LocationModel>(locations.Take(pageSize), hasMore); return(result); }
public ActionResult _UsersList(int?pageNumber = 1, bool?safeMode = false, string text = null) { using (var repositoriesContainer = new InnostarRepositoriesContainer()) { IPageableList <ChatUser> usersPageableList = new PageableList <ChatUser>(); if (safeMode.HasValue && safeMode.Value) { usersPageableList = repositoriesContainer.RepositoryFor <ChatUser>() .GetPageableBy(new PageableQuery <ChatUser>(new PageInfo { PageNumber = pageNumber ?? 1, PageSize = 10 }) .AddFilterClause(e => string.IsNullOrEmpty(text) || e.Login.Contains(text) || e.Name.Contains(text)) .AddFilterClause(e => e.SafeModeActivated)); } else { usersPageableList = repositoriesContainer.RepositoryFor <ChatUser>() .GetPageableBy(new PageableQuery <ChatUser>(new PageInfo { PageNumber = pageNumber ?? 1, PageSize = 10 }) .AddFilterClause(e => string.IsNullOrEmpty(text) || e.Login.Contains(text) || e.Name.Contains(text))); } var chatUsersList = usersPageableList.Items.Select( e => new ChatUserViewModel(e, ConfigurationManager.AppSettings["XmppServerName"])).ToList(); var chatUsersPageableList = new PageableList <ChatUserViewModel> { HasNext = usersPageableList.HasNext, HasPrevious = usersPageableList.HasPrevious, Items = chatUsersList, PageInfo = usersPageableList.PageInfo, TotalCount = usersPageableList.TotalCount }; var model = new UsersViewModel { XmppAdminLogin = ConfigurationManager.AppSettings["XmppAdminLogin"] + "@" + ConfigurationManager.AppSettings["XmppServerName"], XmppAdminPassword = ConfigurationManager.AppSettings["XmppAdminPassword"], HttpBindAddress = ConfigurationManager.AppSettings["httpBindAdress"], chatUserViewModels = chatUsersPageableList, MessageTemplates = GetMessageTemplates() }; ViewData["text"] = text; return(View(model)); } }
private static PageableList <SearchResult> LuceneSearch(string searchQuery, string[] searchFields, IPageInfo pageInfo) { if (string.IsNullOrEmpty(searchQuery.Replace("*", string.Empty).Replace("?", string.Empty))) { return(new PageableList <SearchResult>()); } using (var searcher = new IndexSearcher(Directory, false)) { var analyzer = new StandardAnalyzer(Version.LUCENE_30); var parser = new MultiFieldQueryParser(Version.LUCENE_30, searchFields, analyzer); var query = ParseQuery(searchQuery, parser); var coordinatesQuery = new TermQuery(new Term("Coordinates", "[]")); var booleanQuery = new BooleanQuery { { query, Occur.MUST }, { coordinatesQuery, Occur.MUST_NOT } }; if (pageInfo == null) { pageInfo = new PageInfo { PageNumber = 1, PageSize = 1000000 }; } var td = searcher.Search(booleanQuery, pageInfo.PageNumber * pageInfo.PageSize); var hits = new List <ScoreDoc>(); for (var i = (pageInfo.PageNumber - 1) * pageInfo.PageSize; i < pageInfo.PageNumber * pageInfo.PageSize && i < td.ScoreDocs.Length; i++) { hits.Add(td.ScoreDocs[i]); } var results = MapLuceneToDataList(hits, searcher).ToList(); var allResults = searcher.Search(query, (pageInfo.PageNumber * pageInfo.PageSize) + 1); var resultsPageableList = new PageableList <SearchResult> { Items = results, HasNext = results.Count != 0 && results.Last().Id != ToSearchResult(searcher.Doc(allResults.ScoreDocs[allResults.ScoreDocs.Length - 1].Doc)).Id, PageInfo = pageInfo }; analyzer.Close(); searcher.Dispose(); return(resultsPageableList); } }