Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 7
0
        /// <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);
            }
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 15
0
 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());
            }
        }