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));
            }
        }
示例#3
0
        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);
            }
        }