public IFolderContent[] Search(string name, int page) { return(_concurrentManager.PerformWithSynchronization( new List <IFolderContent>() { new FolderContent(_constance.HomeFolderName, _constance.HomeFolderPath, FolderContentType.Folder) }, () => { var numOfElementToSkip = (page - 1) * _constance.DefaultNumberOfElementOnPage; if (_searchCache.Contains(name)) { var searchResult = _searchCache.GetFromCache(name); return searchResult.Skip(numOfElementToSkip).Take(_constance.DefaultNumberOfElementOnPage).ToArray(); } var result = new List <IFolderContent>(); var homeFolder = _folderContentFolderService.GetFolder(_constance.HomeFolderName, _constance.HomeFolderPath); RecursiveSearch(name, homeFolder, result); _searchCache.AddToCache(name, result.ToArray()); var resultPageArray = result.Skip(numOfElementToSkip).Take(_constance.DefaultNumberOfElementOnPage) .ToArray(); return resultPageArray; })); }
public string OnNewSearch(SearchObject searchObject) { string searchGuid = _searchCache.AddToCache(searchObject); return(searchGuid); }