/// <summary> /// Creates the search criteria from the QueryString. /// </summary> /// <param name="requestData">The query string data.</param> /// <returns>A SearchCriteriaStructure with data.</returns> private static SearchCriteriaStructure CreateSearchCriteria(NameValueCollection requestData) { SearchCriteriaStructure criteria = new SearchCriteriaStructure { //APIKey APIKey = ConfigurationManager.AppSettings["APIKey"], // SUBJECT SubjectKeyword = Utilities.GetQueryStringValue(requestData, "Subject") }; string[] tempResults = Utilities.GetQueryStringValues(requestData, "LDCSCategoryCodes"); if (tempResults != null) { criteria.LDCS = new LDCSInputType { CategoryCode = tempResults }; } criteria.DFE1619Funded = Utilities.GetCheckboxValue(requestData, "DfEFundedOnly"); // REGION criteria.Location = Utilities.GetQueryStringValue(requestData, "Location"); criteria.Distance = Utilities.GetQueryStringValueAsFloat(requestData, "Distance"); if (criteria.Distance > 0) { criteria.DistanceSpecified = true; } // PROVIDER criteria.ProviderID = Utilities.GetQueryStringValue(requestData, "ProviderId"); criteria.ProviderKeyword = Utilities.GetQueryStringValue(requestData, "ProviderText"); // QUALIFICATION criteria.QualificationTypes = Utilities.GetQueryStringQualificationTypes(requestData, "QualificationTypes"); criteria.QualificationLevels = Utilities.GetQueryStringQualificationLevels(requestData, "QualificationLevels"); // STUDY MODE AND ATTENDANCE criteria.EarliestStartDate = Utilities.GetQueryStringValue(requestData, "EarliestStartDate"); criteria.StudyModes = Utilities.GetQueryStringStudyModeType(requestData, "StudyModes"); criteria.AttendanceModes = Utilities.GetQueryStringAttendanceModeType(requestData, "AttendanceModes"); criteria.AttendancePatterns = Utilities.GetQueryStringAttendancePatternType(requestData, "AttendancePatterns"); // FLAGS criteria.FlexStartFlag = Utilities.GetCheckboxValue(requestData, "IncFlexibleStartDateFlag"); criteria.OppsAppClosedFlag = Utilities.GetCheckboxValue(requestData, "IncIfOpportunityApplicationClosedFlag"); criteria.TTGFlag = Utilities.GetCheckboxValue(requestData, "IncTTGFlag"); criteria.TQSFlag = Utilities.GetCheckboxValue(requestData, "IncTQSFlag"); criteria.IESFlag = Utilities.GetCheckboxValue(requestData, "IncIESFlag"); criteria.A10Codes = Utilities.GetQueryStringA10Codes(requestData, "A10Flags"); criteria.ILSFlag = Utilities.GetCheckboxValue(requestData, "IndLivingSkillsFlag"); criteria.SFLFlag = Utilities.GetCheckboxValue(requestData, "SkillsForLifeFlag"); // STATUS criteria.ERAppStatus = Utilities.GetCheckboxValues(requestData, "ERAppStatus"); criteria.ERTtgStatus = Utilities.GetCheckboxValues(requestData, "ERTTGStatus"); criteria.AdultLRStatus = Utilities.GetCheckboxValues(requestData, "AdultLRStatus"); criteria.OtherFundingStatus = Utilities.GetCheckboxValues(requestData, "OtherFundingStatus"); return(criteria); }
/// <summary> /// Populates the page controls with the values from the search criteria. /// </summary> /// <param name="criteria">The populated search criteria.</param> public void PopulatePage(SearchCriteriaStructure criteria) { const string scriptName = "PopulateCriteria"; Type thisType = this.GetType(); ClientScriptManager mgr = Page.ClientScript; if (!mgr.IsStartupScriptRegistered(thisType, scriptName)) { StringBuilder scriptText = new StringBuilder(); scriptText.Append("<script type=text/javascript>" + Environment.NewLine); // API Key if (phAPIKey.Visible) { scriptText.Append(Utilities.GetJavascriptSetValueSnippet("APIKey", criteria.APIKey)); } // PROVIDER scriptText.Append(Utilities.GetJavascriptSetValueSnippet("Provider", criteria.ProviderKeyword)); // end scriptText.Append("</script>"); mgr.RegisterStartupScript(thisType, scriptName, scriptText.ToString()); } }
/// <summary> /// Gets the results from the web service. /// </summary> /// <param name="criteria">The course search criteria.</param> /// <param name="sortBy">The column on which to sort the results.</param> /// <param name="recordsPerPage">The number of records to return per page.</param> /// <param name="pageNo">The number of the page of data to get.</param> /// <returns>A list of found courses.</returns> private CourseListOutput GetResults(SearchCriteriaStructure criteria, string sortBy, string recordsPerPage, string pageNo) { CourseListOutput output = new CourseListOutput(); ServiceInterface client = new ServiceInterfaceClient("CourseSearchService"); CourseListRequestStructure listRequestStructure = new CourseListRequestStructure { CourseSearchCriteria = criteria, RecordsPerPage = recordsPerPage, PageNo = pageNo }; if (!string.IsNullOrEmpty(sortBy)) { SortType tempSortType; Enum.TryParse(sortBy, out tempSortType); listRequestStructure.SortBy = tempSortType; listRequestStructure.SortBySpecified = true; } CourseListInput request = new CourseListInput(listRequestStructure); try { output = client.CourseList(request); } catch (Exception ex) { ResultsOverviewLabel.Text = ex.Message + "\n" + ex.StackTrace; } return(output); }
/// <summary> /// Gets the search results and displays on the screen. /// </summary> /// <param name="criteria">The course search criteria.</param> /// <param name="sortBy">The column to sort by.</param> /// <param name="recordsPerPage">The number of records per page.</param> /// <param name="pageNo">The page number</param> private void PopulateData(SearchCriteriaStructure criteria, string sortBy, string recordsPerPage, string pageNo) { // fire the web service to get some results CourseListOutput output = GetResults(criteria, sortBy, recordsPerPage, pageNo); if (output != null) { CourseSearchResults results = CreateCourseSearchResults(output); if (results.Any()) { int totalPages; { int.TryParse(output.CourseListResponse.ResultInfo.NoOfPages, out totalPages); } int currentPageNo; { int.TryParse(output.CourseListResponse.ResultInfo.PageNo, out currentPageNo); } int totalRecords; { int.TryParse(output.CourseListResponse.ResultInfo.NoOfRecords, out totalRecords); } divResults.Visible = true; // only need to display compare button if we have more than 1 record cmdCompare.Visible = results.Count() > 1; int pageSize; int.TryParse(recordsPerPage, out pageSize); ResultsOverviewLabel.Text = String.Format(Constants.StringFormats.ResultsOverviewStringFormat, currentPageNo, totalPages, totalRecords); SetupPageNavButtons(totalPages, currentPageNo); CourseResultsRepeater.DataSource = results; CourseResultsRepeater.DataBind(); if (results.MatchingLDCSCodes != null && results.MatchingLDCSCodes.Count > 1) { MatchingLDCSCodesRepeater.DataSource = results.MatchingLDCSCodes; MatchingLDCSCodesRepeater.DataBind(); } } else { DisplayNoResults(); } } else { DisplayNoResults(); } }
/// <summary> /// Creates the search criteria from the QueryString. /// </summary> /// <param name="requestData">The query string data.</param> /// <returns>A SearchCriteriaStructure with data.</returns> private SearchCriteriaStructure CreateSearchCriteria(NameValueCollection requestData) { SearchCriteriaStructure criteria = new SearchCriteriaStructure(); // API Key criteria.APIKey = Utilities.GetQueryStringValue(requestData, "APIKey"); // PROVIDER criteria.ProviderKeyword = Utilities.GetQueryStringValue(requestData, "Provider"); return(criteria); }
public CourseListRequestStructure CreateCourseListRequestStructure(IPagingOptions options, SearchCriteriaStructure searchCriteria, string recordsPerPage) { var request = new CourseListRequestStructure() { CourseSearchCriteria = searchCriteria, SortBy = options.SortBy.ToSortType(), SortBySpecified = true, PageNo = options.PageNo.ToString(), RecordsPerPage = recordsPerPage }; return(request); }
/// <summary> /// Gets the results from the web service. /// </summary> /// <param name="criteria">The course search criteria.</param> /// <returns>A list of found courses.</returns> private static CourseListOutput GetResults(SearchCriteriaStructure criteria) { ServiceInterface client = new ServiceInterfaceClient("CourseSearchService"); CourseListRequestStructure listRequestStructure = new CourseListRequestStructure { CourseSearchCriteria = criteria, RecordsPerPage = "10", PageNo = "1", SortBy = SortType.D, SortBySpecified = true }; CourseListInput request = new CourseListInput(listRequestStructure); CourseListOutput output = client.CourseList(request); return(output); }
protected void Page_Load(object sender, EventArgs e) { // check for query string action so we only perform the search function when requested string action = Utilities.GetQueryStringValue(Page.Request.QueryString, "action"); if (action == "search") { // get the search criteria so we know what we're trying to find SearchCriteriaStructure criteria = CreateSearchCriteria(Page.Request.QueryString); // call the search and populate our results table PopulateData(criteria); // once we've displayed our results we need to set the display back to the // criteria values SearchControl.PopulatePage(criteria); } }
protected void Page_Load(object sender, EventArgs e) { try { SearchCriteriaStructure criteria = CreateSearchCriteria(Page.Request.QueryString); if (String.IsNullOrEmpty(criteria.SubjectKeyword)) { SendToClient("Warning: No Search Criteria"); } else { // always getting the first page of data so pass 1 for the page CourseListOutput output = GetResults(criteria); SendToClient(output != null && output.CourseListResponse.ResultInfo.NoOfRecords != "0" ? String.Format("Success: {0} Results", output.CourseListResponse.ResultInfo.NoOfRecords) : "Warning: 0 Results"); } } catch (Exception ex) { SendToClient("Error: " + ex.Message); } }
/// <summary> /// Gets the data and displays on screen if we have any. /// </summary> /// <param name="criteria"></param> private void PopulateData(SearchCriteriaStructure criteria) { try { // fire the web service to get some results ProviderSearchOutput output = GetResults(criteria); ProviderSearchResults results = CreateProviderSearchResults(output); if (results.Count() > 0) { ResultsOverviewLabel.Text = "No of records: " + results.Count; RepeaterContainer.DataSource = results; // pagedDS; RepeaterContainer.DataBind(); } else { ResultsOverviewLabel.Text = "There are no results to display."; } } catch (Exception ex) { ResultsOverviewLabel.Text = ex.Message + "/n/n" + ex.StackTrace; } }
/// <summary> /// Gets the results from the web service. /// </summary> /// <param name="criteria">The course search criteria.</param> /// <returns>A list of found courses.</returns> private ProviderSearchOutput GetResults(SearchCriteriaStructure criteria) { ProviderSearchOutput output = new ProviderSearchOutput(); ServiceInterface client = new ServiceInterfaceClient("CourseSearchService"); ProviderSearchRequestStructure listRequestStructure = new ProviderSearchRequestStructure { APIKey = criteria.APIKey, ProviderKeyword = criteria.ProviderKeyword }; ProviderSearchInput request = new ProviderSearchInput(listRequestStructure); try { output = client.ProviderSearch(request); } catch (Exception ex) { ResultsOverviewLabel.Text = ex.Message + "\n" + ex.StackTrace; } return(output); }
public async Task <FACSearchResult> SearchCourses(SearchCriteriaStructure criteria) { Throw.IfNull(criteria, nameof(criteria)); _log.LogInformation("FAC search criteria.", criteria); _log.LogInformation("FAC search uri.", _uri.ToString()); var sortBy = criteria.SortBy ?? CourseSearchSortBy.Relevance; // Can only sort by distance if a postcode is specified if (sortBy == CourseSearchSortBy.Distance && string.IsNullOrWhiteSpace(criteria.Postcode)) { throw new ProblemDetailsException(new ProblemDetails() { Detail = "Postcode is required to sort by Distance.", Status = 400, Title = "PostcodeRequired" }); } // Validate postcode if (!string.IsNullOrWhiteSpace(criteria.Postcode)) { if (!_postcode.IsMatch(criteria.Postcode)) { throw new ProblemDetailsException(new ProblemDetails() { Detail = "Postcode is not valid.", Status = 400, Title = "InvalidPostcode" }); } } var geoFilterRequired = criteria.Distance.GetValueOrDefault(0) > 0 && !string.IsNullOrWhiteSpace(criteria.Postcode); // lat/lng required if Distance filter is specified *or* sorting by Distance var getBaseCoords = geoFilterRequired || sortBy == CourseSearchSortBy.Distance; float?latitude = null; float?longitude = null; if (getBaseCoords) { _log.LogInformation($"FAC getting lat/long for location {criteria.Postcode}"); var coords = await TryGetCoordinatesForPostcode(criteria.Postcode); if (!coords.HasValue) { throw new ProblemDetailsException(new ProblemDetails() { Detail = "Specified postcode cannot be found.", Status = 400, Title = "PostcodeNotFound" }); } latitude = coords.Value.lat; longitude = coords.Value.lng; } var filterClauses = new List <string>() { "Status eq 1" // only search live courses }; if (criteria.StartDateFrom.HasValue) { filterClauses.Add($"StartDate ge {criteria.StartDateFrom.Value:o}"); } if (criteria.StartDateTo.HasValue) { filterClauses.Add($"StartDate le {criteria.StartDateTo.Value:o}"); } if (criteria.AttendancePatterns?.Any() ?? false) { filterClauses.Add($"search.in(VenueAttendancePattern, '{string.Join("|", criteria.AttendancePatterns)}', '|')"); } if (criteria.QualificationLevels?.Any() ?? false) { filterClauses.Add($"search.in(NotionalNVQLevelv2, '{string.Join("|", criteria.QualificationLevels.Select(EscapeFilterValue))}', '|')"); } if (geoFilterRequired) { var distanceInKm = GeoHelper.MilesToKilometers(criteria.Distance.Value); filterClauses.Add( $"(geo.distance(VenueLocation, geography'POINT({longitude.Value} {latitude.Value})') le {distanceInKm}" + " or National eq true" + " or DeliveryMode eq '2')"); } if (!string.IsNullOrWhiteSpace(criteria.Town)) { var townEscaped = EscapeFilterValue(criteria.Town); filterClauses.Add($"search.ismatch('{townEscaped}', 'VenueTown')"); } if (criteria.StudyModes?.Any() ?? false) { filterClauses.Add($"search.in(VenueStudyMode, '{string.Join("|", criteria.StudyModes)}', '|')"); } if (criteria.DeliveryModes?.Any() ?? false) { filterClauses.Add($"search.in(DeliveryMode, '{string.Join("|", criteria.DeliveryModes)}', '|')"); } if (!string.IsNullOrWhiteSpace(criteria.ProviderName)) { var providerNameEscaped = EscapeFilterValue(criteria.ProviderName); filterClauses.Add($"search.ismatchscoring('{providerNameEscaped}', 'ProviderName', 'simple', 'any')"); } var filter = string.Join(" and ", filterClauses); var orderBy = sortBy == CourseSearchSortBy.StartDateDescending ? "StartDate desc" : sortBy == CourseSearchSortBy.StartDateAscending ? "StartDate asc" : sortBy == CourseSearchSortBy.Distance ? $"geo.distance(VenueLocation, geography'POINT({longitude.Value} {latitude.Value})')" : "search.score() desc"; var(limit, start) = ResolvePagingParams(criteria.Limit, criteria.Start); var scoringProfile = string.IsNullOrWhiteSpace(_settings.RegionBoostScoringProfile) ? "region-boost" : _settings.RegionBoostScoringProfile; var searchText = TranslateCourseSearchSubjectText(criteria.SubjectKeyword); var results = await _queryIndex.Documents.SearchAsync <AzureSearchCourse>( searchText, new SearchParameters() { Facets = new[] { "NotionalNVQLevelv2,count:100", "VenueStudyMode", "VenueAttendancePattern", "DeliveryMode", "ProviderName,count:100", "Region,count:100" }, Filter = filter, IncludeTotalResultCount = true, SearchFields = new[] { "QualificationCourseTitle", "CourseName", }, ScoringProfile = scoringProfile, SearchMode = SearchMode.All, QueryType = QueryType.Full, Top = limit, Skip = start, OrderBy = new[] { orderBy } }); return(new FACSearchResult() { Limit = limit, Start = start, Total = (int)results.Count.Value, Facets = results.Facets, Items = results.Results.Select(r => new FACSearchResultItem() { Course = r.Document, Distance = getBaseCoords && r.Document.VenueLocation != null ? Math.Round( GeoHelper.KilometersToMiles( GeoHelper.GetDistanceTo( (latitude.Value, longitude.Value), (r.Document.VenueLocation.Latitude, r.Document.VenueLocation.Longitude))), 2) : (double?)null, Score = r.Score }) });
public async Task <ActionResult> CourseSearch([FromBody] CourseSearchRequest request) { var criteria = new SearchCriteriaStructure() { AttendancePatterns = request.AttendancePatterns, DeliveryModes = request.DeliveryModes, Distance = request.Distance, Limit = request.Limit, Postcode = request.Postcode, ProviderName = request.ProviderName, QualificationLevels = request.QualificationLevels, SortBy = request.SortBy, Start = request.Start, StartDateFrom = request.StartDateFrom, StartDateTo = request.StartDateTo, StudyModes = request.StudyModes, SubjectKeyword = request.SubjectKeyword, Town = request.Town }; var result = await _service.CourseSearch(_log, criteria); var response = new CourseSearchResponse() { Limit = result.Limit, Start = result.Start, Total = result.Total, Facets = result.Facets.ToDictionary( f => _courseSearchFacetMapping.GetValueOrDefault(f.Key, f.Key), f => f.Value.Select(v => new FacetCountResult() { Value = v.Value, Count = v.Count.Value })), Results = result.Items.Select(i => new CourseSearchResponseItem() { Cost = i.Course.Cost, CostDescription = i.Course.CostDescription, CourseDescription = i.Course.CourseDescription, CourseName = i.Course.CourseName, CourseId = i.Course.CourseId, CourseRunId = i.Course.CourseRunId, CourseText = i.Course.CourseText, DeliveryMode = i.Course.DeliveryMode, DeliveryModeDescription = i.Course.DeliveryModeDescription, Distance = !i.Course.National.GetValueOrDefault() ? i.Distance : null, DurationUnit = i.Course.DurationUnit ?? DurationUnit.Undefined, DurationValue = i.Course.DurationValue, FlexibleStartDate = i.Course.FlexibleStartDate, LearnAimRef = i.Course.LearnAimRef, National = i.Course.National, QualificationLevel = i.Course.NotionalNVQLevelv2, ProviderName = i.Course.ProviderName, QualificationCourseTitle = i.Course.QualificationCourseTitle, Region = i.Course.Region, SearchScore = i.Score, StartDate = !i.Course.FlexibleStartDate.GetValueOrDefault() ? i.Course.StartDate : null, UKPRN = i.Course.UKPRN, UpdatedOn = i.Course.UpdatedOn, VenueAddress = i.Course.VenueAddress, VenueAttendancePattern = i.Course.VenueAttendancePattern, VenueAttendancePatternDescription = i.Course.VenueAttendancePatternDescription, VenueLocation = i.Course.VenueLocation != null ? new Coordinates() { Latitude = i.Course.VenueLocation.Latitude, Longitude = i.Course.VenueLocation.Longitude } : null, VenueName = i.Course.VenueName, VenueStudyMode = i.Course.VenueStudyMode, VenueStudyModeDescription = i.Course.VenueStudyModeDescription, VenueTown = i.Course.VenueTown }).ToList() }; return(new OkObjectResult(response)); }
/// <summary> /// Build CourseListRequest object from CourseListRequstStructure. /// </summary> /// <param name="courseRequest">CourseListRequestStructure data.</param> /// <returns>Populated CourseListRequest object.</returns> private static CourseListRequest BuildCourseListRequest(CourseListRequestStructure courseRequest) { SearchCriteriaStructure searchCriteria = courseRequest.CourseSearchCriteria; CourseListRequest request = new CourseListRequest(); // if seachCriteria not null, populate request. if (searchCriteria != null) { request.APIKey = searchCriteria.APIKey; request.SubjectKeyword = searchCriteria.SubjectKeyword; request.DFE1619Funded = searchCriteria.DFE1619Funded; request.AppClosedFlag = searchCriteria.OppsAppClosedFlag; request.Distance = searchCriteria.Distance; request.DistanceSpecified = searchCriteria.DistanceSpecified; request.EarliestStartDate = searchCriteria.EarliestStartDate; request.FlexStartFlag = searchCriteria.FlexStartFlag; request.IesFlag = searchCriteria.IESFlag; request.IlsFlag = searchCriteria.ILSFlag; if (!string.IsNullOrEmpty(searchCriteria.ProviderID)) { request.ProviderId = Int32.Parse(searchCriteria.ProviderID); } request.ProviderKeyword = searchCriteria.ProviderKeyword; request.SflFlag = searchCriteria.SFLFlag; request.Location = searchCriteria.Location; request.TqsFlag = searchCriteria.TQSFlag; request.TtgFlag = searchCriteria.TTGFlag; // If A10 codes exist, add them to the request. if ((searchCriteria.A10Codes != null) && (searchCriteria.A10Codes.A10Code != null && searchCriteria.A10Codes.A10Code.Length > 0)) { request.A10Codes = Utilities.ConvertToDelimitedString(searchCriteria.A10Codes.A10Code, "|"); } // If Adult LR statuses exist, add them to the request. if (searchCriteria.AdultLRStatus != null && searchCriteria.AdultLRStatus.Length > 0) { request.AdultLRStatus = Utilities.ConvertToDelimitedString(searchCriteria.AdultLRStatus, "|"); } // If Attendance modes exist, add them to the request. if ((searchCriteria.AttendanceModes != null) && (searchCriteria.AttendanceModes.AttendanceMode != null && searchCriteria.AttendanceModes.AttendanceMode.Length > 0)) { request.AttendanceModes = Utilities.ConvertToDelimitedString(searchCriteria.AttendanceModes.AttendanceMode, "|"); } // If Attendance patterns exist, add them to the request. if ((searchCriteria.AttendancePatterns != null) && (searchCriteria.AttendancePatterns.AttendancePattern != null && searchCriteria.AttendancePatterns.AttendancePattern.Length > 0)) { request.AttendancePatterns = Utilities.ConvertToDelimitedString(searchCriteria.AttendancePatterns.AttendancePattern, "|"); } // If ER App statuses exist, add them to the request. if (searchCriteria.ERAppStatus != null && searchCriteria.ERAppStatus.Length > 0) { request.ERAppStatus = Utilities.ConvertToDelimitedString(searchCriteria.ERAppStatus, "|"); } // If ER TTG statuses exist, add them to the request. if (searchCriteria.ERTtgStatus != null && searchCriteria.ERTtgStatus.Length > 0) { request.ERTtgStatus = Utilities.ConvertToDelimitedString(searchCriteria.ERTtgStatus, "|"); } // If LDCS category codes exist, add them to the request. if ((searchCriteria.LDCS != null) && (searchCriteria.LDCS.CategoryCode != null && searchCriteria.LDCS.CategoryCode.Length > 0)) { request.LdcsCategoryCode = Utilities.ConvertToDelimitedString(searchCriteria.LDCS.CategoryCode, "|"); } // If Other funding statuses exist, add them to the request. if (searchCriteria.OtherFundingStatus != null && searchCriteria.OtherFundingStatus.Length > 0) { request.OtherFundingStatus = Utilities.ConvertToDelimitedString(searchCriteria.OtherFundingStatus, "|"); } // If Qualification levels exist, add them to the request. if ((searchCriteria.QualificationLevels != null) && (searchCriteria.QualificationLevels.QualificationLevel != null && searchCriteria.QualificationLevels.QualificationLevel.Length > 0)) { request.QualificationLevels = Utilities.ConvertToDelimitedString(searchCriteria.QualificationLevels.QualificationLevel, "|"); } // If Qualification types exist, add them to the request. if ((searchCriteria.QualificationTypes != null) && (searchCriteria.QualificationTypes.QualificationType != null && searchCriteria.QualificationTypes.QualificationType.Length > 0)) { request.QualificationTypes = Utilities.ConvertToDelimitedString(searchCriteria.QualificationTypes.QualificationType, "|"); } // If Study modes exist, add them to the request. if ((searchCriteria.StudyModes != null) && (searchCriteria.StudyModes.StudyMode != null && searchCriteria.StudyModes.StudyMode.Length > 0)) { request.StudyModes = Utilities.ConvertToDelimitedString(searchCriteria.StudyModes.StudyMode, "|"); } // Add number of records per page to request, default to 20 if does not exist. int recordsPerPage = 0; if (!string.IsNullOrEmpty(courseRequest.RecordsPerPage)) { recordsPerPage = Int32.Parse(courseRequest.RecordsPerPage); } request.RecordsPerPage = (recordsPerPage > 0) ? recordsPerPage : 20; // Add sort by to request. request.SortBy = courseRequest.SortBy.ToString(); // Add page number to request, default to 1 if less than 1. if (!string.IsNullOrEmpty(courseRequest.PageNo)) { long pageNumber = Int64.Parse(courseRequest.PageNo); request.PageNumber = (pageNumber > 0) ? pageNumber : 1; } else { request.PageNumber = 1; } } return(request); }
public Task <FACSearchResult> CourseSearch(ILogger log, SearchCriteriaStructure criteria) { return(_searchServiceWrapper.SearchCourses(criteria)); }
/// <summary> /// Populates the search controls with the values from the search criteria. /// </summary> /// <param name="criteria">The populated search criteria.</param> /// <param name="sortBy">The sort by value.</param> /// <param name="recordsPerPage">The records per page value.</param> public void PopulatePage(SearchCriteriaStructure criteria, string sortBy, string recordsPerPage) { string scriptName = "PopulateCriteria"; Type thisType = this.GetType(); ClientScriptManager mgr = Page.ClientScript; if (!mgr.IsStartupScriptRegistered(thisType, scriptName)) { StringBuilder scriptText = new StringBuilder(); scriptText.Append("<script type=text/javascript>" + Environment.NewLine); //API Key if (phAPIKey.Visible) { scriptText.Append(Utilities.GetJavascriptSetValueSnippet("APIKey", criteria.APIKey)); } // SUBJECT scriptText.Append(Utilities.GetJavascriptSetValueSnippet("Subject", criteria.SubjectKeyword)); if (criteria.LDCS != null) { scriptText.Append(Utilities.GetJavascriptSetValueSnippet("LDCSCategoryCodes", criteria.LDCS.CategoryCode)); } scriptText.Append(Utilities.GetJavascriptSetValueSnippet("DfEFundedOnly", criteria.DFE1619Funded)); // REGION scriptText.Append(Utilities.GetJavascriptSetValueSnippet("LocationPostCode", criteria.Location)); scriptText.Append(Utilities.GetJavascriptSetValueSnippet("RecordsPerPage", recordsPerPage)); // only set dropdowns if the user selected a value if (criteria.Distance > 0) { scriptText.Append(Utilities.GetJavascriptSetValueSnippet("MaxDistance", criteria.Distance.ToString())); } if (!string.IsNullOrEmpty(sortBy)) { scriptText.Append(Utilities.GetJavascriptSetValueSnippet("SortBy", sortBy)); } // PROVIDER scriptText.Append(Utilities.GetJavascriptSetValueSnippet("ProviderID", criteria.ProviderID)); scriptText.Append(Utilities.GetJavascriptSetValueSnippet("ProviderText", criteria.ProviderKeyword)); // QUALIFICATION if (criteria.QualificationTypes != null) { scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("QualificationTypes", criteria.QualificationTypes.QualificationType)); } if (criteria.QualificationLevels != null) { scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("QualificationLevels", criteria.QualificationLevels.QualificationLevel)); } // STUDY MODE AND ATTENDANCE scriptText.Append(Utilities.GetJavascriptSetValueSnippet("EarliestStartDate", criteria.EarliestStartDate)); if (criteria.StudyModes != null) { scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("StudyModes", criteria.StudyModes.StudyMode)); } if (criteria.AttendanceModes != null) { scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("AttendanceModes", criteria.AttendanceModes.AttendanceMode)); } if (criteria.AttendancePatterns != null) { scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("AttendancePatterns", criteria.AttendancePatterns.AttendancePattern)); } // FLAGS scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("IncFlexibleStartDateFlag", criteria.FlexStartFlag)); scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("IncIfOpportunityApplicationClosedFlag", criteria.OppsAppClosedFlag)); scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("IncTTGFlag", criteria.TTGFlag)); scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("IncTQSFlag", criteria.TQSFlag)); scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("IncIESFlag", criteria.IESFlag)); if (criteria.A10Codes != null) { scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("A10Flags", criteria.A10Codes.A10Code)); } scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("IndLivingSkillsFlag", criteria.ILSFlag)); scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("SkillsForLifeFlag", criteria.SFLFlag)); // STATUS scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("ERAppStatus", criteria.ERAppStatus)); scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("ERTTGStatus", criteria.ERTtgStatus)); scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("AdultLRStatus", criteria.AdultLRStatus)); scriptText.Append(Utilities.GetJavascriptSetCheckboxValueSnippet("OtherFundingStatus", criteria.OtherFundingStatus)); // end scriptText.Append("</script>"); mgr.RegisterStartupScript(thisType, scriptName, scriptText.ToString()); } }