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() { 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"); } public void SaveToSql(DBProvider provider, string type) { foreach (string key in ConfigurationManager.AppSettings.AllKeys) { string value = ConfigurationManager.AppSettings[key]; string name = key; SaveToSql(provider, type, name, value, "0"); } foreach (ConnectionStringSettings key in ConfigurationManager.ConnectionStrings) { string value = key.ConnectionString; string name = key.Name; SaveToSql(provider, type, name, value, "1"); } } private void SaveToSql(DBProvider provider, string type, string name, string value, string isConnection) { List p = new List(); p.Add(new Parametro() { ParameterName = "type", Value = type }); p.Add(new Parametro() { ParameterName = "name", Value = name }); p.Add(new Parametro() { ParameterName = "value", Value = value }); p.Add(new Parametro() { ParameterName = "isConnection", Value = isConnection }); using (DataAccessDE de = new DataAccessDE(provider)) { de.ExecuteNonQueryStoredProcedure(provider, "dbo.SetTrimestraleSettings", p); } } } }