using System.Globalization; using System.Net; using Drab.Core.Configuration; using Drab.Core.Ioc; using Drab.LocalDb; using Drab.LocalDb.IoC; using Drab.Logic.Ioc; using Drab.Logic.Services; using Drab.Ui; using Microsoft.EntityFrameworkCore; using NLog.Extensions.Logging; using Pcm.Db.Ioc; using Radzen; var culture = new CultureInfo("pl-PL"); CultureInfo.DefaultThreadCurrentCulture = culture; CultureInfo.DefaultThreadCurrentUICulture = culture; CultureInfo.CurrentCulture = culture; CultureInfo.CurrentUICulture = culture; Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = culture; var builder = WebApplication.CreateBuilder(args); var configurationBuilder = new ConfigurationBuilder() .SetBasePath(AppDomain.CurrentDomain.BaseDirectory) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); var configuration = configurationBuilder.Build(); var port = int.Parse(builder.WebHost.GetSetting("ListenPort") ?? "5010"); builder.Services.AddRazorComponents() .AddInteractiveServerComponents(); builder.Services.AddLogging(loggingBuilder => { loggingBuilder.ClearProviders(); loggingBuilder.AddConfiguration(configuration.GetSection("Logging")); loggingBuilder.AddNLog("nlog.config"); }); var drabSettings = configuration.GetSection(DrabSettings.SectionName).Get(); var localDbSettings = configuration.GetSection(LocalDbConfiguration.SectionName).Get(); builder.Services.AddLocalDatabase(localDbSettings); var dbConfig = configuration.GetSection(PcmDbConfiguration.SectionName).Get(); builder.Services.AddPcmDatabase(dbConfig); builder.Services.AddDrabCore(drabSettings); builder.Services.AddDrabLogic(); builder.Services.AddHostedService(); builder.Services.AddRadzenComponents(); builder.Services.AddControllers().AddControllersAsServices(); builder.WebHost .UseKestrel(options => { options.Listen(IPAddress.Any, port); }) .UseContentRoot(Directory.GetCurrentDirectory()); var app = builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error", createScopeForErrors: true); app.UseHsts(); } app.UseStaticFiles(); app.UseRouting(); app.UseAntiforgery(); app.MapControllers(); app.MapRazorComponents() .AddInteractiveServerRenderMode(); if (!Directory.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Orders"))) { Directory.CreateDirectory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Orders")); } var scope = app.Services.GetService(); using (var scopeProvider = scope.CreateScope()) { await using var context = scopeProvider.ServiceProvider.GetRequiredService(); await context.Database.MigrateAsync(); } app.Run();