private void AddSortOrderToQueryString(NameValueCollection queryString, JobSearchQuery.JobsSortOrder sortBy) { switch (sortBy) { case JobSearchQuery.JobsSortOrder.JobTitleAscending: UpdateQueryString(queryString, "option", "21"); UpdateQueryString(queryString, "sort", "ASC"); break; case JobSearchQuery.JobsSortOrder.JobTitleDescending: UpdateQueryString(queryString, "option", "21"); UpdateQueryString(queryString, "sort", "DESC"); break; case JobSearchQuery.JobsSortOrder.OrganisationAscending: UpdateQueryString(queryString, "option", "138"); UpdateQueryString(queryString, "sort", "ASC"); break; case JobSearchQuery.JobsSortOrder.OrganisationDescending: UpdateQueryString(queryString, "option", "138"); UpdateQueryString(queryString, "sort", "DESC"); break; case JobSearchQuery.JobsSortOrder.LocationAscending: UpdateQueryString(queryString, "option", "139"); UpdateQueryString(queryString, "sort", "ASC"); break; case JobSearchQuery.JobsSortOrder.LocationDescending: UpdateQueryString(queryString, "option", "139"); UpdateQueryString(queryString, "sort", "DESC"); break; case JobSearchQuery.JobsSortOrder.SalaryRangeAscending: UpdateQueryString(queryString, "option", "150"); UpdateQueryString(queryString, "sort", "ASC"); break; case JobSearchQuery.JobsSortOrder.SalaryRangeDescending: UpdateQueryString(queryString, "option", "150"); UpdateQueryString(queryString, "sort", "DESC"); break; case JobSearchQuery.JobsSortOrder.ClosingDateAscending: UpdateQueryString(queryString, "option", "48"); UpdateQueryString(queryString, "sort", "ASC"); break; case JobSearchQuery.JobsSortOrder.ClosingDateDescending: UpdateQueryString(queryString, "option", "48"); UpdateQueryString(queryString, "sort", "DESC"); break; } }
/// <summary> /// Creates a <see cref="JobSearchQuery"/> from query string parameters. /// </summary> /// <param name="queryString">The query string.</param> /// <returns></returns> public JobSearchQuery CreateFromQueryString(NameValueCollection queryString) { var query = new JobSearchQuery(); if (!String.IsNullOrEmpty(queryString["keywords"])) { query.Keywords = queryString["keywords"]; } if (!String.IsNullOrEmpty(queryString["location"])) { AddQueryStringValuesToList(queryString["location"], query.Locations); } if (!String.IsNullOrEmpty(queryString["type"])) { AddQueryStringValuesToList(queryString["type"], query.JobTypes); } if (!String.IsNullOrEmpty(queryString["org"])) { AddQueryStringValuesToList(queryString["org"], query.Organisations); } if (!String.IsNullOrEmpty(queryString["salary"])) { AddQueryStringValuesToList(queryString["salary"], query.SalaryRanges); } if (!String.IsNullOrEmpty(queryString["ref"])) { query.JobReference = queryString["ref"]; } if (!String.IsNullOrEmpty(queryString["hours"])) { AddQueryStringValuesToList(queryString["hours"], query.WorkPatterns); } if (!String.IsNullOrEmpty(queryString["sort"])) { JobSearchQuery.JobsSortOrder sort = JobSearchQuery.JobsSortOrder.None; Enum.TryParse(queryString["sort"], true, out sort); query.SortBy = sort; } return(query); }
/// <summary> /// Creates a <see cref="JobSearchQuery"/> from a <see cref="NameValueCollection"/>. /// </summary> /// <param name="collection">The query as a collection of parameters.</param> /// <returns></returns> public JobSearchQuery ToQuery(NameValueCollection collection) { var query = new JobSearchQuery(); if (!String.IsNullOrEmpty(collection["keywords"])) { query.Keywords = collection["keywords"]; } if (!String.IsNullOrEmpty(collection["locations"])) { AddQueryStringValuesToList(collection["locations"], query.Locations); } else if (!String.IsNullOrEmpty(collection["location"])) { // The key was changed to let MVC build a model automatically from form data, // but we need to support the old key as it may be saved in job alert subscriptions AddQueryStringValuesToList(collection["location"], query.Locations); } if (!String.IsNullOrEmpty(collection["jobtypes"])) { AddQueryStringValuesToList(collection["jobtypes"], query.JobTypes); } else if (!String.IsNullOrEmpty(collection["type"])) { // The key was changed to let MVC build a model automatically from form data, // but we need to support the old key as it may be saved in job alert subscriptions AddQueryStringValuesToList(collection["type"], query.JobTypes); } // Translate obsolete job types to their replacements. These are no longer available but may // be saved in old job alert subscriptions. if (_translateObsoleteJobTypes) { TranslateOldJobType("Apprenticeships", new[] { "Apprenticeships and Trainee" }, query.JobTypes); TranslateOldJobType("Care and Social Work", new[] { "Bereavement", "Care - Adults", "Safeguarding", "Social Work - Childrens", "Social Work - Adults" }, query.JobTypes); TranslateOldJobType("Children’s - Social Work", new[] { "Social Work - Childrens" }, query.JobTypes); TranslateOldJobType("Children’s - Social Work Managers", new[] { "Social Work - Childrens" }, query.JobTypes); TranslateOldJobType("Education", new[] { "Education and Learning" }, query.JobTypes); TranslateOldJobType("ICT", new[] { "Information Technology" }, query.JobTypes); TranslateOldJobType("Personnel and HR", new[] { "Human Resources" }, query.JobTypes); TranslateOldJobType("Support Staff", new[] { "Support Staff - Education" }, query.JobTypes); TranslateOldJobType("Teaching", new[] { "Teaching and Leadership" }, query.JobTypes); TranslateOldJobType("Teaching - Leadership", new[] { "Teaching and Leadership" }, query.JobTypes); TranslateOldJobType("Transport", new[] { "Transportation and Highways", "Drivers", "Highway Maintenance" }, query.JobTypes); TranslateOldJobType("Youth Services", new[] { "Youth and Community Workers" }, query.JobTypes); TranslateOldJobType("Youth Work", new[] { "Youth and Community Workers" }, query.JobTypes); } if (!String.IsNullOrEmpty(collection["department"])) { AddQueryStringValuesToList(collection["department"], query.Departments); } if (!String.IsNullOrEmpty(collection["org"])) { AddQueryStringValuesToList(collection["org"], query.Organisations); } if (!String.IsNullOrEmpty(collection["salaryranges"])) { AddQueryStringValuesToList(collection["salaryranges"], query.SalaryRanges); } else if (!String.IsNullOrEmpty(collection["salary"])) { // The key was changed to let MVC build a model automatically from form data, // but we need to support the old key as it may be saved in job alert subscriptions AddQueryStringValuesToList(collection["salary"], query.SalaryRanges); } for (var i = 0; i < query.SalaryRanges.Count; i++) { query.SalaryRanges[i] = Regex.Replace(query.SalaryRanges[i], "^(£)([0-9]+)", FormatSalary_MatchEvaluator); query.SalaryRanges[i] = Regex.Replace(query.SalaryRanges[i], "(to £)([0-9]+)", FormatSalary_MatchEvaluator); } if (!String.IsNullOrEmpty(collection["paygrades"])) { AddQueryStringValuesToList(collection["paygrades"], query.PayGrades); } if (!String.IsNullOrEmpty(collection["ref"])) { query.JobReference = collection["ref"]; } if (!String.IsNullOrEmpty(collection["contracttypes"])) { AddQueryStringValuesToList(collection["contracttypes"], query.ContractTypes); } if (!String.IsNullOrEmpty(collection["workpatterns"])) { AddQueryStringValuesToList(collection["workpatterns"], query.WorkPatterns); } if (!String.IsNullOrEmpty(collection["closingdatefrom"])) { if (DateTime.TryParse(collection["closingdatefrom"], out DateTime closingDateFrom)) { query.ClosingDateFrom = closingDateFrom; } } if (!String.IsNullOrEmpty(collection["sort"])) { JobSearchQuery.JobsSortOrder sort = JobSearchQuery.JobsSortOrder.None; Enum.TryParse(collection["sort"], true, out sort); query.SortBy = sort; } if (!String.IsNullOrEmpty(collection["page"])) { if (Int32.TryParse(collection["page"], out int page)) { if (page > 0) { query.CurrentPage = page; } } } if (!String.IsNullOrEmpty(collection["pagesize"])) { if (Int32.TryParse(collection["pagesize"], out int pageSize)) { if (pageSize > 0) { query.PageSize = pageSize; } } } return(query); }