Example #1
0
        private void UpdateFacets(FacetResults facets, bool bindExistingFacets = false)
        {
            var existingSelectedFacets =
                SearchFacets.Select(e => new FacetGroup()
            {
                FacetName   = e.FacetName,
                FacetValues = e.FacetValues.Where(f => f.IsSelected.HasValue && f.IsSelected.Value).ToList()
            }).ToList();

            SearchFacets.Clear();

            if (facets != null)
            {
                foreach (var result in facets)
                {
                    SearchFacets.Add(new FacetGroup()
                    {
                        FacetName        = result.Key,
                        FacetDisplayName = JobSearchService.FacetDefinitions.ContainsKey(result.Key) ? JobSearchService.FacetDefinitions[result.Key] : result.Key,
                        FacetValues      =
                            result.Value.Select(e => new FacetSelection()
                        {
                            FacetValue = e.Value.ToString(), IsSelected = bindExistingFacets && existingSelectedFacets.Any(ef => ef.FacetName == result.Key && ef.FacetValues.Any(fv => fv.FacetValue == e.Value.ToString())), FacetCount = e.Count
                        })
                            .ToList()
                    });
                }
            }
            OnPropertyChanged(nameof(ShowFacets));
        }
Example #2
0
        public async Task ExecuteFilter()
        {
            IsBusy = true;
            try
            {
                var results = await _searchService.ExecuteSearch(SearchQuery, SearchFacets.ToList());

                var synonymMap = await GetSynonymMap(SearchQuery);
                await UpdateSearchResults(results.JobResults, synonymMap);

                UpdateFacets(results.Facets, true);
            }
            finally
            {
                IsBusy = false;
            }
        }
Example #3
0
        public async Task ExecuteGeoFilter()
        {
            IsBusy = true;
            try
            {
                var results = await _searchService.ExecuteSearch(SearchQuery, SearchFacets.ToList(), new PositionDistanceSearch()
                {
                    GeoPoint = _searchLocationIcon.GeoPoint, Radius = KilometersSelected
                });

                var synonymMap = await GetSynonymMap(SearchQuery);
                await UpdateSearchResults(results.JobResults, synonymMap);

                UpdateFacets(results.Facets, true);
            }
            finally
            {
                IsBusy = false;
            }
        }