using Microsoft.Extensions.Configuration; using Phares.Shared; using Serilog; using System.Diagnostics; using System.Globalization; using System.Reflection; using System.Text.Json; using View_by_Distance.Drag_Drop_Explorer.Models; using View_by_Distance.Shared.Models.Stateless.Methods; namespace View_by_Distance.Drag_Drop_Explorer; public partial class Form : System.Windows.Forms.Form { private readonly ILogger _Logger; private readonly Calendar _Calendar; private readonly TextBox _PathTextBox; private readonly TextBox _JsonTextBox; private readonly TextBox _FirstTextBox; private readonly AppSettings _AppSettings; private readonly ProgressBar _ProgressBar; private readonly string _WorkingDirectory; private readonly IsEnvironment _IsEnvironment; public Form() { InitializeComponent(); ILogger logger; AppSettings appSettings; string workingDirectory; IsEnvironment isEnvironment; IConfigurationRoot configurationRoot; _Calendar = new CultureInfo("en-US").Calendar; LoggerConfiguration loggerConfiguration = new(); Assembly assembly = Assembly.GetExecutingAssembly(); bool debuggerWasAttachedAtLineZero = Debugger.IsAttached || assembly.Location.Contains(@"\bin\Debug"); isEnvironment = new(processesCount: null, nullASPNetCoreEnvironmentIsDevelopment: debuggerWasAttachedAtLineZero, nullASPNetCoreEnvironmentIsProduction: !debuggerWasAttachedAtLineZero); IConfigurationBuilder configurationBuilder = new ConfigurationBuilder() .AddEnvironmentVariables() .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile(isEnvironment.AppSettingsFileName, optional: false, reloadOnChange: true); configurationRoot = configurationBuilder.Build(); appSettings = Models.Binder.AppSettings.Get(configurationRoot); if (string.IsNullOrEmpty(appSettings.WorkingDirectoryName)) throw new Exception("Working path name must have parentDirectory value!"); workingDirectory = IWorkingDirectory.GetWorkingDirectory(assembly.GetName().Name, appSettings.WorkingDirectoryName); Environment.SetEnvironmentVariable(nameof(workingDirectory), workingDirectory); _ = ConfigurationLoggerConfigurationExtensions.Configuration(loggerConfiguration.ReadFrom, configurationRoot); Log.Logger = loggerConfiguration.CreateLogger(); logger = Log.ForContext