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); }