You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
357 lines
12 KiB
357 lines
12 KiB
using Swift.DAL.Common;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Linq;
|
|
using System.Web;
|
|
|
|
namespace Swift.web.Library
|
|
{
|
|
public class CustomConfigHelper
|
|
{
|
|
public CustomConfigHelper()
|
|
{
|
|
//
|
|
// TODO: Add constructor logic here
|
|
//
|
|
}
|
|
|
|
public static class PartnerAgentConfig
|
|
{
|
|
/// <summary>
|
|
/// A list of known Configurations
|
|
/// </summary>
|
|
public static IEnumerable<ConfigDTO> ConfigListSdn { get { foreach (var config in _configListSdn) { yield return config; } } }
|
|
private static List<ConfigDTO> _configListSdn = new List<ConfigDTO>();
|
|
|
|
public static IEnumerable<ConfigDTO> ConfigList { get { foreach (var config in _configList) { yield return config; } } }
|
|
private static List<ConfigDTO> _configList = new List<ConfigDTO>();
|
|
|
|
|
|
/// <summary>
|
|
/// Constructor.
|
|
/// </summary>
|
|
static PartnerAgentConfig()
|
|
{
|
|
try
|
|
{
|
|
|
|
System.Configuration.Configuration configuration = null;
|
|
if (System.Web.HttpContext.Current != null)
|
|
{
|
|
configuration =
|
|
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
|
|
}
|
|
else
|
|
{
|
|
configuration =
|
|
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
|
|
}
|
|
|
|
MySectionGroup group = configuration.SectionGroups["CustomSection"] as MySectionGroup;
|
|
foreach (ConfigurationSection section in group.Sections)
|
|
{
|
|
if (section.GetType() == typeof(SDNListSection))
|
|
{
|
|
SDNListSection c = (SDNListSection)section;
|
|
CustomConfigCollection coll = c.SDNListSetting;
|
|
|
|
foreach (CustomConfigElement element in coll)
|
|
{
|
|
AddCustomItem(element, SectionCategory.SDNListSection);
|
|
}
|
|
}
|
|
else if (section.GetType() == typeof(PartnerAgentSection))
|
|
{
|
|
PartnerAgentSection c = (PartnerAgentSection)section;
|
|
CustomConfigCollection coll = c.PartnerAgentConfig;
|
|
foreach (CustomConfigElement element in coll)
|
|
{
|
|
AddCustomItem(element, SectionCategory.PartnerAgentSection);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
}
|
|
|
|
private static void AddCustomItem(CustomConfigElement element, SectionCategory sectionCat)
|
|
{
|
|
var configObj = new ConfigDTO()
|
|
{
|
|
Key = element.Key,
|
|
Name = element.Name,
|
|
UserName = element.UserName,
|
|
Password = element.Password,
|
|
Field1 = element.Field1,
|
|
Field2 = element.Field2,
|
|
Field3 = element.Field3,
|
|
Field4 = element.Field4,
|
|
ToEmail = element.ToEmail,
|
|
ToEmailCc = element.ToEmailCc,
|
|
ToEmailBCc = element.ToEmailBCc,
|
|
URL = element.URL,
|
|
Active = element.Active
|
|
};
|
|
AddConfig(configObj, sectionCat);
|
|
}
|
|
|
|
public static bool ParseBoolean(string val)
|
|
{
|
|
bool retVal;
|
|
Boolean.TryParse(val, out retVal);
|
|
|
|
return retVal;
|
|
}
|
|
|
|
public static void AddConfig(ConfigDTO config, SectionCategory section)
|
|
{
|
|
if (config == null || !config.IsValid)
|
|
return;
|
|
|
|
if (section== SectionCategory.PartnerAgentSection)
|
|
{
|
|
if (!_configList.Contains(config))
|
|
_configList.Add(config);
|
|
}
|
|
else if(section == SectionCategory.SDNListSection)
|
|
{
|
|
|
|
if (!_configListSdn.Contains(config))
|
|
_configListSdn.Add(config);
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get single record by Key
|
|
/// </summary>
|
|
/// <param name="key"></param>
|
|
/// <returns></returns>
|
|
public static ConfigDTO GetParentConfig(string key, SectionCategory section = SectionCategory.PartnerAgentSection)
|
|
{
|
|
|
|
if (ConfigList.Any())
|
|
{
|
|
var single = ConfigList.SingleOrDefault(x => x.Key == key);
|
|
if (single != null)
|
|
return single;
|
|
else
|
|
throw new ArgumentException("No Configurations found for: " + key);
|
|
}
|
|
else
|
|
throw new ArgumentException("No Configurations found");
|
|
}
|
|
|
|
public static List<ConfigDTO> GetParentConfig(SectionCategory section = SectionCategory.SDNListSection)
|
|
{
|
|
if (section == SectionCategory.SDNListSection)
|
|
{
|
|
if (ConfigListSdn.Any())
|
|
{
|
|
return ConfigListSdn.ToList();
|
|
}
|
|
}
|
|
else if (section == SectionCategory.PartnerAgentSection)
|
|
{
|
|
if (ConfigList.Any())
|
|
{
|
|
return ConfigList.ToList();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
throw new ArgumentException("No Configurations found for: " + section);
|
|
|
|
}
|
|
return new List<ConfigDTO>();
|
|
}
|
|
}
|
|
|
|
public enum SectionCategory
|
|
{
|
|
PartnerAgentSection,
|
|
SDNListSection
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#region Custom Config Helper
|
|
|
|
#region MySection Group
|
|
public class MySectionGroup : ConfigurationSectionGroup
|
|
{
|
|
[ConfigurationProperty("SDNListSetting", IsRequired = false)]
|
|
public SDNListSection SDNListSetting
|
|
{
|
|
get { return (SDNListSection)base.Sections["SDNListSetting"]; }
|
|
}
|
|
|
|
[ConfigurationProperty("PartnerAgentSection", IsRequired = false)]
|
|
public PartnerAgentSection PartnerAgentSettings
|
|
{
|
|
get { return (PartnerAgentSection)base.Sections["PartnerAgentSection"]; }
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region ConfigurationSection
|
|
|
|
public class PartnerAgentSection : ConfigurationSection
|
|
{
|
|
public const string SectionName = "PartnerAgentSection";
|
|
|
|
[ConfigurationProperty("PartnerAgentConfig")]
|
|
public CustomConfigCollection PartnerAgentConfig
|
|
{
|
|
get { return ((CustomConfigCollection)(base["PartnerAgentConfig"])); }
|
|
}
|
|
}
|
|
public class SDNListSection : ConfigurationSection
|
|
{
|
|
public const string SectionName = "SDNListSection";
|
|
[ConfigurationProperty("SDNListSetting")]
|
|
public CustomConfigCollection SDNListSetting
|
|
{
|
|
get { return ((CustomConfigCollection)(base["SDNListSetting"])); }
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ConfigurationElementCollection
|
|
|
|
[ConfigurationCollection(typeof(CustomConfigElement))]
|
|
public class CustomConfigCollection : ConfigurationElementCollection
|
|
{
|
|
protected override ConfigurationElement CreateNewElement()
|
|
{
|
|
return new CustomConfigElement();
|
|
}
|
|
|
|
protected override object GetElementKey(ConfigurationElement element)
|
|
{
|
|
return ((CustomConfigElement)(element)).Key;
|
|
}
|
|
|
|
public CustomConfigElement this[int idx]
|
|
{
|
|
get
|
|
{
|
|
return (CustomConfigElement)BaseGet(idx);
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ConfigurationElement
|
|
|
|
public class CustomConfigElement : ConfigurationElement
|
|
{
|
|
|
|
[ConfigurationProperty("key", DefaultValue = "", IsKey = true, IsRequired = false)]
|
|
public string Key
|
|
{
|
|
get { return (string)this["key"]; }
|
|
set { this["key"] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty("name", DefaultValue = "",
|
|
IsKey = false, IsRequired = true)]
|
|
public string Name
|
|
{
|
|
get { return (string)this["name"]; }
|
|
set { this["name"] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty("username", DefaultValue = "", IsKey = false, IsRequired = false)]
|
|
public string UserName
|
|
{
|
|
get { return (string)this["username"]; }
|
|
set { this["username"] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty("password", DefaultValue = "", IsKey = false, IsRequired = false)]
|
|
public string Password
|
|
{
|
|
get { return (string)this["password"]; }
|
|
set { this["password"] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty("field1", DefaultValue = "", IsKey = false, IsRequired = false)]
|
|
public string Field1
|
|
{
|
|
get { return (string)this["field1"]; }
|
|
set { this["field1"] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty("field2", DefaultValue = "", IsKey = false, IsRequired = false)]
|
|
public string Field2
|
|
{
|
|
get { return (string)this["field2"]; }
|
|
set { this["field2"] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty("field3", DefaultValue = "", IsKey = false, IsRequired = false)]
|
|
public string Field3
|
|
{
|
|
get { return (string)this["field3"]; }
|
|
set { this["field3"] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty("field4", DefaultValue = "", IsKey = false, IsRequired = false)]
|
|
public string Field4
|
|
{
|
|
get { return (string)this["field4"]; }
|
|
set { this["field4"] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty("toEmail", DefaultValue = "", IsKey = false, IsRequired = false)]
|
|
public string ToEmail
|
|
{
|
|
get { return (string)this["toEmail"]; }
|
|
set { this["toEmail"] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty("toEmailCc", DefaultValue = "", IsKey = false, IsRequired = false)]
|
|
public string ToEmailCc
|
|
{
|
|
get { return (string)this["toEmailCc"]; }
|
|
set { this["toEmailCc"] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty("toEmailBCc", DefaultValue = "", IsKey = false, IsRequired = false)]
|
|
public string ToEmailBCc
|
|
{
|
|
get { return (string)this["toEmailBCc"]; }
|
|
set { this["toEmailBCc"] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty("url", DefaultValue = "", IsKey = false, IsRequired = false)]
|
|
public string URL
|
|
{
|
|
get { return (string)this["url"]; }
|
|
set { this["url"] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty("active", DefaultValue = "", IsKey = false, IsRequired = false)]
|
|
public string Active
|
|
{
|
|
get { return (string)this["active"]; }
|
|
set { this["active"] = value; }
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
|
|
}
|