Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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);
        }