public async Task <DashboardViewModel> GetDashboardViewModelAsync(string employerAccountId, VacancyUser user) { var dashboardTask = _vacancyClient.GetDashboardAsync(employerAccountId, createIfNonExistent: true); var userDetailsTask = _client.GetUsersDetailsAsync(user.UserId); await Task.WhenAll(dashboardTask, userDetailsTask); var dashboard = dashboardTask.Result; var userDetails = userDetailsTask.Result; var vacancies = dashboard.Vacancies?.ToList() ?? new List <VacancySummary>(); var vm = new DashboardViewModel { EmployerAccountId = employerAccountId, Vacancies = vacancies, NoOfVacanciesClosingSoonWithNoApplications = vacancies.Count(v => v.ClosingDate <= _timeProvider.Today.AddDays(ClosingSoonDays) && v.Status == VacancyStatus.Live && v.ApplicationMethod == ApplicationMethod.ThroughFindAnApprenticeship && v.NoOfApplications == 0), NoOfVacanciesClosingSoon = vacancies.Count(v => v.ClosingDate <= _timeProvider.Today.AddDays(ClosingSoonDays) && v.Status == VacancyStatus.Live), Alerts = _alertsViewModelFactory.Create(vacancies, userDetails) }; return(vm); }
public async Task Handle(UpdateUserAlertCommand message, CancellationToken cancellationToken) { var user = await _client.GetUsersDetailsAsync(message.IdamsUserId); switch (message.AlertType) { case AlertType.TransferredVacanciesEmployerRevokedPermission: user.TransferredVacanciesEmployerRevokedPermissionAlertDismissedOn = message.DismissedOn; break; case AlertType.ClosedVacanciesBlockedProvider: user.ClosedVacanciesBlockedProviderAlertDismissedOn = message.DismissedOn; break; case AlertType.TransferredVacanciesBlockedProvider: user.TransferredVacanciesBlockedProviderAlertDismissedOn = message.DismissedOn; break; case AlertType.ClosedVacanciesWithdrawnByQa: user.ClosedVacanciesWithdrawnByQaAlertDismissedOn = message.DismissedOn; break; default: throw new InvalidEnumArgumentException($"Cannot handle this alert dismissal {message.AlertType}"); } await _userRepository.UpsertUserAsync(user); }
public async Task <DashboardViewModel> GetDashboardViewModelAsync(VacancyUser user) { var dashboardTask = _vacancyClient.GetDashboardAsync(user.Ukprn.Value, createIfNonExistent: true); var userDetailsTask = _client.GetUsersDetailsAsync(user.UserId); var providerTask = _providerRelationshipsService.GetLegalEntitiesForProviderAsync(user.Ukprn.Value, OperationType.RecruitmentRequiresReview); await Task.WhenAll(dashboardTask, userDetailsTask, providerTask); var dashboard = dashboardTask.Result; var userDetails = userDetailsTask.Result; var providerPermissions = providerTask.Result; var vacancies = dashboard.Vacancies?.ToList() ?? new List <VacancySummary>(); var vm = new DashboardViewModel { Vacancies = vacancies, NoOfVacanciesClosingSoonWithNoApplications = vacancies.Count(v => v.ClosingDate <= _timeProvider.Today.AddDays(ClosingSoonDays) && v.Status == VacancyStatus.Live && v.ApplicationMethod == ApplicationMethod.ThroughFindAnApprenticeship && v.NoOfApplications == 0), NoOfVacanciesClosingSoon = vacancies.Count(v => v.ClosingDate <= _timeProvider.Today.AddDays(ClosingSoonDays) && v.Status == VacancyStatus.Live), Alerts = _providerAlertsViewModelFactory.Create(dashboard, userDetails), HasEmployerReviewPermission = providerPermissions.Any() }; return(vm); }
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 Handle(UpdateUserAccountCommand message, CancellationToken cancellationToken) { var accounts = await _client.GetEmployerIdentifiersAsync(message.IdamsUserId); var user = await _client.GetUsersDetailsAsync(message.IdamsUserId); user.EmployerAccountIds = accounts.ToList(); await _userRepository.UpsertUserAsync(user); }
public async Task <DashboardViewModel> GetDashboardViewModelAsync(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} vacancies", RouteNames.Dashboard_Index_Get, new Dictionary <string, string> { { "filter", filteringOption.ToString() }, { "searchTerm", searchTerm } }); var vm = new DashboardViewModel { Vacancies = vacanciesVm, Pager = pager, Filter = filteringOption, SearchTerm = searchTerm, ResultsHeading = GetFilterHeading(filteredVacanciesTotal, filteringOption, searchTerm), HasVacancies = vacancies.Any(), Alerts = GetAlerts(vacancies, userDetails) }; return(vm); }
private async Task <bool> HasStoredLevyDeclaration(string employerAccountId, string userId) { var details = await _recruitVacancyClient.GetUsersDetailsAsync(userId); return(details.AccountsDeclaredAsLevyPayers.Contains(employerAccountId)); }