private static void InitErpEngine() { CultureInfo customCulture = new CultureInfo("en-US"); customCulture.NumberFormat.NumberDecimalSeparator = "."; CultureInfo.DefaultThreadCurrentCulture = customCulture; CultureInfo.DefaultThreadCurrentUICulture = customCulture; var configurationBuilder = new ConfigurationBuilder().AddJsonFile("config.json".ToApplicationPath()); ErpSettings.Initialize(configurationBuilder.Build()); DbContext.CreateContext(ErpSettings.ConnectionString); ErpService service = new ErpService(); service.InitializeSystemEntities(); ErpAutoMapperConfiguration.Configure(ErpAutoMapperConfiguration.MappingExpressions); //here put additional automapper configuration if needed ErpAutoMapper.Initialize(ErpAutoMapperConfiguration.MappingExpressions); //register hooks HookManager.RegisterHooks(service); DbContext.CloseContext(); }
public static IApplicationBuilder UseErp(this IApplicationBuilder app, List <JobType> additionalJobTypes = null, string configFolder = null) { using (var secCtx = SecurityContext.OpenSystemScope()) { IConfiguration configuration = app.ApplicationServices.GetService <IConfiguration>(); IWebHostEnvironment env = app.ApplicationServices.GetService <IWebHostEnvironment>(); string configPath = "config.json"; if (!string.IsNullOrWhiteSpace(configFolder)) { configPath = System.IO.Path.Combine(configFolder, configPath); } var configurationBuilder = new ConfigurationBuilder().SetBasePath(env.ContentRootPath).AddJsonFile(configPath); ErpSettings.Initialize(configurationBuilder.Build()); var defaultThreadCulture = CultureInfo.DefaultThreadCurrentCulture; var defaultThreadUICulture = CultureInfo.DefaultThreadCurrentUICulture; CultureInfo customCulture = new CultureInfo("en-US"); customCulture.NumberFormat.NumberDecimalSeparator = "."; IErpService service = null; try { DbContext.CreateContext(ErpSettings.ConnectionString); service = app.ApplicationServices.GetService <IErpService>(); var cfg = ErpAutoMapperConfiguration.MappingExpressions; // var cfg = new AutoMapper.Configuration.MapperConfigurationExpression(); ErpAutoMapperConfiguration.Configure(cfg); ErpWebAutoMapperConfiguration.Configure(cfg); //this method append plugin automapper configuration service.SetAutoMapperConfiguration(); //this should be called after plugin init ErpAutoMapper.Initialize(cfg); //we used en-US based culture settings for initialization and patch execution { CultureInfo.DefaultThreadCurrentCulture = customCulture; CultureInfo.DefaultThreadCurrentUICulture = customCulture; service.InitializeSystemEntities(); CultureInfo.DefaultThreadCurrentCulture = defaultThreadCulture; CultureInfo.DefaultThreadCurrentUICulture = defaultThreadUICulture; } CheckCreateHomePage(); service.InitializeBackgroundJobs(additionalJobTypes); ErpAppContext.Init(app.ApplicationServices); { //switch culture for patch executions and initializations CultureInfo.DefaultThreadCurrentCulture = customCulture; CultureInfo.DefaultThreadCurrentUICulture = customCulture; //this is called after automapper setup service.InitializePlugins(app.ApplicationServices); CultureInfo.DefaultThreadCurrentCulture = defaultThreadCulture; CultureInfo.DefaultThreadCurrentUICulture = defaultThreadUICulture; } } finally { DbContext.CloseContext(); CultureInfo.DefaultThreadCurrentCulture = defaultThreadCulture; CultureInfo.DefaultThreadCurrentUICulture = defaultThreadUICulture; } //this is handled by background services now //if (service != null) // service.StartBackgroundJobProcess(); return(app); } }