/// <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> /// Creates the set of results from the search response. /// </summary> /// <param name="output">The results from the search.</param> /// <returns>A populated CourseSearchResults object.</returns> private CourseSearchResults CreateCourseSearchResults(CourseListOutput output) { CourseSearchResults results = new CourseSearchResults(); if (output != null && output.CourseListResponse != null) { if (output.CourseListResponse.CourseDetails != null) { foreach (CourseStructure course in output.CourseListResponse.CourseDetails) { results.Add(CreateResult(course)); } } if (output.CourseListResponse.MatchingLDCS != null) { results.MatchingLDCSCodes = new List <LDCSCode>(); foreach (CourseListResponseStructureMatchingLDCS ldcsCode in output.CourseListResponse.MatchingLDCS) { results.MatchingLDCSCodes.Add(CreateLDCS(ldcsCode)); } } } return(results); }
/// <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(); } }
internal static IEnumerable <Course> ConvertToCourse(this CourseListOutput apiResult) { var result = apiResult?.CourseListResponse?.CourseDetails?.Select(c => new Course { Title = c.Course.CourseTitle, Location = (c.Opportunity.Item as VenueInfo)?.VenueAddress.Town, ProviderName = c.Provider.ProviderName, StartDate = Convert.ToDateTime(c.Opportunity.StartDate.Item), CourseId = c.Course.CourseID }); return(result ?? Enumerable.Empty <Course>()); }
/// <summary> /// Gets a list of courses matching the search criteria in CourseListRequestStructure /// and logs the duration of the search. /// </summary> /// <param name="courseListInput">Search criteria.</param> /// <returns>Populated CourseLisOutput containing matching courses.</returns> public CourseListOutput GetCourseList(CourseListInput courseListInput) { CourseListOutput courseListOutput = new CourseListOutput(new CourseListResponseStructure()); CourseListRequest request = BuildCourseListRequest(courseListInput.CourseListRequest); CourseListResponse response = _courseQuery.GetCourseList(request); courseListOutput.CourseListResponse = BuildCourseListResponseStructure(response, courseListInput.CourseListRequest); // Record search time _courseQuery.RecordSearchTime(Constants.SEARCH_TIME_COLUMN_FLAG, response.SearchHeaderId); return(courseListOutput); }
/// <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); }
internal static IEnumerable <Course> ConvertToSearchCourse(this CourseListOutput apiResult) { var result = apiResult?.CourseListResponse?.CourseDetails?.Select(c => new Course { Title = c.Course.CourseTitle, LocationDetails = GetVenue(c.Opportunity.Item as VenueInfo), ProviderName = c.Provider.ProviderName, StartDateLabel = c.Opportunity.StartDate.Item, CourseId = c.Course.CourseID, AttendanceMode = c.Opportunity.AttendanceMode, AttendancePattern = c.Opportunity.AttendancePattern, QualificationLevel = c.Course.QualificationLevel, StudyMode = c.Opportunity.StudyMode, AdvancedLearnerLoansOffered = c.Provider.TFPlusLoans }); return(result ?? Enumerable.Empty <Course>()); }
/// <summary> /// 获取课程列表(课程类别+该课程类别下课程) /// </summary> /// <returns>课程类别对应的课程列表</returns> public async Task <WebApiOutput <List <CourseListOutput> > > GetCourseList() { var courseTypeList = await _systemRepository.GetDictionaryListByParentValue(CommConstant.PatientEduParentValue); List <CourseListOutput> courseList = new List <CourseListOutput>(); foreach (var item in courseTypeList) { CourseListOutput course = new CourseListOutput { CourseType = item.Id, CourseTypeName = item.Name }; var entityList = await _courseRepository.GetCourseListByCourseType(item.Id); course.CourseList = Mapper.Map <List <Course>, List <CourseDto> >(entityList); courseList.Add(course); } return(WebApiOutput <List <CourseListOutput> > .Success(courseList)); }
protected Int32 ProcessRequest(String searchTerm, String location, Int32 pageNumber) { //while (lastRequest.AddTicks(100000000 * 2) <= DateTime.Now) //{ // // Wait at least 2/10th of a second //} //lastRequest = DateTime.Now; ServiceInterface client = new ServiceInterfaceClient("CourseSearchService"); CourseListRequestStructure listRequestStructure = new CourseListRequestStructure { CourseSearchCriteria = new SearchCriteriaStructure { //APIKey APIKey = ConfigurationManager.AppSettings["APIKey"], // SUBJECT SubjectKeyword = searchTerm, Location = location }, RecordsPerPage = "10", PageNo = pageNumber.ToString(), SortBy = SortType.D, SortBySpecified = true }; CourseListInput request = new CourseListInput(listRequestStructure); try { CourseListOutput output = client.CourseList(request); WriteLog(String.Format("Term:{0} Location:{1} PageNum:{2} Results:{3}", searchTerm, location, pageNumber, output.CourseListResponse.ResultInfo.NoOfRecords)); return(String.IsNullOrEmpty(output.CourseListResponse.ResultInfo.NoOfPages) ? 0 : Convert.ToInt32(output.CourseListResponse.ResultInfo.NoOfPages)); } catch (Exception ex) { WriteLog(String.Format("Term:{0} Location:{1} PageNum:{2} Error:{3}", searchTerm, location, pageNumber, ex.Message)); } return(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> /// 根据外部Id获取患教课程列表(课程类别+该课程类别下课程) /// </summary> /// <param name="outerId">外部Id</param> /// <returns>课程类别对应的课程列表</returns> public async Task <WebApiOutput <List <CourseListOutput> > > GetCourseListByOuterId(string outerId) { if (string.IsNullOrEmpty(outerId) || outerId.Length != CommConstant.PatientEduOutIdLength) { return(WebApiOutput <List <CourseListOutput> > .Fail("外部Id不正确")); } var courseEntityList = await _repository.GetPatientEduListByOuterId(outerId); List <CourseListOutput> courseList = new List <CourseListOutput>(); foreach (var item in courseEntityList) { CourseListOutput course = new CourseListOutput { CourseType = item.CourseTypeId, CourseTypeName = item.CourseTypeName }; var entityList = await _courseRepository.GetCourseListByPatientEduId(item.Id); course.CourseList = Mapper.Map <List <Course>, List <CourseDto> >(entityList); courseList.Add(course); } return(WebApiOutput <List <CourseListOutput> > .Success(courseList)); }
/// <summary> /// On clicking CourseList button, calls CourseSearchService ClientList() method wtih test data. /// </summary> private void btnCourseList_Click(object sender, EventArgs e) { txtResult.Text = "Processing ..."; ServiceInterface client = new ServiceInterfaceClient("CourseSearch"); CourseListRequestStructure listRequestStructure = new CourseListRequestStructure(); listRequestStructure.CourseSearchCriteria = new SearchCriteriaStructure(); listRequestStructure.CourseSearchCriteria.SubjectKeyword = "chemistry"; // listRequestStructure.CourseSearchCriteria.ProviderID = "4517"; // 4517 University of Bristol listRequestStructure.CourseSearchCriteria.Location = "grantham"; // listRequestStructure.CourseSearchCriteria.Distance = 30.0f; // listRequestStructure.CourseSearchCriteria.DistanceSpecified = true; CourseListInput request = new CourseListInput(listRequestStructure); try { CourseListOutput response = client.CourseList(request); StringBuilder sb = new StringBuilder(); sb.Append("Request details:"); sb.Append("\nCourse Search Criteria:"); sb.Append("\n A10 codes: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.A10Codes); sb.Append("\n Adult LR status: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.AdultLRStatus); sb.Append("\n Attendance Modes: " + ((response.CourseListResponse.RequestDetails.CourseSearchCriteria.AttendanceModes != null) ? response.CourseListResponse.RequestDetails.CourseSearchCriteria.AttendanceModes.ToString() : "null")); sb.Append("\n Attendance Patterns: " + ((response.CourseListResponse.RequestDetails.CourseSearchCriteria.AttendancePatterns != null) ? response.CourseListResponse.RequestDetails.CourseSearchCriteria.AttendancePatterns.ToString() : "null")); sb.Append("\n Distance: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.Distance.ToString()); sb.Append("\n Distance specified: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.DistanceSpecified.ToString()); sb.Append("\n Earliest Start date: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.EarliestStartDate); sb.Append("\n ER app status: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.ERAppStatus); sb.Append("\n ER TTG status: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.ERTtgStatus); sb.Append("\n Flex start date: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.FlexStartFlag); sb.Append("\n IES flag: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.IESFlag); sb.Append("\n ILS flag: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.ILSFlag); sb.Append("\n LDCS Category code: " + ((response.CourseListResponse.RequestDetails.CourseSearchCriteria.LDCS != null) ? response.CourseListResponse.RequestDetails.CourseSearchCriteria.LDCS.CategoryCode.ToString() : "")); sb.Append("\n Location: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.Location); sb.Append("\n Opps App closed flag: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.OppsAppClosedFlag); sb.Append("\n Other funding status: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.OtherFundingStatus); sb.Append("\n Provider ID: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.ProviderID); sb.Append("\n Provider Keyword: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.ProviderKeyword); sb.Append("\n Qualification levels: " + ((response.CourseListResponse.RequestDetails.CourseSearchCriteria.QualificationLevels != null) ? response.CourseListResponse.RequestDetails.CourseSearchCriteria.QualificationLevels.ToString() : "null")); sb.Append("\n Qualification types: " + ((response.CourseListResponse.RequestDetails.CourseSearchCriteria.QualificationTypes != null) ? response.CourseListResponse.RequestDetails.CourseSearchCriteria.QualificationTypes.ToString() : "null")); sb.Append("\n SFL flag: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.SFLFlag); sb.Append("\n Study modes: " + ((response.CourseListResponse.RequestDetails.CourseSearchCriteria.StudyModes != null) ? response.CourseListResponse.RequestDetails.CourseSearchCriteria.StudyModes.ToString() : "null")); sb.Append("\n Subject keyword: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.SubjectKeyword); sb.Append("\n TQS flag: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.TQSFlag); sb.Append("\n TTG flag: " + response.CourseListResponse.RequestDetails.CourseSearchCriteria.TTGFlag); sb.Append("\n\n"); sb.Append("Course Details:"); if (response.CourseListResponse.CourseDetails != null) { foreach (CourseStructure courseStructure in response.CourseListResponse.CourseDetails) { sb.Append("\n" + courseStructure.Course.CourseID); sb.Append("\n" + courseStructure.Provider); sb.Append("\n" + courseStructure.Course.CourseTitle); sb.Append("\n" + courseStructure.Course.QualificationType); sb.Append("\n" + courseStructure.Course.QualificationLevel); sb.Append("\n" + courseStructure.Course.CourseSummary); sb.Append("\n" + courseStructure.Course.NoOfOpps); sb.Append("\n" + courseStructure.Opportunity.OpportunityId); sb.Append("\n" + courseStructure.Opportunity.StudyMode); sb.Append("\n" + courseStructure.Opportunity.AttendanceMode); sb.Append("\n" + courseStructure.Opportunity.AttendancePattern); sb.Append("\n" + courseStructure.Opportunity.StartDate.Item); sb.Append("\n" + courseStructure.Opportunity.Duration.DurationValue); sb.Append("\n" + courseStructure.Opportunity.Duration.DurationUnit); sb.Append("\n" + courseStructure.Opportunity.Duration.DurationDescription); if (courseStructure.Opportunity.Item.GetType() == typeof(VenueInfo)) { VenueInfo venue = (VenueInfo)courseStructure.Opportunity.Item; sb.Append("\n" + venue.VenueName); sb.Append("\n" + venue.Distance); sb.Append("\n" + venue.VenueAddress.Address_line_1); sb.Append("\n" + venue.VenueAddress.Address_line_2); sb.Append("\n" + venue.VenueAddress.Town); sb.Append("\n" + venue.VenueAddress.County); sb.Append("\n" + venue.VenueAddress.PostCode); sb.Append("\n" + venue.VenueAddress.Latitude); sb.Append("\n" + venue.VenueAddress.Longitude); } else { sb.Append("\n" + (string)courseStructure.Opportunity.Item); } sb.Append("\n"); } } sb.Append("\n\n"); sb.Append("Matching LDCS Details:"); if (response.CourseListResponse.MatchingLDCS != null) { foreach (CourseListResponseStructureMatchingLDCS mathcingLDCS in response.CourseListResponse.MatchingLDCS) { sb.Append("\n" + mathcingLDCS.LDCS.LDCSCode); sb.Append("\n" + mathcingLDCS.LDCS.LDCSDesc); sb.Append("\n" + mathcingLDCS.Counts); } } sb.Append("\n\n"); txtResult.Text = sb.ToString(); } catch (Exception ex) { txtResult.Text = ex.Message; } }