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); } }
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); }