diff --git a/EnvelopeGenerator.ServiceHost/EnvelopeGenerator.ServiceHost.csproj b/EnvelopeGenerator.ServiceHost/EnvelopeGenerator.ServiceHost.csproj
index dd58d616..1c6ecd7c 100644
--- a/EnvelopeGenerator.ServiceHost/EnvelopeGenerator.ServiceHost.csproj
+++ b/EnvelopeGenerator.ServiceHost/EnvelopeGenerator.ServiceHost.csproj
@@ -8,6 +8,7 @@
+
@@ -19,9 +20,11 @@
+
+
diff --git a/EnvelopeGenerator.ServiceHost/Program.cs b/EnvelopeGenerator.ServiceHost/Program.cs
index 8941a80f..753fc5f9 100644
--- a/EnvelopeGenerator.ServiceHost/Program.cs
+++ b/EnvelopeGenerator.ServiceHost/Program.cs
@@ -1,15 +1,51 @@
+using DigitalData.UserManager.DependencyInjection;
+using EnvelopeGenerator.Application;
+using EnvelopeGenerator.Infrastructure;
using EnvelopeGenerator.ServiceHost;
using EnvelopeGenerator.ServiceHost.Extensions;
+using Microsoft.AspNetCore.Localization;
+using Microsoft.EntityFrameworkCore;
+using System.Globalization;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
-builder.Services.AddControllers();
-builder.Services.AddFinalizeDocumentJob(builder.Configuration);
-builder.Services.AddHostedService();
+var config = builder.Configuration;
+var connStr = config.GetConnectionString("Default") ??
+ throw new InvalidOperationException("Connection string 'Default' is missing in the configuration.");
+
+#region Service configuration
+builder.Services.AddControllers();
+builder.Services.AddHostedService();
+builder.Services.AddDistributedSqlServerCache(options =>
+{
+ options.ConnectionString = connStr;
+ options.SchemaName = "dbo";
+ options.TableName = "TBDD_CACHE";
+});
+#pragma warning disable CS0618
+builder.Services.AddFinalizeDocumentJob(config);
+builder.Services.AddEnvelopeGeneratorInfrastructureServices(
+ opt =>
+ {
+ opt.AddDbTriggerParams(config);
+ opt.AddDbContext((provider, options) =>
+ {
+ var logger = provider.GetRequiredService>();
+ options.UseSqlServer(connStr)
+ .LogTo(log => logger.LogInformation("{log}", log), Microsoft.Extensions.Logging.LogLevel.Trace)
+ .EnableSensitiveDataLogging()
+ .EnableDetailedErrors();
+ });
+ });
+builder.Services.AddEnvelopeGeneratorServices(config);
+builder.Services.AddMemoryCache();
+builder.Services.AddUserManager();
+#pragma warning restore CS0618
+builder.Services.AddLocalization();
+#endregion
-// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
@@ -22,6 +58,18 @@ if (app.Environment.IsDevelopment())
app.UseSwaggerUI();
}
+#region Localizer
+var supportedCultureNames = config.GetSection("SupportedCultures").Get() ?? ["de-DE", "en-US"];
+var supportedCultures = supportedCultureNames.Select(cName => new CultureInfo(cName)).ToList();
+var requestLocalizationOptions = new RequestLocalizationOptions
+{
+ SupportedCultures = supportedCultures,
+ SupportedUICultures = supportedCultures
+};
+requestLocalizationOptions.RequestCultureProviders.Add(new QueryStringRequestCultureProvider());
+app.UseRequestLocalization(requestLocalizationOptions);
+#endregion
+
app.UseHttpsRedirection();
app.UseAuthorization();