protected virtual List <FacetViewModel> GetFacets(GetContentSearchParameter param, ContentSearchTabViewModel tab) { var facets = new List <FacetViewModel>(); var labels = WebsiteSearchFacade.GetFacetOptions().ToDictionary(t => t.Item1, t => t.Item2); foreach (var f in tab.SearchResults.Facets) { if (f.Hits.Count == 0) { continue; } var facet = new FacetViewModel { Label = labels[f.Name], Hits = new List <FacetHitViewModel>() }; foreach (var hit in f.Hits) { facet.Hits.Add(GetFacetHiViewModel(hit, f.Name)); } facets.Add(facet); } return(facets); }
protected virtual List <ContentSearchTabViewModel> GetSuggestedTabs(GetContentSearchParameter param, List <IContentTab> contentTabs) { List <ContentSearchTabViewModel> vm = null; if (param.ProductsTabActive && param.IsCorrectedSearchQuery) { vm = new List <ContentSearchTabViewModel>(); foreach (var tab in contentTabs) { var searchQuery = param.SearchQuery; var searchRequest = GetSearchRequestForContentTab(param, tab, searchQuery); var result = WebsiteSearchFacade.Search(searchRequest); if (result.ResultsFound > 0) { vm.Add(new ContentSearchTabViewModel { Title = tab.Title, UrlTitle = tab.UrlTitle, TabUrl = GetTabUrl(param, tab, searchQuery), Total = result.ResultsFound }); } } } return(vm); }
public virtual ContentSearchViewModel GetContentSearchViewModel(GetContentSearchParameter param) { using (var conn = new DataConnection(param.Culture)) { var contentTabs = DataFacade.GetData <IContentTab>().Where(c => !string.IsNullOrEmpty(c.DataTypes)).OrderBy(t => t.Order).ToList(); if (contentTabs == null || contentTabs.Count == 0) { return(null); } var vm = new ContentSearchViewModel(); foreach (var tab in contentTabs) { var isActive = param.PathInfo == tab.UrlTitle; var searchQuery = GetSearchQuery(param); var searchRequest = GetSearchRequestForContentTab(param, tab, searchQuery); var result = WebsiteSearchFacade.Search(searchRequest); vm.Tabs.Add(new ContentSearchTabViewModel { Title = tab.Title, UrlTitle = tab.UrlTitle, TabUrl = GetTabUrl(param, tab, searchQuery), PagesCount = (int)Math.Ceiling((decimal)result.ResultsFound / param.PageSize), Total = result.ResultsFound, IsActive = isActive, SearchResults = result.Entries.Select(x => GetSearchResultsEntryViewModel(x)).ToList(), DataTypes = tab.DataTypes }); if (isActive) { vm.SelectedFacets = GetSelectedFacets(param, result); vm.Facets = GetFacets(param, result); } } var sortBys = DataFacade.GetData <ISortOption>().OrderBy(t => t.Order).ToList(); vm.AvailableSortBys = sortBys; vm.SelectedSortBy = sortBys.Find(o => o.FieldName == param.SortBy && (o.IsReverted && param.SortDirection == "desc" || !o.IsReverted && param.SortDirection == "asc")) ?? sortBys.First(); vm.SuggestedTabs = GetSuggestedTabs(param, contentTabs); return(vm); } }
public virtual ContentSearchViewModel GetContentSearchViewModel(GetContentSearchParameter param) { var contentTabs = DataFacade.GetData <IContentTab>().Where(c => !string.IsNullOrEmpty(c.DataTypes)).OrderBy(t => t.Order).ToList(); if (contentTabs == null || contentTabs.Count == 0) { return(null); } var vm = new ContentSearchViewModel(); foreach (var tab in contentTabs) { var isActive = param.PathInfo == tab.UrlTitle; var searchQuery = GetSearchQuery(param); var searchRequest = GetSearchRequestForContentTab(param, tab, searchQuery); var result = WebsiteSearchFacade.Search(searchRequest); vm.Tabs.Add(new ContentSearchTabViewModel { Title = tab.Title, UrlTitle = tab.UrlTitle, TabUrl = GetTabUrl(param, tab, searchQuery), SearchResults = result, PagesCount = (int)Math.Ceiling((decimal)result.ResultsFound / param.PageSize), Total = result.ResultsFound, IsActive = isActive }); } vm.SuggestedTabs = GetSuggestedTabs(param, contentTabs); if (vm.ActiveTab != null) { vm.SelectedFacets = GetSelectedFacets(param, vm.ActiveTab); vm.Facets = GetFacets(param, vm.ActiveTab); } return(vm); }