using System.Text.Json; using System.Text.Json.Serialization; namespace FabApprovalWorkerService.Models; public record AppSettings(string AsmHtrTrainingGroupName, string CleansTrainingGroupName, string EpiProTrainingGroupName, string BaseUrl, string Company, string DbConnectionString, string EnvironmentName, bool ShouldSendEmail, string WorkerServiceMonInResource, string FqaTrainingGroupName, string MonInSite, string NewBaseUrl, string OldBaseUrl, string PackagingAndLabelingTrainingGroupName, string SiProductionTrainingGroupName, string UserCertificationRecordsFilePath, string WorkingDirectoryName) { public override string ToString() { string result = JsonSerializer.Serialize(this, AppSettingsSourceGenerationContext.Default.AppSettings); return result; } public static AppSettings Get(IConfigurationRoot configurationRoot) { AppSettings? result; try { #pragma warning disable IL3050, IL2026 result = configurationRoot.Get() ?? throw new Exception(); #pragma warning restore IL3050, IL2026 } catch (Exception) { List paths = []; foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) { if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) continue; if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) continue; paths.Add(physicalFileProvider.Root); } throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); } return result; } internal static void SetEnvironmentVariables(HostApplicationBuilder builder) { builder.Configuration.AddUserSecrets(); AppSettings appSettings = Get(builder.Configuration); Environment.SetEnvironmentVariable("AsmHtrTrainingGroupName", appSettings.AsmHtrTrainingGroupName); Environment.SetEnvironmentVariable("CleansTrainingGroupName", appSettings.CleansTrainingGroupName); Environment.SetEnvironmentVariable("EpiProTrainingGroupName", appSettings.EpiProTrainingGroupName); Environment.SetEnvironmentVariable("FabApprovalBaseUrl", appSettings.BaseUrl); Environment.SetEnvironmentVariable("FabApprovalDbConnectionString", appSettings.DbConnectionString); Environment.SetEnvironmentVariable("FabApprovalEnvironmentName", appSettings.EnvironmentName); Environment.SetEnvironmentVariable("FabApprovalShouldSendEmail", appSettings.ShouldSendEmail.ToString()); Environment.SetEnvironmentVariable("FabApprovalWorkerServiceMonInResource", appSettings.WorkerServiceMonInResource); Environment.SetEnvironmentVariable("FqaTrainingGroupName", appSettings.FqaTrainingGroupName); Environment.SetEnvironmentVariable("MonInSite", appSettings.MonInSite); Environment.SetEnvironmentVariable("NewFabApprovalBaseUrl", appSettings.NewBaseUrl); Environment.SetEnvironmentVariable("OldFabApprovalUrl", appSettings.OldBaseUrl); Environment.SetEnvironmentVariable("PackagingAndLabelingTrainingGroupName", appSettings.PackagingAndLabelingTrainingGroupName); Environment.SetEnvironmentVariable("SiProductionTrainingGroupName", appSettings.SiProductionTrainingGroupName); Environment.SetEnvironmentVariable("UserCertificationRecordsFilePath", appSettings.UserCertificationRecordsFilePath); } internal static AppSettings LoadEnvironmentVariables() { AppSettings result; try { string asmHtrTrainingGroupName = Environment.GetEnvironmentVariable("AsmHtrTrainingGroupName") ?? throw new ArgumentNullException("AsmHtrTrainingGroupName environment variable not found"); string cleansTrainingGroupName = Environment.GetEnvironmentVariable("CleansTrainingGroupName") ?? throw new ArgumentNullException("CleansTrainingGroupName environment variable not found"); string epiProTrainingGroupName = Environment.GetEnvironmentVariable("EpiProTrainingGroupName") ?? throw new ArgumentNullException("EpiProTrainingGroupName environment variable not found"); string baseUrl = Environment.GetEnvironmentVariable("FabApprovalBaseUrl") ?? throw new ArgumentNullException("FabApprovalBaseUrl environment variable not found"); string dbConnectionString = Environment.GetEnvironmentVariable("FabApprovalDbConnectionString") ?? throw new ArgumentNullException("FabApprovalDbConnectionString environment variable not found"); string environmentName = Environment.GetEnvironmentVariable("FabApprovalEnvironmentName") ?? throw new ArgumentNullException("FabApprovalEnvironmentName environment variable not found"); if (!bool.TryParse(Environment.GetEnvironmentVariable("FabApprovalShouldSendEmail"), out bool shouldSendEmail)) throw new ArgumentNullException("FabApprovalShouldSendEmail environment variable not found"); string workerServiceMonInResource = Environment.GetEnvironmentVariable("FabApprovalWorkerServiceMonInResource") ?? throw new ArgumentNullException("FabApprovalWorkerServiceMonInResource environment variable not found"); string fqaTrainingGroupName = Environment.GetEnvironmentVariable("FqaTrainingGroupName") ?? throw new ArgumentNullException("FqaTrainingGroupName environment variable not found"); string monInSite = Environment.GetEnvironmentVariable("MonInSite") ?? throw new ArgumentNullException("MonInSite environment variable not found"); string newBaseUrl = Environment.GetEnvironmentVariable("NewFabApprovalBaseUrl") ?? throw new ArgumentNullException("NewFabApprovalBaseUrl environment variable not found"); string oldBaseUrl = Environment.GetEnvironmentVariable("OldFabApprovalUrl") ?? throw new ArgumentNullException("OldFabApprovalUrl environment variable not found"); string packagingAndLabelingTrainingGroupName = Environment.GetEnvironmentVariable("PackagingAndLabelingTrainingGroupName") ?? throw new ArgumentNullException("PackagingAndLabelingTrainingGroupName environment variable not found"); string siProductionTrainingGroupName = Environment.GetEnvironmentVariable("SiProductionTrainingGroupName") ?? throw new ArgumentNullException("SiProductionTrainingGroupName environment variable not found"); string userCertificationRecordsFilePath = Environment.GetEnvironmentVariable("UserCertificationRecordsFilePath") ?? throw new ArgumentNullException("UserCertificationRecordsFilePath environment variable not found"); result = new(AsmHtrTrainingGroupName: asmHtrTrainingGroupName, CleansTrainingGroupName: cleansTrainingGroupName, EpiProTrainingGroupName: epiProTrainingGroupName, BaseUrl: baseUrl, Company: "Infineon Technologies Americas Corp.", DbConnectionString: dbConnectionString, EnvironmentName: environmentName, ShouldSendEmail: shouldSendEmail, WorkerServiceMonInResource: workerServiceMonInResource, FqaTrainingGroupName: fqaTrainingGroupName, MonInSite: monInSite, NewBaseUrl: newBaseUrl, OldBaseUrl: oldBaseUrl, PackagingAndLabelingTrainingGroupName: packagingAndLabelingTrainingGroupName, SiProductionTrainingGroupName: siProductionTrainingGroupName, UserCertificationRecordsFilePath: userCertificationRecordsFilePath, WorkingDirectoryName: "IFXApps"); } catch (Exception ex) { NLog.LogManager.GetCurrentClassLogger().Error($"Unable to load environment variables, because {ex.Message}"); throw; } return result; } } [JsonSourceGenerationOptions(WriteIndented = true)] [JsonSerializable(typeof(AppSettings))] internal partial class AppSettingsSourceGenerationContext : JsonSerializerContext { }