コード例 #1
0
        public EmployerSearchViewModel GetVacancyOwnerRelationshipViewModels(int providerSiteId)
        {
            var pageSize       = _configurationService.Get <RecruitWebConfiguration>().PageSize;
            var parameters     = new EmployerSearchRequest(providerSiteId);
            var vacancyParties = _providerService.GetVacancyOwnerRelationships(parameters, 1, pageSize);

            var employerIds = vacancyParties.Page
                              .Select(vacancyOwnerRelationship => vacancyOwnerRelationship.EmployerId)
                              .Distinct();

            var employers = _employerService.GetEmployers(employerIds);

            var resultsPage = vacancyParties.ToViewModel(vacancyParties.Page
                                                         // Exclude employers from search results that are NOT returned from Employer Service, status may be 'Suspended' etc.
                                                         .Where(vacancyOwnerRelationship => employers
                                                                .Any(employer => employer.EmployerId == vacancyOwnerRelationship.EmployerId))
                                                         .Select(vacancyOwnerRelationship => vacancyOwnerRelationship.Convert(employers.Single(employer => employer.EmployerId == vacancyOwnerRelationship.EmployerId))
                                                                 .Employer));

            return(new EmployerSearchViewModel
            {
                ProviderSiteId = providerSiteId,
                Employers = resultsPage
            });
        }
コード例 #2
0
 private static bool IsMatchingAddress(EmployerSearchRequest request, Employer e)
 {
     return
         ((e.Address.Postcode != null &&
           Regex.Replace(e.Address.Postcode, @"\s+", "").ToLower().Contains(request.Location.ToLower())) ||
          (e.Address.AddressLine4 != null &&
           Regex.Replace(e.Address.AddressLine4, @"\s+", "").ToLower().Contains(request.Location.ToLower())) ||
          (e.Address.Town != null &&
           Regex.Replace(e.Address.Town, @"\s+", "").ToLower().Contains(request.Location.ToLower())));
 }
コード例 #3
0
        public Pageable <VacancyOwnerRelationship> GetVacancyOwnerRelationships(EmployerSearchRequest request, int currentPage, int pageSize)
        {
            var results = GetVacancyParties(request);

            var pageable = new Pageable <VacancyOwnerRelationship>
            {
                CurrentPage = currentPage
            };

            var resultCount = results.Count;

            pageable.Page               = results.Skip((currentPage - 1) * pageSize).Take(pageSize).ToList();
            pageable.ResultsCount       = resultCount;
            pageable.TotalNumberOfPages = resultCount / pageSize + 1;

            return(pageable);
        }
        public void NameAndLocationRepositorySearch(string addressLine4, string town)
        {
            // Arrange.
            var fromRepository = new List <VacancyOwnerRelationship>
            {
                _providerSiteEmployerLink1,
                _providerSiteEmployerLink2,
                _providerSiteEmployerLink3
            };

            _vacancyOwnerRelationshipReadRepository.Setup(r => r.
                                                          GetByProviderSiteId(ProviderSiteId))
            .Returns(fromRepository);

            var service = new ProviderServiceBuilder()
                          .With(_employerService.Object)
                          .With(_vacancyOwnerRelationshipReadRepository.Object)
                          .Build();

            _employer1.Address.AddressLine4 = addressLine4;
            _employer1.Address.Town         = town;

            var employerName = _employer1.FullName.Substring(0, 10);
            var location     = (addressLine4 ?? town).Substring(0, 15);

            var employerSearchRequest = new EmployerSearchRequest(
                ProviderSiteId, employerName, location);

            var expectedResults = new List <VacancyOwnerRelationship>
            {
                _providerSiteEmployerLink1
            };

            // Act.
            var linksPage = service.GetVacancyOwnerRelationships(employerSearchRequest, CurrentPage, PageSize);

            // Assert.
            linksPage.Should().NotBeNull();

            linksPage.Page.Count().Should().Be(expectedResults.Count);
            linksPage.Page.ShouldBeEquivalentTo(expectedResults);

            linksPage.ResultsCount.Should().Be(expectedResults.Count);
            linksPage.TotalNumberOfPages.Should().Be(1);
        }
コード例 #5
0
        public EmployerSearchViewModel GetVacancyOwnerRelationshipViewModels(EmployerSearchViewModel viewModel)
        {
            EmployerSearchRequest parameters;

            switch (viewModel.FilterType)
            {
            case EmployerFilterType.EdsUrn:
                parameters = new EmployerSearchRequest(viewModel.ProviderSiteId, viewModel.EdsUrn);
                break;

            case EmployerFilterType.NameAndLocation:
            case EmployerFilterType.NameOrLocation:
                parameters = new EmployerSearchRequest(viewModel.ProviderSiteId, viewModel.Name, viewModel.Location);
                break;

            case EmployerFilterType.Undefined:
                parameters = new EmployerSearchRequest(viewModel.ProviderSiteId);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(viewModel), viewModel.FilterType, string.Empty);
            }

            var pageSize       = _configurationService.Get <RecruitWebConfiguration>().PageSize;
            var vacancyParties = _providerService.GetVacancyOwnerRelationships(parameters, viewModel.Employers.CurrentPage, pageSize);

            var employerIds = vacancyParties.Page
                              .Select(vp => vp.EmployerId)
                              .Distinct();

            var employers = _employerService.GetEmployers(employerIds);

            var resultsPage = vacancyParties.ToViewModel(vacancyParties.Page
                                                         // Exclude employers from search results that are NOT returned from Employer Service, status may be 'Suspended' etc.
                                                         .Where(vacancyOwnerRelationship => employers
                                                                .Any(employer => employer.EmployerId == vacancyOwnerRelationship.EmployerId))
                                                         .Select(vacancyOwnerRelationship => vacancyOwnerRelationship.Convert(employers.Single(employer => employer.EmployerId == vacancyOwnerRelationship.EmployerId))
                                                                 .Employer));

            viewModel.Employers = resultsPage;

            return(viewModel);
        }
        public void PostCodeRepositorySearch()
        {
            var fromRepository = new List <VacancyOwnerRelationship> {
                _providerSiteEmployerLink1, _providerSiteEmployerLink2, _providerSiteEmployerLink3
            };

            _vacancyOwnerRelationshipReadRepository.Setup(r => r.GetByProviderSiteId(ProviderSiteId)).Returns(fromRepository);
            var service = new ProviderServiceBuilder().With(_employerService.Object).With(_vacancyOwnerRelationshipReadRepository.Object).Build();
            var employerSearchRequest = new EmployerSearchRequest(ProviderSiteId, null, _employer3.Address.Postcode.Substring(0, 10));

            var linksPage = service.GetVacancyOwnerRelationships(employerSearchRequest, CurrentPage, PageSize);

            var expectedResults = new List <VacancyOwnerRelationship> {
                _providerSiteEmployerLink3
            };

            linksPage.Should().NotBeNull();
            linksPage.Page.Count().Should().Be(expectedResults.Count);
            linksPage.Page.ShouldBeEquivalentTo(expectedResults);
            linksPage.ResultsCount.Should().Be(expectedResults.Count);
            linksPage.TotalNumberOfPages.Should().Be(1);
        }
コード例 #7
0
        private List <VacancyOwnerRelationship> GetVacancyParties(EmployerSearchRequest request)
        {
            Condition.Requires(request).IsNotNull();

            _logService.Debug(
                "Calling VacancyOwnerRelationshipReadRepository to get vacancy party for provider site with Id='{0}'.",
                request.ProviderSiteId);

            var vacancyParties = _vacancyOwnerRelationshipReadRepository.GetByProviderSiteId(request.ProviderSiteId).ToList();

            if (request.IsQuery)
            {
                var employers = _employerService.GetEmployers(vacancyParties.Select(v => v.EmployerId).Distinct());

                if (request.IsEmployerEdsUrnQuery)
                {
                    employers = employers.Where(e => e.EdsUrn == request.EmployerEdsUrn);
                }
                else if (request.IsNameAndLocationQuery)
                {
                    employers = employers.Where(employer =>
                                                employer.FullName.ToLower().Contains(request.Name.ToLower()) &&
                                                IsMatchingAddress(request, employer));
                }
                else if (request.IsNameQuery)
                {
                    employers = employers.Where(e => e.FullName.ToLower().Contains(request.Name.ToLower()));
                }
                else if (request.IsLocationQuery)
                {
                    employers = employers.Where(e => IsMatchingAddress(request, e));
                }

                vacancyParties = vacancyParties.Where(vp => employers.Any(e => e.EmployerId == vp.EmployerId)).ToList();
            }

            return(vacancyParties);
        }