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);
        }