Пример #1
0
        private void RegisterServices(IServiceCollection services)
        {
            var commitmentsClientApiConfiguration = new CommitmentsClientApiConfiguration();

            Configuration.GetSection(nameof(CommitmentsClientApiConfiguration)).Bind(commitmentsClientApiConfiguration);
            services.AddSingleton(commitmentsClientApiConfiguration);
            services.AddSingleton <ICommitmentsApiClientFactory, CommitmentsApiClientFactory>();
            services.AddTransient(x => x.GetService <ICommitmentsApiClientFactory>().CreateClient());
            services.AddTransient <CommitmentsService>();

            var accountsApiConfiguration = new AccountApiConfiguration();

            Configuration.GetSection(nameof(AccountApiConfiguration)).Bind(accountsApiConfiguration);
            services.AddSingleton <IAccountApiConfiguration>(accountsApiConfiguration);
            services.AddTransient <IAccountApiClient, AccountApiClient>();
            services.AddTransient <EmployerService>();

            var roatpApiConfiguration = new RoatpApiClientSettings();

            Configuration.GetSection(nameof(RoatpApiClientSettings)).Bind(roatpApiConfiguration);
            services.AddSingleton(roatpApiConfiguration);
            services.AddSingleton <IRoatpApiHttpClientFactory, RoatpApiHttpClientFactory>();
            services.AddTransient(x => x.GetService <IRoatpApiHttpClientFactory>().CreateClient());

            services.AddTransient <IRoatpService, RoatpService>();
            services.AddTransient <ProviderService>();
            services.AddTransient <DataLockService>();
            services.AddTransient <LearnerReportProvider>();
            services.AddTransient <ITimeProvider, TimeProvider>();
        }
Пример #2
0
        private CommitmentsClientApiConfiguration GetCommitmentsClientApiConfiguration(IFunctionsHostBuilder builder, ServiceProvider serviceProvider, IConfigurationRoot config, string environment)
        {
            CommitmentsClientApiConfiguration commitmentsClientApiConfig;

            if (ConfigurationIsLocalOrDev(environment))
            {
                commitmentsClientApiConfig = new CommitmentsClientApiConfiguration
                {
                    ApiBaseUrl    = config["CommitmentsV2ApiBaseUrl"],
                    IdentifierUri = config["CommitmentsV2ApiIdentifierUri"],
                    ClientId      = config["CommitmentsV2ApiClientId"],
                    ClientSecret  = config["CommitmentsV2ApiClientSecret"],
                    Tenant        = config["CommitmentsV2ApiTenant"]
                };
            }
            else
            {
                var section = config.GetSection("CommitmentsV2Api");
                commitmentsClientApiConfig = section.Get <CommitmentsClientApiConfiguration>();
                builder.Services.Configure <CommitmentsClientApiConfiguration>(section);
                builder.Services.AddSingleton(cfg => commitmentsClientApiConfig);
            }

            return(commitmentsClientApiConfig);
        }
 public LocalDevApiClientFactory(CommitmentsClientApiConfiguration configuration, ILoggerFactory loggerFactory)
 {
     _configuration = configuration;
     _loggerFactory = loggerFactory;
 }
Пример #4
0
        public override void Configure(IFunctionsHostBuilder builder)
        {
            builder.Services.AddLogging(logBuilder =>
            {
                logBuilder.AddFilter(typeof(Startup).Namespace, LogLevel.Information); // this is because all logging is filtered out by default
                var rootDirectory = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), ".."));
                logBuilder.AddNLog(Directory.GetFiles(rootDirectory, "nlog.config", SearchOption.AllDirectories)[0]);
            });

            var serviceProvider = builder.Services.BuildServiceProvider();
            var configuration   = serviceProvider.GetService <IConfiguration>();
            var environment     = configuration["EnvironmentName"];

            var configBuilder = new ConfigurationBuilder()
                                .AddConfiguration(configuration)
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddEnvironmentVariables();

            if (!ConfigurationIsLocalOrDev(environment))
            {
                configBuilder.AddAzureTableStorage(options =>
                {
                    options.ConfigurationKeys       = configuration["ConfigNames"].Split(",");
                    options.StorageConnectionString = configuration["ConfigurationStorageConnectionString"];
                    options.EnvironmentName         = configuration["EnvironmentName"];
                    options.PreFixConfigurationKeys = false;
                });
            }

            var config = configBuilder.Build();
            var logger = serviceProvider.GetService <ILoggerProvider>().CreateLogger(GetType().AssemblyQualifiedName);

            if (!ConfigurationIsLocalOrDev(environment))
            {
                builder.Services.AddNServiceBus(logger);
            }
            else
            {
                builder.Services.AddNServiceBus(
                    logger,
                    (options) =>
                {
                    if (config["NServiceBusConnectionString"] == "UseLearningEndpoint=true")
                    {
                        options.EndpointConfiguration = (endpoint) =>
                        {
                            endpoint.UseTransport <LearningTransport>()
                            .StorageDirectory(config["NServiceBusStorageDirectory"]);
                            return(endpoint);
                        };
                    }
                });
            }

            ConfigureLogFactoy();

            CommitmentsClientApiConfiguration commitmentsClientApiConfig = GetCommitmentsClientApiConfiguration(builder, serviceProvider, config, environment);

            builder.Services.AddSingleton <ICommitmentsApiClientFactory>(x => new CommitmentsApiClientFactory(commitmentsClientApiConfig, _loggerFactory));
            builder.Services.AddTransient <ICommitmentsApiClient>(provider => provider.GetRequiredService <ICommitmentsApiClientFactory>().CreateClient());

            var     mapperConfig = new MapperConfiguration(config => { config.AddProfile <AutoMapperProfile>(); });
            IMapper mapper       = mapperConfig.CreateMapper();

            builder.Services.AddSingleton(mapper);

            builder.Services.AddScoped <IApprenticeshipCompletedEventHandler, ApprenticeshipCompletedEventHandler>();
            builder.Services.AddScoped <IApprenticeshipStoppedEventHandler, ApprenticeshipStoppedEventHandler>();
            builder.Services.AddScoped <IApprenticeshipStopDateChangedEventHandler, ApprenticeshipStopDateChangedEventHandler>();
            builder.Services.AddScoped <IApprenticeshipCompletionDateUpdatedEventHandler, ApprenticeshipCompletionDateUpdatedEventHandler>();
            builder.Services.AddScoped(_ => CreateDocumentSession(config));
            builder.Services.AddScoped <IGetApprenticeshipService, GetApprenticeshipService>();

            builder.Services.AddSingleton <IConfiguration>(config);
            builder.Services.AddDatabaseRegistration(config, environment);
        }