Beispiel #1
0
        public async Task <SelectTrainingProviderViewModel> GetSelectTrainingProviderViewModelAsync(VacancyRouteModel vrm, long?ukprn = null)
        {
            var vacancyTask           = Utility.GetAuthorisedVacancyForEditAsync(_client, _vacancyClient, vrm, RouteNames.TrainingProvider_Select_Get);
            var trainingProvidersTask = _vacancyClient.GetAllTrainingProvidersAsync();

            await Task.WhenAll(vacancyTask, trainingProvidersTask);

            var vacancy           = vacancyTask.Result;
            var trainingProviders = trainingProvidersTask.Result;

            var programme = await _vacancyClient.GetApprenticeshipProgrammeAsync(vacancy.ProgrammeId);

            var vm = new SelectTrainingProviderViewModel
            {
                Title             = vacancy.Title,
                TrainingProviders = trainingProviders.Select(t => FormatSuggestion(t.ProviderName, t.Ukprn)),
                PageInfo          = Utility.GetPartOnePageInfo(vacancy),
                Programme         = programme.ToViewModel()
            };

            TrySetSelectedTrainingProvider(vm, trainingProviders, vacancy, ukprn);

            if (vacancy.Status == VacancyStatus.Referred)
            {
                vm.Review = await _reviewSummaryService.GetReviewSummaryViewModelAsync(vacancy.VacancyReference.Value,
                                                                                       ReviewFieldMappingLookups.GetTrainingProviderFieldIndicators());
            }

            return(vm);
        }
Beispiel #2
0
        private IActionResult AccessDenied()
        {
            if (TempData.ContainsKey(TempDataKeys.IsBlockedProvider) && (bool)TempData.Peek(TempDataKeys.IsBlockedProvider))
            {
                return(ProviderAccessRevoked());
            }

            var serviceClaims = User.FindAll(ProviderRecruitClaims.IdamsUserServiceTypeClaimTypeIdentifier);

            if (serviceClaims.Any(claim => claim.Value.Equals(ProviderRecruitClaims.ServiceClaimValue) == false))
            {
                _logger.LogInformation("User does not have service claim.");
                return(Redirect(_externalLinks.ProviderApprenticeshipSiteUrl));
            }

            var ukprnClaim = User.FindFirst(ProviderRecruitClaims.IdamsUserUkprnClaimsTypeIdentifier);

            if (!string.IsNullOrEmpty(ukprnClaim.Value))
            {
                var  ukprn = long.Parse(ukprnClaim.Value);
                bool ukprnIsNotListedInRoatp;
                try
                {
                    var allProviders = _vacancyClient.GetAllTrainingProvidersAsync().Result;
                    var provider     = allProviders.SingleOrDefault(p => p.Ukprn == ukprn);
                    ukprnIsNotListedInRoatp = provider == null;
                }
                catch (Exception)
                {
                    ukprnIsNotListedInRoatp = true;
                }

                if (ukprnIsNotListedInRoatp)
                {
                    _logger.LogInformation($"Provider {ukprn} is not listed in RoATP for user {User.Identity.Name}.");
                    return(Redirect(_externalLinks.ProviderApprenticeshipSiteUrl));
                }
            }

            Response.StatusCode = (int)HttpStatusCode.Unauthorized;
            return(View(ViewNames.AccessDenied));
        }