/// <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;
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }