/// <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);
                }
            }
        }
예제 #2
0
        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;
            }
        }
예제 #4
0
 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);
                }
            }
        }
예제 #7
0
 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);
        }