/// <summary> /// Maps the venue response data to our ui friendly structure. /// </summary> /// <param name="courseInfo">The class to populate, must not be null.</param> /// <param name="courseDetailStructure">The response from the web service</param> private void MapVenueData(CourseInformation courseInfo, CourseDetailStructure courseDetailStructure) { if (courseDetailStructure.Venue != null && courseDetailStructure.Venue.Count() > 0) { courseInfo.Venues = new List <Venue>(); foreach (VenueDetail venueDetail in courseDetailStructure.Venue) { Venue venue = new Venue(); venue.VenueId = venueDetail.VenueID; venue.VenueName = venueDetail.VenueName; venue.AddressLine1 = venueDetail.VenueAddress.Address_line_1; venue.AddressLine2 = venueDetail.VenueAddress.Address_line_2; venue.Town = venueDetail.VenueAddress.Town; venue.County = venueDetail.VenueAddress.County; venue.Postcode = venueDetail.VenueAddress.PostCode; venue.Email = venueDetail.Email; venue.Facilities = venueDetail.Facilities; venue.Fax = venueDetail.Fax; venue.Phone = venueDetail.Phone; venue.Website = venueDetail.Website; venue.Latitude = venueDetail.VenueAddress.Latitude; venue.Longitude = venueDetail.VenueAddress.Longitude; courseInfo.Venues.Add(venue); } } }
private static CourseDetails GetCourseDetailsData(CourseDetailStructure apiCourseDetail, OpportunityDetail activeOpportunity) { var venue = GetVenueData(apiCourseDetail?.Venue, activeOpportunity); return(apiCourseDetail?.Course is null ? null : 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, QualificationLevel = apiCourseDetail.Course.QualificationLevel, VenueDetails = venue, ProviderDetails = GetProviderDetailsData(apiCourseDetail.Provider), Oppurtunities = GetOpportunities(apiCourseDetail, activeOpportunity?.OpportunityId), CourseLink = apiCourseDetail.Course.URL, CourseId = apiCourseDetail.Course.CourseID, Cost = activeOpportunity?.Price, StartDateLabel = activeOpportunity?.StartDate.Item, AttendanceMode = activeOpportunity?.AttendanceMode, AttendancePattern = activeOpportunity?.AttendancePattern, StudyMode = activeOpportunity?.StudyMode, Duration = $"{activeOpportunity?.Duration?.DurationValue} {activeOpportunity?.Duration?.DurationUnit}", AwardingOrganisation = apiCourseDetail.Course.AwardingBody, SubjectCategory = apiCourseDetail.Course.Level2EntitlementCategoryDesc, AdditionalPrice = activeOpportunity?.PriceDesc, SupportingFacilities = venue?.Facilities, AdvancedLearnerLoansOffered = apiCourseDetail.Provider?.TFPlusLoans == true, LanguageOfInstruction = activeOpportunity?.LanguageOfInstruction, CourseWebpageLink = activeOpportunity?.URL }); }
/// <summary> /// Maps the Provider response data to our ui friendly structure. /// </summary> /// <param name="courseInfo">The class to populate, must not be null.</param> /// <param name="courseDetailStructure">The response from the web service</param> private void MapProviderData(CourseInformation courseInfo, CourseDetailStructure courseDetailStructure) { if (courseDetailStructure.Provider != null) { ProviderSearchResult provider = new ProviderSearchResult(); provider.ProviderID = courseDetailStructure.Provider.ProviderID; provider.ProviderName = courseDetailStructure.Provider.ProviderName; provider.AddressLine1 = courseDetailStructure.Provider.ProviderAddress.Address_line_1; provider.AddressLine2 = courseDetailStructure.Provider.ProviderAddress.Address_line_2; provider.Town = courseDetailStructure.Provider.ProviderAddress.Town; provider.County = courseDetailStructure.Provider.ProviderAddress.County; provider.Postcode = courseDetailStructure.Provider.ProviderAddress.PostCode; provider.Email = courseDetailStructure.Provider.Email; provider.Website = courseDetailStructure.Provider.Website; provider.Phone = courseDetailStructure.Provider.Phone; provider.Fax = courseDetailStructure.Provider.Fax; provider.UKPRN = courseDetailStructure.Provider.UKPRN; provider.UPIN = courseDetailStructure.Provider.UPIN; provider.TFPlusLoans = courseDetailStructure.Provider.TFPlusLoans; provider.DFE1619Funded = courseDetailStructure.Provider.DFE1619Funded; provider.FEChoices_LearnerDestination = courseDetailStructure.Provider.FEChoices_LearnerDestinationSpecified ? courseDetailStructure.Provider.FEChoices_LearnerDestination : (Double?)null; provider.FEChoices_LearnerSatisfaction = courseDetailStructure.Provider.FEChoices_LearnerSatisfactionSpecified ? courseDetailStructure.Provider.FEChoices_LearnerSatisfaction : (Double?)null; provider.FEChoices_EmployerSatisfaction = courseDetailStructure.Provider.FEChoices_EmployerSatisfactionSpecified ? courseDetailStructure.Provider.FEChoices_EmployerSatisfaction : (Double?)null; courseInfo.Provider = provider; } }
private static IList <Oppurtunity> GetOpportunities(CourseDetailStructure apiCourseDetail, string oppurtunityId) { return(apiCourseDetail.Opportunity.Where(op => op.OpportunityId != oppurtunityId).Select(opp => new Oppurtunity { StartDate = DateTime.Parse(opp.StartDate.Item), OppurtunityId = opp.OpportunityId, VenueName = apiCourseDetail.Venue.Where(venue => venue.VenueID == opp.Items[0]).FirstOrDefault().VenueName }).ToList()); }
/// <summary> /// Maps the course response data to our ui friendly structure. /// </summary> /// <param name="courseInfo">The class to populate, must not be null.</param> /// <param name="courseDetailStructure">The response from the web service</param> private void MapCourseData(CourseInformation courseInfo, CourseDetailStructure courseDetailStructure) { courseInfo.CourseId = courseDetailStructure.Course.CourseID; courseInfo.ProviderCourseTitle = courseDetailStructure.Course.CourseTitle; courseInfo.Summary = courseDetailStructure.Course.CourseSummary; courseInfo.URL = courseDetailStructure.Course.URL; courseInfo.BookingURL = courseDetailStructure.Course.BookingURL; courseInfo.EntryRequirements = courseDetailStructure.Course.EntryRequirements; courseInfo.AssessmentMethod = courseDetailStructure.Course.AssessmentMethod; courseInfo.EquipmentRequired = courseDetailStructure.Course.EquipmentRequired; courseInfo.TariffRequired = courseDetailStructure.Course.TariffRequired; courseInfo.LearningAimRef = courseDetailStructure.Course.QualificationReference; // referred LAD data courseInfo.AwardingOrganisationName = courseDetailStructure.Course.AwardingBody; courseInfo.Level2EntitlementCategoryDescription = courseDetailStructure.Course.Level2EntitlementCategoryDesc; courseInfo.Level3EntitlementCategoryDescription = courseDetailStructure.Course.Level3EntitlementCategoryDesc; courseInfo.SectorLeadBodyDescription = courseDetailStructure.Course.SectorLeadBodyDesc; courseInfo.AccreditationStartDate = courseDetailStructure.Course.AccreditationStartDate; courseInfo.AccreditationEndDate = courseDetailStructure.Course.AccreditationEndDate; courseInfo.CertificationEndDate = courseDetailStructure.Course.CertificationEndDate; courseInfo.CreditValue = courseDetailStructure.Course.CreditValue; courseInfo.QCAGuidedLearningHours = courseDetailStructure.Course.QCAGuidedLearningHours; courseInfo.IndependentLivingSkills = courseDetailStructure.Course.IndependentLivingSkills.ToString(); courseInfo.SkillsforLifeFlag = courseDetailStructure.Course.SkillsForLifeFlag.ToString(); courseInfo.SkillsForLifeTypeDescription = courseDetailStructure.Course.SkillsForLifeTypeDesc; courseInfo.ERAppStatus = courseDetailStructure.Course.ERAppStatus.ToString(); courseInfo.ERTTGStatus = courseDetailStructure.Course.ERTTGStatus.ToString(); courseInfo.AdultLRStatus = courseDetailStructure.Course.AdultLRStatus.ToString(); courseInfo.OtherFundingNonFundingStatus = courseDetailStructure.Course.OtherFundingNonFundedStatus.ToString(); // conditionally derived data courseInfo.DataType = courseDetailStructure.Course.DataType.ToString(); courseInfo.QualificationReferenceAuthority = courseDetailStructure.Course.QualificationReferenceAuthority; courseInfo.QualificationReference = courseDetailStructure.Course.QualificationReference; courseInfo.QualificationTitle = courseDetailStructure.Course.QualificationTitle; courseInfo.QualificationType = courseDetailStructure.Course.QualificationType; courseInfo.QualificationLevel = courseDetailStructure.Course.QualificationLevel; courseInfo.LDCSCategoryCodeApplicability1 = courseDetailStructure.Course.LDCS.CatCode1.LDCSDesc; courseInfo.LDCSCategoryCodeApplicability2 = courseDetailStructure.Course.LDCS.CatCode2.LDCSDesc; }
/// <summary> /// Maps the Opportunity response data to our ui friendly structure. /// </summary> /// <param name="courseInfo">The class to populate, must not be null.</param> /// <param name="courseDetailStructure">The response from the web service</param> private void MapOpportunityData(CourseInformation courseInfo, CourseDetailStructure courseDetailStructure) { if (courseDetailStructure.Opportunity != null && courseDetailStructure.Opportunity.Count() > 0) { courseInfo.Opportunities = new List <Opportunity>(); foreach (OpportunityDetail opportunity in courseDetailStructure.Opportunity) { Opportunity opp = new Opportunity(); if (opportunity.A10 != null) { opp.A10Field = string.Join(",", opportunity.A10); } opp.ApplicationAcceptedThroughoutYear = opportunity.ApplicationAcceptedThroughoutYear.ToString(); opp.ApplyFromDate = opportunity.ApplyFromDate; opp.ApplyTo = opportunity.ApplyTo; opp.ApplyUntilDate = opportunity.ApplyUntilDate; opp.ApplyUntilDescription = opportunity.ApplyUntilDesc; opp.AttendanceMode = opportunity.AttendanceMode; opp.AttendancePattern = opportunity.AttendancePattern; if (opportunity.Duration != null) { opp.DurationDescription = opportunity.Duration.DurationDescription; opp.DurationUnit = opportunity.Duration.DurationUnit; opp.DurationValue = opportunity.Duration.DurationValue; } opp.EndDate = opportunity.EndDate; opp.EnquireTo = opportunity.EnquireTo; opp.LanguageOfAssessment = opportunity.LanguageOfAssessment; opp.LanguageOfInstruction = opportunity.LanguageOfInstruction; // region name and venue id are in the Items collection // need to check for type to work out which field we populate if (opportunity.Items.Count() > 0) { for (Int32 i = 0; i < opportunity.Items.Length; i++) { switch (opportunity.ItemsElementName[i]) { case ItemsChoiceType.VenueID: opp.VenueId = opportunity.Items[i]; break; case ItemsChoiceType.RegionName: opp.RegionName = opportunity.Items[i]; break; } } } opp.OpportunityId = opportunity.OpportunityId; opp.PlacesAvailable = opportunity.PlacesAvailable; opp.Price = opportunity.Price; opp.PriceDescription = opportunity.PriceDesc; opp.ProviderOpportunityId = opportunity.ProviderOpportunityId; if (opportunity.StartDate.ItemElementName.ToString() == "Date") { if (opportunity.StartDate.Item != null) { opp.StartDate = opportunity.StartDate.Item.ToString(); } } else { if (opportunity.StartDate.Item != null) { opp.StartDateDescription = opportunity.StartDate.Item.ToString(); } } opp.StudyMode = opportunity.StudyMode; opp.Timetable = opportunity.Timetable; opp.Url = opportunity.URL; courseInfo.Opportunities.Add(opp); } } }
private static OpportunityDetail GetActiveOpportunity(string oppurtunityId, CourseDetailStructure apiCourseDetail) { return((!string.IsNullOrEmpty(oppurtunityId)) ? apiCourseDetail?.Opportunity.SingleOrDefault(op => op.OpportunityId == oppurtunityId) : apiCourseDetail?.Opportunity.FirstOrDefault()); }
/// <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); }