/// <summary> /// Maps the response from the web service search to a ui friendly class. /// </summary> /// <param name="output">The output from the web service.</param> /// <returns>a liost of CourseDetail objects.</returns> private List <CourseInformation> CreateCourseDetails(CourseDetailOutput output) { List <CourseInformation> courseDetails = new List <CourseInformation>(); foreach (CourseDetailStructure courseDetailStructure in output.CourseDetails) { CourseInformation courseInfo = new CourseInformation(); if (courseDetailStructure.Course != null) { MapCourseData(courseInfo, courseDetailStructure); } if (courseDetailStructure.Provider != null) { MapProviderData(courseInfo, courseDetailStructure); } if (courseDetailStructure.Opportunity != null) { MapOpportunityData(courseInfo, courseDetailStructure); } if (courseDetailStructure.Venue != null) { MapVenueData(courseInfo, courseDetailStructure); } courseDetails.Add(courseInfo); } return(courseDetails); }
/// <summary> /// Gets the data from the web service and populates the controls. /// </summary> /// <param name="courseIds">The id's of the courses to display.</param> /// <param name="APIKey"></param> private void PopulateData(string[] courseIds, String APIKey) { ServiceInterface client = new ServiceInterfaceClient("CourseSearchService"); CourseDetailInput courseListInput = new CourseDetailInput(courseIds, APIKey); try { CourseDetailOutput courseDetailOutput = client.CourseDetail(courseListInput); List <CourseInformation> courseDetails = CreateCourseDetails(courseDetailOutput); if (courseDetails.Count() > 0) { NumberOfCourses.Text = string.Format(Constants.StringFormats.CourseDetailNoOfCourses, courseDetails.Count()); divResults.Visible = true; CourseRepeater.DataSource = courseDetails; CourseRepeater.DataBind(); } else { divResults.Visible = false; ResultsOverviewLabel.Text = "There are no results to display."; } } catch (Exception ex) { ResultsOverviewLabel.Text = ex.Message + "\n" + ex.StackTrace; } }
internal static CourseDetails ConvertToCourseDetails(this CourseDetailOutput apiResult, string oppurtunityId, string courseId) { var apiCourseDetail = apiResult.CourseDetails?.SingleOrDefault(co => co.Course.CourseID == courseId); if (apiCourseDetail != null) { var activeOpportunity = GetActiveOpportunity(oppurtunityId, apiCourseDetail); var courseDetails = GetCourseDetailsData(apiCourseDetail, activeOpportunity); return(courseDetails); } return(null); }
internal static CourseDetails ConvertToCourseDetails(this CourseDetailOutput apiResult) { var apiCourseDetail = apiResult.CourseDetails?.FirstOrDefault(); if (apiCourseDetail == null) { return(null); } return(new CourseDetails { Title = apiCourseDetail.Course.CourseTitle, Description = apiCourseDetail.Course.CourseSummary, EntryRequirements = apiCourseDetail.Course.EntryRequirements, AssessmentMethod = apiCourseDetail.Course.AssessmentMethod, EquipmentRequired = apiCourseDetail.Course.EquipmentRequired, QualificationName = apiCourseDetail.Course.QualificationTitle, Cost = apiCourseDetail.Opportunity.FirstOrDefault()?.Price, VenueDetails = new VenueDetails { EmailAddress = apiCourseDetail.Venue.FirstOrDefault()?.Email, Location = apiCourseDetail.Venue.FirstOrDefault()?.VenueName, PhoneNumber = apiCourseDetail.Venue.FirstOrDefault()?.Phone, Website = apiCourseDetail.Venue.FirstOrDefault()?.Website }, ProviderDetails = new ProviderDetails { EmailAddress = apiCourseDetail.Provider.Email, AddressLine = apiCourseDetail.Provider.ProviderAddress.Address_line_1, AddressLine2 = apiCourseDetail.Provider.ProviderAddress.Address_line_2, Town = apiCourseDetail.Provider.ProviderAddress.Town, County = apiCourseDetail.Provider.ProviderAddress.County, PostCode = apiCourseDetail.Provider.ProviderAddress.PostCode, Longitude = apiCourseDetail.Provider.ProviderAddress.Longitude, Latitude = apiCourseDetail.Provider.ProviderAddress.Latitude, PhoneNumber = apiCourseDetail.Provider.Phone, Name = apiCourseDetail.Provider.ProviderName, LearnerSatisfactionSpecified = apiCourseDetail.Provider.FEChoices_LearnerSatisfactionSpecified, EmployerSatisfactionSpecified = apiCourseDetail.Provider.FEChoices_EmployerSatisfactionSpecified, LearnerSatisfaction = apiCourseDetail.Provider.FEChoices_LearnerSatisfaction, EmployerSatisfaction = apiCourseDetail.Provider.FEChoices_EmployerSatisfaction }, StartDateLabel = apiCourseDetail.Opportunity.FirstOrDefault()?.StartDate.Item, CourseId = apiCourseDetail.Course.CourseID, AttendanceMode = apiCourseDetail.Opportunity.FirstOrDefault()?.AttendanceMode, AttendancePattern = apiCourseDetail.Opportunity.FirstOrDefault()?.AttendancePattern, QualificationLevel = apiCourseDetail.Course.QualificationLevel, StudyMode = apiCourseDetail.Opportunity.FirstOrDefault()?.StudyMode, Duration = $"{apiCourseDetail.Opportunity.FirstOrDefault()?.Duration?.DurationValue} {apiCourseDetail.Opportunity.FirstOrDefault()?.Duration?.DurationUnit}" }); }
/// <summary> /// On clicking CourseDetail button, calls CourseSearchService ClientDetail() method with test data. /// </summary> private void btnCourseDetail_Click(object sender, EventArgs e) { txtResult.Text = "Processing ..."; ServiceInterface client = new ServiceInterfaceClient("CourseSearch"); string[] courseIds = { "53527655" }; CourseDetailInput request = new CourseDetailInput(courseIds, ""); try { CourseDetailOutput response = client.CourseDetail(request); StringBuilder sb = new StringBuilder(); sb.Append("Request details:"); foreach (string s in response.RequestDetails.CourseID) { sb.Append("\n" + s); } sb.Append("\n\n"); sb.Append("Course details:"); foreach (CourseDetailStructure courseDetail in response.CourseDetails) { sb.Append("\n" + courseDetail.Course.CourseID); sb.Append("\n" + courseDetail.Course.CourseTitle); sb.Append("\n" + courseDetail.Course.CourseSummary); sb.Append("\n" + courseDetail.Provider.ProviderID); sb.Append("\n" + courseDetail.Provider.ProviderName); sb.Append("\n" + courseDetail.Provider.UPIN); sb.Append("\n" + courseDetail.Provider.Email); sb.Append("\n" + courseDetail.Provider.Website); sb.Append("\n"); sb.Append("Opportunity details:"); foreach (OpportunityDetail opportunityDetail in courseDetail.Opportunity) { sb.Append("\n" + opportunityDetail.ProviderOpportunityId); sb.Append("\n" + opportunityDetail.URL); sb.Append("\n" + opportunityDetail.A10); sb.Append("\n" + opportunityDetail.ApplyFromDate); sb.Append("\n" + opportunityDetail.ApplyUntilDate); sb.Append("\n" + opportunityDetail.ApplyTo); sb.Append("\n" + opportunityDetail.AttendanceMode); sb.Append("\n" + opportunityDetail.AttendancePattern); sb.Append("\n" + opportunityDetail.EnquireTo); sb.Append("\n" + opportunityDetail.PlacesAvailable); sb.Append("\n" + opportunityDetail.StudyMode); sb.Append("\n" + opportunityDetail.Price); sb.Append("\n"); } sb.Append("Venue details:"); foreach (VenueDetail venueDetail in courseDetail.Venue) { sb.Append("\n" + venueDetail.VenueID); sb.Append("\n" + venueDetail.VenueName); sb.Append("\n" + venueDetail.Email); sb.Append("\n" + venueDetail.Facilities); sb.Append("\n" + venueDetail.Website); sb.Append("\n"); } sb.Append("\n"); } txtResult.Text = sb.ToString(); } catch (Exception ex) { txtResult.Text = ex.Message; } }
/// <summary> /// Build CourseDetailOutput object from collection of Courses and CourseDetailInput. /// </summary> /// <param name="courses">Courses collection.</param> /// <param name="courseDetailInput">Original CourseDetailInput.</param> /// <returns>Populated CourseDetailOutput object.</returns> private static CourseDetailOutput BuildCourseDetailOutput(List <Course> courses, CourseDetailInput courseDetailInput) { CourseDetailOutput courseDetailOutput = new CourseDetailOutput(); List <CourseDetailStructure> courseDetailStructures = new List <CourseDetailStructure>(); foreach (Course course in courses) { // Get Course detail CourseDetailStructure courseDetailStructure = new CourseDetailStructure(); courseDetailStructure.Course = new CourseDetail(); courseDetailStructure.Course.CourseID = course.CourseId.ToString(); courseDetailStructure.Course.CourseTitle = course.CourseTitle; courseDetailStructure.Course.CourseSummary = course.CourseSummary; courseDetailStructure.Course.NoOfOpps = course.NumberOfOpportunities.ToString(); courseDetailStructure.Course.QualificationLevel = course.QualificationLevel; courseDetailStructure.Course.QualificationType = course.QualificationType; courseDetailStructure.Course.AccreditationEndDate = course.AccreditationEndDate; courseDetailStructure.Course.AccreditationStartDate = course.AccreditationStartDate; courseDetailStructure.Course.AdultLRStatus = GetAdultLRStatus(course.AdultLRStatus); courseDetailStructure.Course.AssessmentMethod = course.AssessmentMethod; courseDetailStructure.Course.AwardingBody = course.AwardingBody; courseDetailStructure.Course.BookingURL = course.BookingUrl; courseDetailStructure.Course.CertificationEndDate = course.CertificationEndDate; courseDetailStructure.Course.CreditValue = course.CreditValue; courseDetailStructure.Course.DataType = GetDataType(course.DataType); courseDetailStructure.Course.ERAppStatus = GetERAppStatus(course.ERAppStatus); courseDetailStructure.Course.ERTTGStatus = GetERTtgStatus(course.ERTtgStatus); courseDetailStructure.Course.EntryRequirements = course.EntryRequirements; courseDetailStructure.Course.EquipmentRequired = course.EquipmentRequired; courseDetailStructure.Course.IndependentLivingSkills = GetIndependentLivingSkills(course.IndependentLivingSkills); courseDetailStructure.Course.LADID = course.LadId; courseDetailStructure.Course.Level2EntitlementCategoryDesc = course.Level2EntitlementDescription; courseDetailStructure.Course.Level3EntitlementCategoryDesc = course.Level3EntitlementDescription; courseDetailStructure.Course.OtherFundingNonFundedStatus = GetOtherFundingNonFundedStatus(course.OtherFundingNonFundedStatus); courseDetailStructure.Course.QCAGuidedLearningHours = course.QcaGuidedLearningHours; courseDetailStructure.Course.QualificationReference = course.QualificationReference; courseDetailStructure.Course.QualificationReferenceAuthority = course.QualificationReferenceAuthority; courseDetailStructure.Course.QualificationTitle = course.QualificationTitle; courseDetailStructure.Course.SkillsForLifeFlag = GetSkillsForLifeFlag(course.SkillsForLifeFlag); courseDetailStructure.Course.SkillsForLifeTypeDesc = course.SkillsForLifeTypeDescription; courseDetailStructure.Course.TariffRequired = course.TariffRequired; courseDetailStructure.Course.URL = course.Url; courseDetailStructure.Course.LDCS = new LDCSOutputType(); courseDetailStructure.Course.LDCS.CatCode1 = BuildLdcsInfoType(course.LdcsCode1, course.LdcsDesc1); courseDetailStructure.Course.LDCS.CatCode2 = BuildLdcsInfoType(course.LdcsCode2, course.LdcsDesc2); courseDetailStructure.Course.LDCS.CatCode3 = BuildLdcsInfoType(course.LdcsCode3, course.LdcsDesc3); courseDetailStructure.Course.LDCS.CatCode4 = BuildLdcsInfoType(course.LdcsCode4, course.LdcsDesc4); courseDetailStructure.Course.LDCS.CatCode5 = BuildLdcsInfoType(course.LdcsCode5, course.LdcsDesc5); // Get Povider detail courseDetailStructure.Provider = new ProviderDetail(); if (course.Provider != null) { courseDetailStructure.Provider.ProviderID = course.Provider.ProviderId; courseDetailStructure.Provider.ProviderName = course.Provider.ProviderName; courseDetailStructure.Provider.Phone = course.Provider.Phone; courseDetailStructure.Provider.Fax = course.Provider.Fax; courseDetailStructure.Provider.Email = course.Provider.Email; courseDetailStructure.Provider.Website = course.Provider.Website; courseDetailStructure.Provider.UKPRN = course.Provider.Ukprn; courseDetailStructure.Provider.UPIN = course.Provider.Upin; courseDetailStructure.Provider.TFPlusLoans = course.Provider.TFPlusLoans; courseDetailStructure.Provider.TFPlusLoansSpecified = true; if (course.Provider.FEChoices_EmployerSatisfaction.HasValue) { courseDetailStructure.Provider.FEChoices_EmployerSatisfaction = course.Provider.FEChoices_EmployerSatisfaction.Value; } courseDetailStructure.Provider.FEChoices_EmployerSatisfactionSpecified = course.Provider.FEChoices_EmployerSatisfaction.HasValue; if (course.Provider.FEChoices_LearnerSatisfaction.HasValue) { courseDetailStructure.Provider.FEChoices_LearnerSatisfaction = course.Provider.FEChoices_LearnerSatisfaction.Value; } courseDetailStructure.Provider.FEChoices_LearnerSatisfactionSpecified = course.Provider.FEChoices_LearnerSatisfaction.HasValue; if (course.Provider.FEChoices_LearnerDestination.HasValue) { courseDetailStructure.Provider.FEChoices_LearnerDestination = course.Provider.FEChoices_LearnerDestination.Value; } courseDetailStructure.Provider.FEChoices_LearnerDestinationSpecified = course.Provider.FEChoices_LearnerDestination.HasValue; courseDetailStructure.Provider.ProviderAddress = BuildAddressType(course.Provider.AddressLine1, course.Provider.AddressLine2, course.Provider.Town, course.Provider.County, course.Provider.Postcode); } // Get Opportunity detail List <OpportunityDetail> opportunityDetails = new List <OpportunityDetail>(); foreach (Opportunity opportunity in course.Opportunities) { OpportunityDetail opportunityDetail = new OpportunityDetail(); opportunityDetail.AttendanceMode = opportunity.AttendanceMode; opportunityDetail.AttendancePattern = opportunity.AttendancePattern; opportunityDetail.Duration = new DurationType(); opportunityDetail.Duration.DurationDescription = opportunity.DurationDescription; opportunityDetail.Duration.DurationUnit = opportunity.DurationUnit; if (opportunity.DurationValue != 0) { opportunityDetail.Duration.DurationValue = opportunity.DurationValue.ToString(); } opportunityDetail.Price = opportunity.Price; opportunityDetail.PriceDesc = opportunity.PriceDescription; opportunityDetail.StudyMode = opportunity.StudyMode; opportunityDetail.Timetable = opportunity.Timetable; opportunityDetail.StartDate = BuildStartDateType(opportunity); //opportunityDetail.StartDate = new StartDateType(); //opportunityDetail.StartDate.ItemElementName = ItemChoiceType.Date; //opportunityDetail.StartDate.Item = opportunity.StartDate; //opportunityDetail.StartDate = new StartDateType(); //opportunityDetail.StartDate.ItemElementName = ItemChoiceType.DateDesc; //opportunityDetail.StartDate.Item = opportunity.StartDateDescription; opportunityDetail.ApplicationAcceptedThroughoutYear = GetApplicationAcceptedThroughoutYear(opportunity.ApplicationAcceptedThroughoutYear); opportunityDetail.ApplyFromDate = opportunity.ApplyFromDate; opportunityDetail.ApplyTo = opportunity.ApplyTo; opportunityDetail.ApplyUntilDate = opportunity.ApplyUntilDate; opportunityDetail.ApplyUntilDesc = opportunity.ApplyUntilDescription; opportunityDetail.EndDate = opportunity.EndDate; opportunityDetail.EnquireTo = opportunity.EnquireTo; opportunityDetail.LanguageOfAssessment = opportunity.LanguageOfAssessment; opportunityDetail.LanguageOfInstruction = opportunity.LanguageOfInstruction; opportunityDetail.PlacesAvailable = opportunity.PlacesAvailable.ToString(); opportunityDetail.ProviderOpportunityId = opportunity.ProviderOpportunityId; opportunityDetail.URL = opportunity.Url; opportunityDetail.A10 = opportunity.A10.ToArray(); List <String> items = new List <String>(); List <ItemsChoiceType> itemNames = new List <ItemsChoiceType>(); if (opportunity.VenueId != 0 && String.IsNullOrWhiteSpace(opportunity.RegionName)) { items.Add(opportunity.VenueId.ToString()); itemNames.Add(ItemsChoiceType.VenueID); } if (!String.IsNullOrWhiteSpace(opportunity.RegionName)) { items.Add(opportunity.RegionName); itemNames.Add(ItemsChoiceType.RegionName); } opportunityDetail.Items = items.ToArray(); opportunityDetail.ItemsElementName = itemNames.ToArray(); opportunityDetail.OpportunityId = opportunity.OpportunityId; opportunityDetails.Add(opportunityDetail); } courseDetailStructure.Opportunity = opportunityDetails.ToArray(); // Get Venue details List <VenueDetail> venueDetails = new List <VenueDetail>(); foreach (Venue venue in course.Venues) { VenueDetail venueDetail = new VenueDetail(); venueDetail.VenueID = venue.VenueId.ToString(); venueDetail.VenueName = venue.VenueName; venueDetail.Phone = venue.Phone; venueDetail.Email = venue.Email; venueDetail.Facilities = venue.Facilities; venueDetail.Fax = venue.Fax; venueDetail.Website = venue.Website; venueDetail.VenueAddress = BuildAddressType(venue.AddressLine1, venue.AddressLine2, venue.Town, venue.County, venue.Postcode, venue.Latitude, venue.Longitude); venueDetails.Add(venueDetail); } courseDetailStructure.Venue = venueDetails.ToArray(); courseDetailStructures.Add(courseDetailStructure); } courseDetailOutput.CourseDetails = courseDetailStructures.ToArray(); // Get original Request details courseDetailOutput.RequestDetails = new CourseDetailRequestStructure { CourseID = courseDetailInput.CourseID, APIKey = courseDetailInput.APIKey }; return(courseDetailOutput); }