示例#1
0
        public async Task <VacanciesViewModel> GetVacanciesViewModelAsync(
            VacancyUser user, string filter, int page, string searchTerm)
        {
            var getDashboardTask   = _providerVacancyClient.GetDashboardAsync(user.Ukprn.Value, createIfNonExistent: true);
            var getUserDetailsTask = _recruitVacancyClient.GetUsersDetailsAsync(user.UserId);
            var providerTask       = _providerRelationshipsService.GetLegalEntitiesForProviderAsync(user.Ukprn.Value, OperationType.RecruitmentRequiresReview);

            await Task.WhenAll(getDashboardTask, getUserDetailsTask, providerTask);

            var dashboard           = getDashboardTask.Result;
            var userDetails         = getUserDetailsTask.Result;
            var providerPermissions = providerTask.Result;

            var alerts = _providerAlertsViewModelFactory.Create(dashboard, userDetails);

            var vacancies = new List <VacancySummary>(dashboard?.Vacancies ?? Array.Empty <VacancySummary>());

            var filteringOption = SanitizeFilter(filter);

            var filteredVacancies = GetFilteredVacancies(vacancies, filteringOption, searchTerm);

            var filteredVacanciesTotal = filteredVacancies.Count();

            page = SanitizePage(page, filteredVacanciesTotal);

            var skip = (page - 1) * VacanciesPerPage;

            var vacanciesVm = filteredVacancies
                              .Skip(skip)
                              .Take(VacanciesPerPage)
                              .Select(VacancySummaryMapper.ConvertToVacancySummaryViewModel)
                              .ToList();

            var pager = new PagerViewModel(
                filteredVacanciesTotal,
                VacanciesPerPage,
                page,
                "Showing {0} to {1} of {2} vacancies",
                RouteNames.Vacancies_Get,
                new Dictionary <string, string>
            {
                { "filter", filteringOption.ToString() },
                { "searchTerm", searchTerm }
            });

            var vm = new VacanciesViewModel
            {
                Vacancies      = vacanciesVm,
                Pager          = pager,
                Filter         = filteringOption,
                SearchTerm     = searchTerm,
                ResultsHeading = VacancyFilterHeadingHelper.GetFilterHeading(Constants.VacancyTerm, filteredVacanciesTotal, filteringOption, searchTerm, UserType.Provider),
                Alerts         = alerts,
                HasEmployerReviewPermission = providerPermissions.Any()
            };

            return(vm);
        }
        public async Task <VacanciesViewModel> GetVacanciesViewModelAsync(string employerAccountId, string filter, int page, VacancyUser user, string searchTerm)
        {
            var vacanciesTask   = GetVacanciesAsync(employerAccountId);
            var userDetailsTask = _client.GetUsersDetailsAsync(user.UserId);

            await Task.WhenAll(vacanciesTask, userDetailsTask);

            var vacancies   = vacanciesTask.Result;
            var userDetails = userDetailsTask.Result;

            var filteringOption = SanitizeFilter(filter);

            var filteredVacancies = GetFilteredVacancies(vacancies, filteringOption, searchTerm);

            var filteredVacanciesTotal = filteredVacancies.Count();

            page = SanitizePage(page, filteredVacanciesTotal);

            var skip = (page - 1) * VacanciesPerPage;

            var vacanciesVm = filteredVacancies
                              .Skip(skip)
                              .Take(VacanciesPerPage)
                              .Select(VacancySummaryMapper.ConvertToVacancySummaryViewModel)
                              .ToList();

            var pager = new PagerViewModel(
                filteredVacanciesTotal,
                VacanciesPerPage,
                page,
                "Showing {0} to {1} of {2} adverts",
                RouteNames.Vacancies_Get,
                new Dictionary <string, string>
            {
                { "filter", filteringOption.ToString() },
                { "searchTerm", searchTerm }
            });

            var vm = new VacanciesViewModel
            {
                Vacancies      = vacanciesVm,
                Pager          = pager,
                Filter         = filteringOption,
                SearchTerm     = searchTerm,
                ResultsHeading = VacancyFilterHeadingHelper.GetFilterHeading(filteredVacanciesTotal, filteringOption, searchTerm),
                Alerts         = _alertsViewModelFactory.Create(vacancies, userDetails)
            };

            return(vm);
        }
        public void GetFilterHeading_ShouldBeExpected(int totalVacancies, FilteringOptions filteringOption, string searchTerm, string expectedResult)
        {
            var actualResult = VacancyFilterHeadingHelper.GetFilterHeading(totalVacancies, filteringOption, searchTerm);

            actualResult.Should().Be(expectedResult);
        }