private void SetSalaryFromData(XDocument jobXml, Salary salary,
                                       Func <Salary, bool> salaryIsZero, Func <Salary, bool> maxPayIsLessThanOrEqualToMinPay,
                                       Func <Salary, string> salaryExactValue, Func <Salary, string> salaryRange)
        {
            if (salaryIsZero(salary))
            {
                // 0 can mean 0 was entered, or nothing was entered
                var displayText = jobXml.Root.Element("salaryText")?.Value;
                if (!String.IsNullOrEmpty(displayText))
                {
                    salary.MinimumHourlyRate = null;
                    salary.MaximumHourlyRate = null;
                    salary.MinimumSalary     = null;
                    salary.MaximumSalary     = null;
                    salary.SalaryRange       = displayText;
                }
                else
                {
                    // If no salaryText, is there a pay grade?
                    JobsLookupValue payGrade = null;
                    if (!String.IsNullOrEmpty(_payGradeFieldName))
                    {
                        payGrade = _payGrades?.SingleOrDefault(x => x.LookupValueId == jobXml.Root.Element(_payGradeFieldName)?.Element("answer")?.Value);
                    }

                    // If not, it's voluntary
                    if (payGrade != null)
                    {
                        salary.MinimumHourlyRate = null;
                        salary.MaximumHourlyRate = null;
                        salary.MinimumSalary     = null;
                        salary.MaximumSalary     = null;
                        salary.SalaryRange       = payGrade.Text;
                    }
                    else
                    {
                        salary.SalaryRange = "Voluntary";
                    }
                }
            }
            else if (maxPayIsLessThanOrEqualToMinPay(salary))
            {
                salary.SalaryRange = salaryExactValue(salary);
            }
            else
            {
                salary.SalaryRange = salaryRange(salary);
            }
        }
Beispiel #2
0
        private IList <JobsLookupValue> ReadLookupValues(string group)
        {
            var lookups      = new List <JobsLookupValue>() as IList <JobsLookupValue>;
            var examineQuery = _searcher.CreateSearchCriteria().Field("group", group).Compile();

            examineQuery.OrderBy("text");
            var results = _searcher.Search(examineQuery);

            foreach (var result in results)
            {
                var lookup = new JobsLookupValue()
                {
                    LookupValueId = result.Fields.ContainsKey("id") ? result["id"] : String.Empty,
                    Text          = result.Fields.ContainsKey("text") ? result["text"] : String.Empty,
                    Count         = result.Fields.ContainsKey("count") ? Int32.Parse(result["count"], CultureInfo.InvariantCulture) : 0
                };
                lookups.Add(lookup);
            }
            return(lookups);
        }
        private static async Task <SimpleDataSet> CreateDataSetFromLookup(int fakeNodeId, string indexType, string group, JobSearchQuery query, JobsLookupValue lookupValue, IJobsDataProvider jobsDataProvider)
        {
            var simpleDataSet = new SimpleDataSet {
                NodeDefinition = new IndexedNode(), RowData = new Dictionary <string, string>()
            };

            simpleDataSet.NodeDefinition.NodeId = fakeNodeId;
            simpleDataSet.NodeDefinition.Type   = indexType;
            simpleDataSet.RowData.Add("id", lookupValue.Id);
            simpleDataSet.RowData.Add("group", group);
            simpleDataSet.RowData.Add("text", lookupValue.Text);

            if (jobsDataProvider != null)
            {
                var jobs = await jobsDataProvider.ReadJobs(query);

                simpleDataSet.RowData.Add("count", jobs.Count.ToString(CultureInfo.CurrentCulture));
            }
            return(simpleDataSet);
        }