protected void BuildTreeNodes(List <FacetSetting> categoryFacetSettings, string nextFacetFieldName, IList <Facet> facets, SelectedFacets selectedFacets, List <CategoryFacetValuesTreeNode> nodes, Tree <Overture.ServiceModel.Products.Category, string> categoryTree, CategoryFacetCounts counts, CultureInfo culture) { if ((nodes?.Count ?? 0) == 0) { return; } var facetSetting = categoryFacetSettings.FirstOrDefault(c => c.DependsOn != null && c.DependsOn.Contains(nextFacetFieldName)); if (facetSetting != null) { foreach (var node in nodes) { if (!node.IsSelected) { continue; } categoryTree.TryGetValue(node.CategoryId, out TreeNode <Overture.ServiceModel.Products.Category> categoriesRoot); node.ChildNodes = GetTreeNodes(facetSetting, facets, selectedFacets, categoriesRoot, culture, counts); node.MaxCollapsedCount = facetSetting.MaxCollapsedValueCount; node.MaxExpandedCount = facetSetting.MaxExpendedValueCount; BuildTreeNodes(categoryFacetSettings, facetSetting.FieldName, facets, selectedFacets, node.ChildNodes, categoryTree, counts, culture); } } }
public SearchFacetsViewModel(MessageBus messageBus) { MessageBus = messageBus ?? throw new ArgumentNullException("messageBus"); MessageBus.Subscribe <ServerSettingsChangedMessage>(m => { if (m.ServiceModel == null) { SelectedFacets.Clear(); Facets.Clear(); } }); MessageBus.Subscribe <BuildSearchMessage>(m => { SelectedFacets = Facets.SelectMany(f => f.Values).Where(v => v.Selected).ToList(); // save selected facets SelectedFacets.ForEach(v => m.Query.AddFacetValue(v.FacetName, v.ValueName)); // add facets to query }); MessageBus.Subscribe <EndSearchMessage>(m => { if (m.Results.ReturnOptions.HasFlag(ReturnOptions.Facets)) { Facets.Clear(); foreach (var facet in m.Results.Facets.Values) { var viewModel = new FacetViewModel(facet); viewModel.Values.ToList().ForEach(fv => fv.Selected = SelectedFacets.Any(sf => sf.Equals(fv))); Facets.Add(viewModel); } } }); Facets = new ObservableCollection <FacetViewModel>(); SelectedFacets = new List <FacetValueViewModel>(); }
public CategoryFacetValuesTree BuildCategoryFacetValuesTree(IList <Facet> facets, SelectedFacets selectedFacets, Tree <Overture.ServiceModel.Products.Category, string> categoryTree, CategoryFacetCounts counts, CultureInfo culture) { var categoryFacetSettings = FacetConfigContext.GetFacetSettings() .Where(s => s.IsCategoryFacet)?.ToList(); if ((categoryFacetSettings?.Count ?? 0) == 0) { return(null); } categoryTree.TryGetValue("Root", out TreeNode <Overture.ServiceModel.Products.Category> categoriesRoot); var tree = new CategoryFacetValuesTree() { TotalCount = counts.TotalCount }; var rootFacetSetting = categoryFacetSettings.FirstOrDefault(c => (c.DependsOn?.Count ?? 0) == 0); if (rootFacetSetting != null) { tree.ChildNodes = GetTreeNodes(rootFacetSetting, facets, selectedFacets, categoriesRoot, culture, counts); tree.MaxCollapsedCount = rootFacetSetting.MaxCollapsedValueCount; tree.MaxExpandedCount = rootFacetSetting.MaxExpendedValueCount; BuildTreeNodes(categoryFacetSettings, rootFacetSetting.FieldName, facets, selectedFacets, tree.ChildNodes, categoryTree, counts, culture); } return(tree); }
public void removeSelectedFilter(object sender, EventArgs e) { UIButton filterButton = sender as UIButton; List <SelectedFacets> selectedFacetsList = Constants.jobSearchResponse["selectedFacetsList"]; SelectedFacets aSelectedFacets = selectedFacetsList[(int)filterButton.Tag]; Constants.FilterURL = Constants.JobBaseAddress + aSelectedFacets.valueName; this.GetJobSearchData(); }
public void removeSelectedFilter(object sender, EventArgs e) { UIButton _filterButton = sender as UIButton; //List<SelectedFacets> selectedFacetsList = new List<SelectedFacets>(); //selectedFacetsList = Constants.jobSearchResponse["selectedFacetsList"]; List <SelectedFacets> selectedFacetsList = Constants.jobSearchResponse["selectedFacetsList"]; SelectedFacets aSelectedFacets = selectedFacetsList[(int)_filterButton.Tag]; Constants.FilterURL = Constants.JobBaseAddress + aSelectedFacets.valueName; this.GetJobSearchData(this._keyword, this._location); }
//Dictionary<string, List<string>> public async System.Threading.Tasks.Task <Dictionary <string, dynamic> > AsyncJobSearch(JobRequest jobRequest) { var responseDict = new Dictionary <string, dynamic>(); List <JobCMS> jobList = new List <JobCMS>(); var baseAddress = new Uri(Constants.JobBaseAddress); var values = new Dictionary <string, string>(); values.Add("filterUrl", jobRequest.FilterURL); values.Add("sfr", Constants.JobDetailSiteName); //Adecco USA values.Add("facetSettingId", "{D4739C3F-3DAB-49DE-9C6E-7215979C15BF}"); values.Add("facetSettingId", Constants.JobSearchFacetSettingID); values.Add("currentLanguage", Constants.JobDetailCurrentLanguage); values.Add("IsJobPage", "1"); values.Add("clientId", ""); values.Add("clientName", ""); values.Add("branchId", ""); var content = new FormUrlEncodedContent(values); var cookieContainer = new CookieContainer(); CFNetworkHandler networkHandler = new CFNetworkHandler(); networkHandler.UseSystemProxy = true; networkHandler.CookieContainer = cookieContainer; HttpClientHandler handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate, CookieContainer = cookieContainer }; //using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer }) using (var client = new HttpClient(handler)) { try { cookieContainer.Add(baseAddress, new Cookie("sitenameForRegister", Constants.JobDetailSiteName)); //Adecco USA cookieContainer.Add(baseAddress, new Cookie("ASP.NET_SessionId", "wejofxxqheshv4gzya35sakr")); cookieContainer.Add(baseAddress, new Cookie("ASP.NET_SessionId", "01pypyigge22sem4bd5mmjba")); cookieContainer.Add(baseAddress, new Cookie("Locale", Constants.JobDetailCurrentLanguage)); //ja-JP cookieContainer.Add(baseAddress, new Cookie("userstatus", "candidate")); cookieContainer.Add(baseAddress, new Cookie("IsJobPage", "1")); var httpResponse = await client.PostAsync(Constants.JobSearchURL, content); if (httpResponse.StatusCode == HttpStatusCode.OK) { string responseContent = await httpResponse.Content.ReadAsStringAsync(); dynamic responseObj = Newtonsoft.Json.JsonConvert.DeserializeObject(responseContent); //if(responseObj == null) // return null; dynamic jobitems = responseObj["Items"]; dynamic jobsCount = responseObj["Count"]; dynamic TotalCount = responseObj["TotalCount"]; Constants.TotalJobCount = TotalCount.ToObject <string>(); Constants.JobCount = jobsCount.ToObject <string>(); Constants.JobCount = Constants.JobCount.Replace("xx", Constants.TotalJobCount); JobCMS job = null; jobList = new List <JobCMS>(); foreach (JObject jcontent in jobitems.Children <JObject>()) { job = new JobCMS(); job = jcontent.ToObject <JobCMS>(); if (Constants.JobDetailSiteName.Equals("adecco.fr")) { job.ContractTypeTitle = job.EmploymentTypeTitle; } jobList.Add(job); } responseDict.Add("jobList", jobList); dynamic presentationFacetResults = responseObj["PresentationFacetResults"]; List <PresentationFacetResult> presentationFacetResultList = new List <PresentationFacetResult>(); PresentationFacetResult _presentationFacetResult = new PresentationFacetResult(); foreach (JObject jcontent in presentationFacetResults.Children <JObject>()) { //presentationFacetResult.ListFacetValues = new List<FacetValue>(); _presentationFacetResult = jcontent.ToObject <PresentationFacetResult>(); presentationFacetResultList.Add(_presentationFacetResult); } //Console.WriteLine("ListPresentationFacetResult =={0}", presentationFacetResultList); responseDict.Add("presentationFacetResultList", presentationFacetResultList); dynamic _SelectedFacets = responseObj["SelectedFacets"]; List <SelectedFacets> selectedFacetsList = new List <SelectedFacets>(); SelectedFacets aSelectedFacets = new SelectedFacets(); foreach (JObject jcontent in _SelectedFacets.Children <JObject>()) { aSelectedFacets = jcontent.ToObject <SelectedFacets>(); selectedFacetsList.Add(aSelectedFacets); } Console.WriteLine("selectedFacetsList =={0}", selectedFacetsList); responseDict.Add("selectedFacetsList", selectedFacetsList); return(responseDict); } return(responseDict); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } return(responseDict); }
protected List <CategoryFacetValuesTreeNode> GetTreeNodes(FacetSetting facetSetting, IList <Facet> facets, SelectedFacets selectedFacets, TreeNode <Overture.ServiceModel.Products.Category> categoryTree, CultureInfo culture, CategoryFacetCounts counts) { var categoryChildren = categoryTree.Children; var categoryChildrenLookup = categoryChildren.ToLookup(_ => _.Value.DisplayName.GetLocalizedValue(culture.Name)); var facet = facets.FirstOrDefault(f => f.FieldName == facetSetting.FieldName); var countsForFacetValues = counts?.Facets?.FirstOrDefault(fc => facetSetting.FieldName.StartsWith(fc.FieldName))?.FacetValues; List <CategoryFacetValuesTreeNode> nodes = null; var facetValues = facet?.FacetValues.Concat(facet.OnDemandFacetValues); if (facetValues != null) { nodes = (from fv in facetValues let category = categoryChildrenLookup[fv.Value].FirstOrDefault() where category != null let totalCount = countsForFacetValues?.FirstOrDefault(fcv => fcv.Value.Equals(category.Value.Id, StringComparison.OrdinalIgnoreCase))?.Quantity select new CategoryFacetValuesTreeNode(fv.Title, fv.Value, totalCount != null ? totalCount.Value : fv.Quantity, facetSetting.FacetType, facetSetting.FieldName, fv.IsSelected, fv.IsRemovable) { CategoryId = category.Value.Id }).ToList(); } if (nodes == null || nodes.Count == 0) { var selected = selectedFacets.Facets.Where(f => f.FieldName == facetSetting.FieldName); if (selected != null && selected.Count() > 0) { nodes = (from fv in selected let category = categoryChildrenLookup[fv.Value].FirstOrDefault() where category != null let totalCount = countsForFacetValues?.FirstOrDefault(fcv => fcv.Value.Equals(category.Value.Id, StringComparison.OrdinalIgnoreCase))?.Quantity select new CategoryFacetValuesTreeNode(fv.DisplayName, fv.Value, totalCount != null ? totalCount.Value : 0, facetSetting.FacetType, facetSetting.FieldName, true, fv.IsRemovable) { CategoryId = category.Value.Id }).ToList(); } } return(nodes?.OrderByDescending(n => n.Quantity).ToList()); }
protected virtual async Task <CategoryFacetValuesTree> BuildCategoryFacetValuesTree(IList <Facet> facets, SelectedFacets selectedFacets, CategoryFacetCounts categoryCounts) { var categories = await CategoryRepository.GetCategoriesTreeAsync(new GetCategoriesParam { Scope = ComposerContext.Scope }).ConfigureAwait(false); return(FacetFactory.BuildCategoryFacetValuesTree(facets, selectedFacets, categories, categoryCounts, ComposerContext.CultureInfo)); }