/// <summary> /// Adds new filter. /// </summary> /// <param name="description">Filter description</param> /// <param name="assembly">Assembly with full location. Eg. C:\MailServer\Filters\filter.dll .</param> /// <param name="className">Filter full class name, wih namespace. Eg. LumiSoft.MailServer.Fileters.Filter1 .</param> /// <param name="cost">Filters are sorted by cost and proccessed with cost value. Smallest cost is proccessed first.</param> /// <param name="enabled">Specifies if filter is enabled.</param> /// <returns></returns> public DataRow AddFilter(string description,string assembly,string className,int cost,bool enabled) { DataRow retVal = null; switch(m_DB_Type) { #region DB_Type.XML case DB_Type.XML: DataSet dsFiltersCopy = dsFilters.Copy(); DataRow dr = dsFiltersCopy.Tables["SmtpFilters"].NewRow(); dr["FilterID"] = Guid.NewGuid().ToString(); dr["Description"] = description; dr["Assembly"] = assembly; dr["ClassName"] = className; dr["Cost"] = cost; dr["Enabled"] = enabled; dsFiltersCopy.Tables["SmtpFilters"].Rows.Add(dr); dsFiltersCopy.WriteXml(m_DataPath + "Filters.xml",XmlWriteMode.IgnoreSchema); return dr; #endregion #region DB_Type.MSSQL case DB_Type.MSSQL: DataSet dsFiltersCopy2 = dsFilters.Copy(); DataRow dr2 = dsFiltersCopy2.Tables["SmtpFilters"].NewRow(); dr2["FilterID"] = Guid.NewGuid().ToString(); dr2["Description"] = description; dr2["Assembly"] = assembly; dr2["ClassName"] = className; dr2["Cost"] = cost; dr2["Enabled"] = enabled; dsFiltersCopy2.Tables["SmtpFilters"].Rows.Add(dr2); dsFiltersCopy2.WriteXml(m_DataPath + "Filters.xml",XmlWriteMode.IgnoreSchema); return dr2; #endregion #region DB_Type.WebServices case DB_Type.WebServices: using(RemoteAdmin eng = new RemoteAdmin()){ _Core.InitWebService(m_WebServicesUrl,m_WebServicesPwd,m_WebServicesUser,eng); return eng.AddFilter(description,assembly,className,cost,enabled).Tables["SmtpFilters"].Rows[0]; } #endregion } return retVal; }