using System; using System.Collections.Generic; using System.Configuration; using System.Linq; namespace Fab2ApprovalSystem.Models; public class AppSettings { internal AppSettings(string adminNotificationRecepient, string? apiBaseUrl, string attachmentFolder, string? attachmentUrl, string caBlankFormsLocation, string? company, string dBConnection, string dbConnectionString, string ftpPassword, string ftpServer, string ftpUser, string holdFlagDirectory, string hostURL, string ifxContainer, string ifxDomain, bool isInfineonDomain, string lotTempPipeLine, string mesaTemplateFiles, string naContainer, string naDomain, string nDriveURL, string notificationSender, string senderEmail, string? smtpServer, string spnMRBHoldFlagFTPLogDirectory, string testEmailRecipients, string urls, int userId, bool userIsAdmin, string wsrURL, string? workingDirectoryName) { AdminNotificationRecepient = adminNotificationRecepient; ApiBaseUrl = apiBaseUrl; AttachmentFolder = attachmentFolder; AttachmentUrl = attachmentUrl; CABlankFormsLocation = caBlankFormsLocation; Company = company; DBConnection = dBConnection; DBConnectionString = dbConnectionString; FTPPassword = ftpPassword; FTPServer = ftpServer; FTPUser = ftpUser; HoldFlagDirectory = holdFlagDirectory; HostURL = hostURL; IFXContainer = ifxContainer; IFXDomain = ifxDomain; IsInfineonDomain = isInfineonDomain; LotTempPipeLine = lotTempPipeLine; MesaTemplateFiles = mesaTemplateFiles; NAContainer = naContainer; NADomain = naDomain; NDriveURL = nDriveURL; NotificationSender = notificationSender; SenderEmail = senderEmail; SMTPServer = smtpServer; SPNMRBHoldFlagFTPLogDirectory = spnMRBHoldFlagFTPLogDirectory; TestEmailRecipients = testEmailRecipients; URLs = urls; UserId = userId; UserIsAdmin = userIsAdmin; WSR_URL = wsrURL; WorkingDirectoryName = workingDirectoryName; } public string AdminNotificationRecepient { get; } public string? ApiBaseUrl { get; } public string AttachmentFolder { get; } public string? AttachmentUrl { get; } public string CABlankFormsLocation { get; } public string? Company { get; } public string DBConnection { get; } public string DBConnectionString { get; } public string FTPPassword { get; } public string FTPServer { get; } public string FTPUser { get; } public string HoldFlagDirectory { get; } public string HostURL { get; } public string IFXContainer { get; } public string IFXDomain { get; } public bool IsInfineonDomain { get; } public string LotTempPipeLine { get; } public string MesaTemplateFiles { get; } public string NAContainer { get; } public string NADomain { get; } public string NDriveURL { get; } public string NotificationSender { get; } public string SenderEmail { get; } public string? SMTPServer { get; } public string SPNMRBHoldFlagFTPLogDirectory { get; } public string TestEmailRecipients { get; } public string URLs { get; } public int UserId { get; } public bool UserIsAdmin { get; } public string WSR_URL { get; } public string? WorkingDirectoryName { get; } #if NET8 public static AppSettings Get(Microsoft.Extensions.Configuration.IConfigurationRoot configurationRoot) { AppSettings? result; try { #pragma warning disable IL3050, IL2026 result = Microsoft.Extensions.Configuration.ConfigurationBinder.Get(configurationRoot) ?? throw new Exception(); #pragma warning restore IL3050, IL2026 } catch (Exception) { List paths = []; foreach (Microsoft.Extensions.Configuration.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; } #endif internal static AppSettings LoadConfigurationManager() { AppSettings result; int userId = 0; string adminNotificationRecepient = ConfigurationManager.ConnectionStrings["Admin Notification Recepient"].ToString(); string attachmentFolder = ConfigurationManager.ConnectionStrings["AttachmentFolder"].ToString(); string ftpPassword = ConfigurationManager.ConnectionStrings["FTP Password"].ToString(); string ftpServer = ConfigurationManager.ConnectionStrings["FTP Server"].ToString(); string ftpUser = ConfigurationManager.ConnectionStrings["FTP User"].ToString(); string holdFlagDirectory = ConfigurationManager.ConnectionStrings["HoldFlagDirectory"].ToString(); string ifxContainer = ConfigurationManager.ConnectionStrings["IFXContainer"].ToString(); string ifxDomain = ConfigurationManager.ConnectionStrings["IFXDomain"].ToString(); string lotTempPipeLine = ConfigurationManager.ConnectionStrings["LotTempPipeLine"].ToString(); string naContainer = ConfigurationManager.ConnectionStrings["NAContainer"].ToString(); string naDomain = ConfigurationManager.ConnectionStrings["NADomain"].ToString(); string notificationSender = ConfigurationManager.ConnectionStrings["Notification Sender"].ToString(); string spnMRBHoldFlagFTPLogDirectory = ConfigurationManager.ConnectionStrings["SPNMRBHoldFlagFTPLogDirectory"].ToString(); string testEmailRecipients = ConfigurationManager.ConnectionStrings["Test Email Recipients"].ToString(); string? apiBaseUrl = ConfigurationManager.ConnectionStrings["FabApprovalApiBaseUrl"]?.ToString(); string? attachmentUrl = ConfigurationManager.ConnectionStrings["AttachmentUrl"]?.ToString(); string? company = ConfigurationManager.ConnectionStrings["Company"]?.ToString(); string? smtpServer = ConfigurationManager.ConnectionStrings["SMTP Server"]?.ToString(); string? urls = ConfigurationManager.ConnectionStrings["URLs"]?.ToString(); string? workingDirectoryName = ConfigurationManager.ConnectionStrings["WorkingDirectoryName"]?.ToString(); result = new(adminNotificationRecepient: adminNotificationRecepient, apiBaseUrl: apiBaseUrl, attachmentFolder: attachmentFolder, attachmentUrl: attachmentUrl, caBlankFormsLocation: Misc.GlobalVars.CA_BlankFormsLocation, company: company, dBConnection: Misc.GlobalVars.DBConnection, dbConnectionString: Misc.GlobalVars.DB_CONNECTION_STRING, ftpPassword: ftpPassword, ftpServer: ftpServer, ftpUser: ftpUser, holdFlagDirectory: holdFlagDirectory, hostURL: Misc.GlobalVars.hostURL, ifxContainer: ifxContainer, ifxDomain: ifxDomain, isInfineonDomain: Misc.GlobalVars.IS_INFINEON_DOMAIN, lotTempPipeLine: lotTempPipeLine, mesaTemplateFiles: Misc.GlobalVars.MesaTemplateFiles, naContainer: naContainer, naDomain: naDomain, nDriveURL: Misc.GlobalVars.NDriveURL, notificationSender: notificationSender, senderEmail: Misc.GlobalVars.SENDER_EMAIL, smtpServer: smtpServer, spnMRBHoldFlagFTPLogDirectory: spnMRBHoldFlagFTPLogDirectory, testEmailRecipients: testEmailRecipients, urls: urls, userId: userId, userIsAdmin: Misc.GlobalVars.USER_ISADMIN, wsrURL: Misc.GlobalVars.WSR_URL, workingDirectoryName: workingDirectoryName); return result; } }