public IAuthorizationContext GetAuthorizationContext()
        {
            var request = _httpContext.Request;

            var authorizationContext = new AuthorizationContext();

            authorizationContext.AddProviderPermissionValues(
                GetAccountLegalEntityId(request.Params),
                GetProviderId(request.RequestContext.RouteData.Values));    // alternative source: long.Parse(User.Identity.GetClaim("http://schemas.portal.com/ukprn"));

            return(authorizationContext);
        }
        public IAuthorizationContext GetAuthorizationContext()
        {
            var authorizationContext  = new AuthorizationContext();
            var accountLegalEntityId  = GetAccountLegalEntityId();
            var cohortId              = GetCohortId();
            var draftApprenticeshipId = GetDraftApprenticeshipId();
            var apprenticeshipId      = GetApprenticeshipId();
            var services              = GetServices();
            var ukprn     = GetUkrpn();
            var userEmail = GetUserEmail();

            if (cohortId != null)
            {
                authorizationContext.Set(AuthorizationContextKeys.CohortId, cohortId);
            }

            if (draftApprenticeshipId != null)
            {
                authorizationContext.Set(AuthorizationContextKeys.DraftApprenticeshipId, draftApprenticeshipId);
            }

            if (apprenticeshipId != null)
            {
                authorizationContext.Set(AuthorizationContextKeys.ApprenticeshipId, apprenticeshipId);
                if (ukprn != null)
                {
                    authorizationContext.AddApprenticeshipPermissionValues(apprenticeshipId.Value, Party.Provider, ukprn.Value);
                }
            }

            if (services != null)
            {
                authorizationContext.Set(AuthorizationContextKeys.Services, services);
            }

            if (ukprn != null && userEmail != null)
            {
                authorizationContext.AddProviderFeatureValues(ukprn.Value, userEmail);
            }

            if (accountLegalEntityId != null && ukprn != null)
            {
                authorizationContext.AddProviderPermissionValues(accountLegalEntityId.Value, ukprn.Value);
            }

            if (cohortId != null && ukprn != null)
            {
                authorizationContext.AddCommitmentPermissionValues(cohortId.Value, Party.Provider, ukprn.Value);
            }

            return(authorizationContext);
        }