/// <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;
            }
        }
        public void WhenISelectMapOnTheFirstResult()
        {
            ProviderSearchResult firstResult = searchResultsPage.FirstSearchResult;

            locationMapPage = firstResult.ClickMap();
            helper.SwitchToMostRecentPage();
        }
示例#3
0
        public async Task SearchByPostCodeShouldReturnZeroResultsIfPostCodeIsIncorrect()
        {
            const string TestApprenticeshipId = "123-2-1";
            const string TestPostCode         = "AS3 4AA";
            var          stubSearchResults    = new List <ProviderSearchResultItem> {
                new ProviderSearchResultItem(), new ProviderSearchResultItem()
            };
            var searchResults = new ProviderSearchResult <ProviderSearchResultItem> {
                Hits = stubSearchResults, Total = 0
            };

            var framework = new Framework
            {
                FrameworkId   = TestApprenticeshipId,
                FrameworkName = "Test framework name"
            };

            ProviderSearchServiceBuilder builder = new ProviderSearchServiceBuilder()
                                                   .SetupFrameworkRepository(x => x.GetFrameworkById(It.IsAny <string>()), framework)

                                                   .SetupPostCodeLookup(x => x.GetLatLongFromPostCode(It.IsAny <string>()), Task.FromResult(_testPostCodeCoordinate))
                                                   .SetupProviderSearchProvider(x => x.SearchProvidersByLocation(It.IsAny <string>(), It.IsAny <Coordinate>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <ProviderSearchFilter>(), 0), Task.FromResult(searchResults));


            var service = builder.Build();
            var result  = await service.SearchProviders(TestApprenticeshipId, TestPostCode, _pageZeroWithTenItems, null, false, false);

            result.TotalResults.Should().Be(0);
            result.ApprenticeshipId.Should().Be(TestApprenticeshipId);

            builder.LocationLookup.Verify(x => x.GetLatLongFromPostCode(TestPostCode), Times.Once);
        }
        /// <summary>
        /// Maps the provider data from the search into a class that we can
        /// more easily use as a datasource.
        /// </summary>
        /// <param name="course">A single set of provider data from the search.</param>
        /// <returns>A ProviderSearchResult of data from the input.</returns>
        private ProviderSearchResult CreateResult(ProviderStructure course)
        {
            ProviderSearchResult result = new ProviderSearchResult();

            if (course.Provider != null)
            {
                result.ProviderID    = HttpUtility.HtmlEncode(course.Provider.ProviderID);
                result.ProviderName  = HttpUtility.HtmlEncode(course.Provider.ProviderName);
                result.Email         = HttpUtility.HtmlEncode(course.Provider.Email);
                result.Fax           = HttpUtility.HtmlEncode(course.Provider.Fax);
                result.Phone         = HttpUtility.HtmlEncode(course.Provider.Phone);
                result.Website       = HttpUtility.HtmlEncode(course.Provider.Website);
                result.TFPlusLoans   = course.Provider.TFPlusLoans;
                result.DFE1619Funded = course.Provider.DFE1619Funded;

                if (course.Provider.ProviderAddress != null)
                {
                    result.AddressLine1 = HttpUtility.HtmlEncode(course.Provider.ProviderAddress.Address_line_1);
                    result.AddressLine2 = HttpUtility.HtmlEncode(course.Provider.ProviderAddress.Address_line_2);
                    result.Town         = HttpUtility.HtmlEncode(course.Provider.ProviderAddress.Town);
                    result.County       = HttpUtility.HtmlEncode(course.Provider.ProviderAddress.County);
                    result.Postcode     = HttpUtility.HtmlEncode(course.Provider.ProviderAddress.PostCode);
                }
            }

            return(result);
        }
        public void TestProviderSearchFromHomePage()
        {
            HomePage                  homePage    = new HomePage(driver);
            ProviderSearchPage        searchPage  = homePage.ClickFindADoctor();
            ProviderSearchResultsPage resultsPage = searchPage.ExecuteSearch("nephrology", "HMSA Akamai Advantage");
            ProviderSearchResult      firstResult = resultsPage.FirstSearchResult;

            Assert.AreEqual("Aaron K Nada MD", firstResult.ProviderName);
        }
        public static ProviderSearchResult MapJTokenToProviderSearchResult(JToken token)
        {
            var retval    = new ProviderSearchResult();
            var providers = token["providers"];

            foreach (var x in providers)
            {
                retval.Result.Add((int)x["providerid"], new Provider(x));
            }

            return(retval);
        }
示例#7
0
        public async Task SearchByPostCodeShouldAlwaysReturnTheFrameworkId(string postcode)
        {
            const string TestApprenticeshipId = "123-2-1";
            var          searchResults        = new ProviderSearchResult <ProviderSearchResultItem> {
                Hits = null, Total = 0
            };

            ProviderSearchService service = new ProviderSearchServiceBuilder()
                                            .SetupPostCodeLookup(x => x.GetLatLongFromPostCode(It.IsAny <string>()), Task.FromResult(_testPostCodeCoordinate))
                                            .SetupProviderSearchProvider(x => x.SearchProvidersByLocation(It.IsAny <string>(), It.IsAny <Coordinate>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <ProviderSearchFilter>(), 0), Task.FromResult(searchResults));

            var result = await service.SearchProviders(TestApprenticeshipId, postcode, _pageZeroWithTenItems, null, false, false);

            result.ApprenticeshipId.Should().Be(TestApprenticeshipId);
        }
示例#8
0
        public ProviderSearchResult <ProviderSearchResultItem> Map(SFADASApprenticeshipsApiTypesV3ProviderApprenticeshipLocationSearchResult document)
        {
            if (document == null)
            {
                return(null);
            }

            var result = new ProviderSearchResult <ProviderSearchResultItem>();

            result.Total = document.TotalResults;
            result.Hits  = document.Results?.Select(s => _providerSearchResultsMapper.Map(s));

            result.NationalProvidersAggregation = document.NationalProvidersAggregation.ToDictionary(s => s.Key, s => s.Value as long?);
            result.TrainingOptionsAggregation   = document.TrainingOptionsAggregation.ToDictionary(s => s.Key, s => s.Value as long?);

            return(result);
        }
示例#9
0
        public async Task SearchByPostCodeShouldIncludeFrameworkTitle()
        {
            const string TestApprenticeshipTitle = "Test Title";
            var          searchResults           = new ProviderSearchResult <ProviderSearchResultItem> {
                Hits = null, Total = 0
            };

            ProviderSearchService service = new ProviderSearchServiceBuilder()
                                            .SetupPostCodeLookup(x => x.GetLatLongFromPostCode(It.IsAny <string>()), Task.FromResult(_testPostCodeCoordinate))
                                            .SetupFrameworkRepository(x => x.GetFrameworkById(It.IsAny <string>()), new Framework()
            {
                Title = TestApprenticeshipTitle
            })
                                            .SetupProviderSearchProvider(x => x.SearchProvidersByLocation(It.IsAny <string>(), It.IsAny <Coordinate>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <ProviderSearchFilter>(), 0), Task.FromResult(searchResults));


            var result = await service.SearchProviders("123-2-1", "AS3 4AS", _pageZeroWithTenItems, null, false, false);

            result.Title.Should().Be(TestApprenticeshipTitle);
        }
示例#10
0
        public async Task SearchByPostCodeShouldIncludeCountOfResults()
        {
            const long testTotalResults = 5;
            var        frameworkId      = "123-1-2";
            var        framework        = new Framework
            {
                FrameworkId   = "123-1-2",
                FrameworkName = "Test framework name"
            };
            var searchResults = new ProviderSearchResult <ProviderSearchResultItem> {
                Hits = null, Total = testTotalResults
            };

            ProviderSearchService service = new ProviderSearchServiceBuilder()
                                            .SetupFrameworkRepository(x => x.GetFrameworkById(It.IsAny <string>()), framework)
                                            .SetupPostCodeLookup(x => x.GetLatLongFromPostCode(It.IsAny <string>()), Task.FromResult(_testPostCodeCoordinate))
                                            .SetupProviderSearchProvider(x => x.SearchProvidersByLocation(It.IsAny <string>(), It.IsAny <Coordinate>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <ProviderSearchFilter>(), 0), Task.FromResult(searchResults));


            var result = await service.SearchProviders(frameworkId, "AS2 3SS", _pageZeroWithTenItems, null, false, false);

            result.TotalResults.Should().Be(testTotalResults);
        }
示例#11
0
        public Paged <ProviderSearchResult> SearchByZipcode(int pageIndex, int pageSize, string query)
        {
            Paged <ProviderSearchResult> pgResult = null;

            List <ProviderSearchResult> result = null;



            int    totalCount = 0;
            string procName   = "[dbo].[Practice_Provider_Location_SearchByZipcode]";

            _data.ExecuteCmd(procName,
                             inputParamMapper : delegate(SqlParameterCollection col)
            {
                col.AddWithValue("@PageIndex", pageIndex);
                col.AddWithValue("@PageSize", pageSize);
                col.AddWithValue("@Query", query);
            },
                             singleRecordMapper : delegate(IDataReader reader, short set)
            {
                int startingIndex = 0;

                ProviderSearchResult searchedResult = new ProviderSearchResult();
                searchedResult.Practice             = new Practice();
                searchedResult.LocationType         = new LocationType();
                searchedResult.Location             = new Location();
                searchedResult.UserProfile          = new UserProfile();

                searchedResult.Practice.Id      = reader.GetSafeInt32(startingIndex++);
                searchedResult.Practice.Name    = reader.GetSafeString(startingIndex++);
                searchedResult.Practice.Phone   = reader.GetSafeString(startingIndex++);
                searchedResult.Practice.Fax     = reader.GetSafeString(startingIndex++);
                searchedResult.Practice.Email   = reader.GetSafeString(startingIndex++);
                searchedResult.Practice.SiteUrl = reader.GetSafeString(startingIndex++);
                // searchedResult.Location = _locationMapper.MapALocation(reader, out startingIndex);
                searchedResult.LocationType.Name     = reader.GetSafeString(startingIndex++);
                searchedResult.Location.LineOne      = reader.GetSafeString(startingIndex++);
                searchedResult.Location.LineTwo      = reader.GetSafeString(startingIndex++);
                searchedResult.Location.City         = reader.GetSafeString(startingIndex++);
                searchedResult.Location.Zip          = reader.GetSafeString(startingIndex++);
                searchedResult.Location.Latitude     = reader.GetSafeDouble(startingIndex++);
                searchedResult.Location.Longitude    = reader.GetSafeDouble(startingIndex++);
                searchedResult.UserProfile.FirstName = reader.GetSafeString(startingIndex++);
                searchedResult.UserProfile.LastName  = reader.GetSafeString(startingIndex++);

                if (totalCount == 0)
                {
                    totalCount = reader.GetSafeInt32(startingIndex++);
                }

                if (result == null)
                {
                    result = new List <ProviderSearchResult>();
                }
                result.Add(searchedResult);
            });
            if (result != null)
            {
                pgResult = new Paged <ProviderSearchResult>(result, pageIndex, pageSize, totalCount);
            }
            return(pgResult);
        }
 internal ProviderSearchService SetupProviderSearchProvider <T>(Func <IProviderSearchProvider, object> instance, ProviderSearchResult <ProviderSearchResultItem> searchResults)
 {
     throw new NotImplementedException();
 }