예제 #1
0
        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);
        }
예제 #2
0
        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
            };
        }