public async Task <ActionResult <DynamicContentListEntrySearchResult> > DynamicContentItemsEntriesSearch([FromBody] coreModel.DynamicContentItemSearchCriteria criteria) { var result = AbstractTypeFactory <DynamicContentListEntrySearchResult> .TryCreateInstance(); var foldersSearchResult = await _folderSearchService.SearchFoldersAsync(new coreModel.DynamicContentFolderSearchCriteria { FolderId = criteria.FolderId, Keyword = criteria.Keyword, Take = criteria.Take, Skip = criteria.Skip, Sort = criteria.Sort }); var folderSkip = Math.Min(foldersSearchResult.TotalCount, criteria.Skip); var folderTake = Math.Min(criteria.Take, Math.Max(0, foldersSearchResult.TotalCount - criteria.Skip)); result.TotalCount += foldersSearchResult.TotalCount; result.Results.AddRange(foldersSearchResult.Results.Skip(folderSkip).Take(folderTake)); criteria.Skip -= folderSkip; criteria.Take -= folderTake; var itemsSearchResult = await _contentItemsSearchService.SearchContentItemsAsync(criteria); result.TotalCount += itemsSearchResult.TotalCount; result.Results.AddRange(itemsSearchResult.Results); return(Ok(result)); }
public async Task <ActionResult <DynamicContentItemSearchResult> > DynamicContentItemsSearch([FromBody] coreModel.DynamicContentItemSearchCriteria criteria) { var itemsSearchResult = await _contentItemsSearchService.SearchContentItemsAsync(criteria); return(Ok(itemsSearchResult)); }
public async Task <ActionResult <GenericSearchResult <coreModel.DynamicContentListEntry> > > DynamicContentItemsEntriesSearch([FromBody] coreModel.DynamicContentItemSearchCriteria criteria) { var retVal = new GenericSearchResult <coreModel.DynamicContentListEntry> { Results = new List <coreModel.DynamicContentListEntry>() }; var foldersSearchResult = await _dynamicConentSearchService.SearchFoldersAsync(new coreModel.DynamicContentFolderSearchCriteria { FolderId = criteria.FolderId, Keyword = criteria.Keyword, Take = criteria.Take, Skip = criteria.Skip, Sort = criteria.Sort }); var folderSkip = Math.Min(foldersSearchResult.TotalCount, criteria.Skip); var folderTake = Math.Min(criteria.Take, Math.Max(0, foldersSearchResult.TotalCount - criteria.Skip)); retVal.TotalCount += foldersSearchResult.TotalCount; retVal.Results.AddRange(foldersSearchResult.Results.Skip(folderSkip).Take(folderTake)); criteria.Skip = criteria.Skip - folderSkip; criteria.Take = criteria.Take - folderTake; var itemsSearchResult = await _dynamicConentSearchService.SearchContentItemsAsync(criteria); retVal.TotalCount += itemsSearchResult.TotalCount; retVal.Results.AddRange(itemsSearchResult.Results); return(Ok(retVal)); }