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