TP_SEI_Project/root/ContrattoSEI/AppConfigParser/SqlConfigurationParser.cs
2025-06-03 15:11:16 +02:00

71 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DataAccessLayer;
using System.Configuration;
using System.Xml.Linq;
namespace AppConfigParser
{
public class SqlConfigurationParser
{
public void Dispose()
{
}
public void LoadFromSql(DBProvider provider, string type)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
using (DataAccessDE de = new DataAccessDE(provider))
{
using (var r = de.ExecuteDataReaderStoredProcedure(provider, "dbo.GetTrimestraleSettings", new List<Parametro>() { new Parametro() { ParameterName = "Type", Value = type } }))
{
while (r.Read())
{
bool isConnectionString = r["IsConnection"].ToString() == "1";
string name = r["ParameterName"].ToString();
string value = r["ParameterValue"].ToString();
string description = r["ParameterDescription"].ToString();
if (!isConnectionString)
{
ConfigurationManager.AppSettings[name] = value;
if (config.AppSettings.Settings[name] != null)
{
config.AppSettings.Settings[name].Value = value;
}
else
{
config.AppSettings.Settings.Add(name, value);
}
}
else
{
if (config.ConnectionStrings.ConnectionStrings[name] != null)
{
config.ConnectionStrings.ConnectionStrings[name].ConnectionString = value;
}
else
{
config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings(name, value));
}
}
}
}
}
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appConfig");
ConfigurationManager.RefreshSection("connectionStrings");
}
}
}