public async Task <ManageVacancyViewModel> GetManageVacancyViewModel(Vacancy vacancy) { var viewModel = new ManageVacancyViewModel(); viewModel.Title = vacancy.Title; viewModel.Status = vacancy.Status; viewModel.VacancyReference = vacancy.VacancyReference.Value.ToString(); viewModel.ClosingDate = viewModel.Status == VacancyStatus.Closed ? vacancy.ClosedDate?.AsGdsDate() : vacancy.ClosingDate?.AsGdsDate(); viewModel.AnalyticsAvailableAfterApprovalDate = _systemConfig.ShowAnalyticsForVacanciesApprovedAfterDate.AsGdsDate(); viewModel.PossibleStartDate = vacancy.StartDate?.AsGdsDate(); viewModel.IsDisabilityConfident = vacancy.IsDisabilityConfident; viewModel.IsApplyThroughFaaVacancy = vacancy.ApplicationMethod == ApplicationMethod.ThroughFindAnApprenticeship; viewModel.TransferredProviderName = vacancy.TransferInfo?.ProviderName; viewModel.TransferredOnDate = vacancy.TransferInfo?.TransferredDate.AsGdsDate(); viewModel.CanShowEditVacancyLink = vacancy.CanExtendStartAndClosingDates; viewModel.CanShowCloseVacancyLink = vacancy.CanClose; viewModel.IsClosedBlockedByQa = vacancy.Status == VacancyStatus.Closed && vacancy.ClosureReason == ClosureReason.BlockedByQa; viewModel.CanClone = vacancy.CanClone; if (vacancy.Status == VacancyStatus.Closed && vacancy.ClosureReason == ClosureReason.WithdrawnByQa) { viewModel.WithdrawnDate = vacancy.ClosedDate?.AsGdsDate(); } var applications = new List <VacancyApplication>(); if (vacancy.LiveDate >= _systemConfig.ShowAnalyticsForVacanciesApprovedAfterDate) { var vacancyApplicationsTask = _client.GetVacancyApplicationsAsync(vacancy.VacancyReference.Value.ToString()); var vacancyAnalyticsTask = _client.GetVacancyAnalyticsSummaryAsync(vacancy.VacancyReference.Value); await Task.WhenAll(vacancyApplicationsTask, vacancyAnalyticsTask); applications = vacancyApplicationsTask.Result?.Applications ?? new List <VacancyApplication>(); var analyticsSummary = vacancyAnalyticsTask.Result ?? new VacancyAnalyticsSummary(); viewModel.AnalyticsSummary = VacancyAnalyticsSummaryMapper.MapToVacancyAnalyticsSummaryViewModel(analyticsSummary, vacancy.LiveDate.GetValueOrDefault()); } else { var vacancyApplications = await _client.GetVacancyApplicationsAsync(vacancy.VacancyReference.Value.ToString()); applications = vacancyApplications?.Applications ?? new List <VacancyApplication>(); } viewModel.Applications = new VacancyApplicationsViewModel { Applications = applications, ShowDisability = vacancy.IsDisabilityConfident }; return(viewModel); }
private void PopulateViewModelWithApplications(Vacancy vacancy, DisplayVacancyApplicationViewModel viewModel) { var mappedDisplayVacancyViewModelTask = _vacancyDisplayMapper.MapFromVacancyAsync(viewModel, vacancy); var vacancyApplicationsTask = _client.GetVacancyApplicationsAsync(vacancy.VacancyReference.Value.ToString()); Task.WaitAll(mappedDisplayVacancyViewModelTask, vacancyApplicationsTask); var applications = vacancyApplicationsTask.Result?.Applications ?? new List <VacancyApplication>(); viewModel.Applications = new VacancyApplicationsViewModel { Applications = applications, ShowDisability = vacancy.IsDisabilityConfident }; }