Example #1
0
        private IList <FacetViewModel> MapFacets(IList <Facet> facetsInCategory)
        {
            IList <FacetViewModel> facets = new List <FacetViewModel>();

            foreach (var facet in facetsInCategory)
            {
                var facetViewModel = new FacetViewModel();
                facetViewModel.Name        = facet.Name;
                facetViewModel.DisplayName = facet.DisplayName;

                if (!facet.FacetValues.Any())
                {
                    continue;
                }

                foreach (var value in facet.FacetValues)
                {
                    FacetValueViewModel facetVal = new FacetValueViewModel(value.Value, (int)value.Count);
                    facetViewModel.FacetValues.Add(facetVal);
                }

                facets.Add(facetViewModel);
            }

            return(facets);
        }
Example #2
0
        private List <FacetViewModel> CreateCategoryFacetViewModels(IEnumerable <TermCount> facetResult, List <string> selectedFacets)
        {
            List <FacetViewModel> list = new List <FacetViewModel>();

            foreach (var term in facetResult)
            {
                var id   = term.Term;
                var name = term.Term;

                if (term.Term.Contains("|"))
                {
                    string[] idAndName = term.Term.Split('|');
                    id   = idAndName[0];
                    name = idAndName[1];
                }

                var model = new FacetViewModel
                {
                    Count    = term.Count,
                    Id       = id,
                    Name     = name,
                    Selected = selectedFacets != null && selectedFacets.Contains(id)
                };
                list.Add(model);
            }

            return(list);
        }
Example #3
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);
        }
Example #4
0
        protected virtual List <FacetViewModel> GetSelectedFacets(GetContentSearchParameter param, ContentSearchTabViewModel tab)
        {
            var selectedFacets = new Dictionary <string, List <SearchResultFacetHit> >();
            int count          = 0;

            foreach (var f in tab.SearchResults.Facets)
            {
                var facets = GetFacetSelection(param, f.Name).ToList();
                count += facets.Count;
                selectedFacets.Add(f.Name, f.Hits.Where(i => facets.Contains(i.Value)).ToList());
            }

            if (count > 0)
            {
                var vm = new List <FacetViewModel>();
                foreach (var f in selectedFacets)
                {
                    var facet = new FacetViewModel()
                    {
                        Label = f.Key,
                        Hits  = new List <FacetHitViewModel>()
                    };

                    foreach (var hit in f.Value)
                    {
                        facet.Hits.Add(GetFacetHiViewModel(hit, f.Key));
                    }

                    vm.Add(facet);
                }
                return(vm);
            }
            return(null);
        }
Example #5
0
        private List <SizeFacetViewModel> GetAllDifferentSizeFacets(IEnumerable <TermCount> facetResult, List <string> selectedSizes)
        {
            List <SizeFacetViewModel> allDifferentSizeFacets = new List <SizeFacetViewModel>();

            foreach (var sizeFacet in facetResult.OrderBy(x => SortSizes(x.Term)))
            {
                string   term        = sizeFacet.Term.ToLower();
                string[] typeAndSize = term.Split('/');
                string   sizeType    = typeAndSize[0];
                string   size        = typeAndSize[1];
                if (typeAndSize.Length == 3)
                {
                    sizeType = typeAndSize[1];
                    size     = typeAndSize[2];
                }

                bool newSizeTypeList        = true;
                SizeFacetViewModel sizeList = allDifferentSizeFacets.FirstOrDefault(x => x.SizeUnit == sizeType);
                if (sizeList == null)
                {
                    sizeList            = new SizeFacetViewModel();
                    sizeList.SizeUnit   = sizeType;
                    sizeList.SizeFacets = new List <FacetViewModel>();
                }
                else
                {
                    newSizeTypeList = false;
                }
                // check for duplicate entry and join them
                var facetViewModel = sizeList.SizeFacets.FirstOrDefault(x => x.Name == term);
                if (facetViewModel == null)
                {
                    facetViewModel       = new FacetViewModel();
                    facetViewModel.Name  = term;
                    facetViewModel.Size  = size;
                    facetViewModel.Count = sizeFacet.Count;
                    sizeList.SizeFacets.Add(facetViewModel);
                }
                else
                {
                    facetViewModel.Count += sizeFacet.Count;
                }
                facetViewModel.Selected = selectedSizes != null && selectedSizes.Contains(term);

                if (sizeList.SizeFacets.Any(x => x.Selected.Equals(true)))
                {
                    sizeList.SomeIsSelected = true;
                }
                if (newSizeTypeList)
                {
                    allDifferentSizeFacets.Add(sizeList);
                }
            }
            return(allDifferentSizeFacets);
        }
Example #6
0
        // Updates the counts of matching results for the processed query
        private static void UpdateFacets(IEnumerable <FacetResult> facetResults, FacetViewModel listItem)
        {
            long?count = 0;

            foreach (var items in facetResults)
            {
                if (items.Value.Equals(listItem.Value))
                {
                    count = items.Count;
                    break;
                }
            }

            listItem.Name = $"{listItem.Value} ({count})";
        }
Example #7
0
        // Adds a retrieved 'FacetResult' to the list of facets in the corresponding model
        private void AddFacet(AzureSearchViewModel model, FacetResult facetResult, string resultFacetKey)
        {
            FacetViewModel item = new FacetViewModel()
            {
                Name = $"{facetResult.Value} ({facetResult.Count})", Value = facetResult.Value.ToString()
            };

            switch (resultFacetKey)
            {
            case FACET_COFFEE_COUNTRY:
                model.FilterCountry.Add(item);
                break;

            case FACET_COFFEE_FARM:
                model.FilterFarm.Add(item);
                break;

            default:
                break;
            }
        }
        private List<SizeFacetViewModel> GetAllDifferentSizeFacets(IEnumerable<TermCount> facetResult, List<string> selectedSizes)
        {
            List<SizeFacetViewModel> allDifferentSizeFacets = new List<SizeFacetViewModel>();

            foreach (var sizeFacet in facetResult.OrderBy(x => SortSizes(x.Term)))
            {
                string term = sizeFacet.Term.ToLower();
                string[] typeAndSize = term.Split('/');
                string sizeType = typeAndSize[0];
                string size = typeAndSize[1];
                if (typeAndSize.Length == 3)
                {
                    sizeType = typeAndSize[1];
                    size = typeAndSize[2];
                }

                bool newSizeTypeList = true;
                SizeFacetViewModel sizeList = allDifferentSizeFacets.FirstOrDefault(x => x.SizeUnit == sizeType);
                if (sizeList == null)
                {
                    sizeList = new SizeFacetViewModel();
                    sizeList.SizeUnit = sizeType;
                    sizeList.SizeFacets = new List<FacetViewModel>();
                }
                else
                {
                    newSizeTypeList = false;
                }
                // check for duplicate entry and join them
                var facetViewModel = sizeList.SizeFacets.FirstOrDefault(x => x.Name == term);
                if (facetViewModel == null)
                {
                    facetViewModel = new FacetViewModel();
                    facetViewModel.Name = term;
                    facetViewModel.Size = size;
                    facetViewModel.Count = sizeFacet.Count;
                    sizeList.SizeFacets.Add(facetViewModel);
                }
                else
                {
                    facetViewModel.Count += sizeFacet.Count;
                }
                facetViewModel.Selected = selectedSizes != null && selectedSizes.Contains(term);

                if (sizeList.SizeFacets.Any(x => x.Selected.Equals(true)))
                {
                    sizeList.SomeIsSelected = true;
                }
                if (newSizeTypeList)
                {
                    allDifferentSizeFacets.Add(sizeList);
                }
            }
            return allDifferentSizeFacets;
        }
        private List<FacetViewModel> CreateCategoryFacetViewModels(IEnumerable<TermCount> facetResult, List<string> selectedFacets)
        {
            List<FacetViewModel> list = new List<FacetViewModel>();

            foreach (var term in facetResult)
            {
                var id = term.Term;
                var name = term.Term;

                if (term.Term.Contains("|"))
                {
                    string[] idAndName = term.Term.Split('|');
                    id = idAndName[0];
                    name = idAndName[1];
                }

                var model = new FacetViewModel
                {
                    Count = term.Count,
                    Id = id,
                    Name = name,
                    Selected = selectedFacets != null && selectedFacets.Contains(id)
                };
                list.Add(model);
            }

            return list;
        }