/// <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();
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #6
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);
        }
Beispiel #7
0
        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));
        }
Beispiel #9
0
        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);
        }
Beispiel #10
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;
            }
        }