using back.persistance.data; using System.Text.Json.Serialization; using back.services.engine.SystemUser; using DependencyInjector; using System.Text.Json; using Transactional.Abstractions.Interfaces; using Transactional.Implementations.EntityFramework; namespace back.ServicesExtensions; public static partial class ServicesExtensions { public static IServiceCollection UseExtensions(this IServiceCollection services) { //var config = services.ConfigureOptions(); services.AddMemoryCache(); services.AddDatabaseContext(); services.AddServices(); services.AddScoped, EntityFrameworkTransactionalService>(); services.AddSingleton(new JsonSerializerOptions { Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping, AllowTrailingCommas = true, PropertyNameCaseInsensitive = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, WriteIndented = true, Converters = { new JsonStringEnumConverter(JsonNamingPolicy.CamelCase), }, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, DictionaryKeyPolicy = JsonNamingPolicy.CamelCase, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString, ReadCommentHandling = JsonCommentHandling.Skip, UnmappedMemberHandling = JsonUnmappedMemberHandling.Skip, UnknownTypeHandling = JsonUnknownTypeHandling.JsonElement, }); using var scope = services.BuildServiceProvider().CreateScope(); scope.ServiceProvider .GetRequiredService().GenerateAsync().Wait(); return services; } }