diff --git a/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate.csproj b/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate.csproj index 04d9859..d851f65 100644 --- a/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate.csproj +++ b/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate.csproj @@ -30,6 +30,10 @@ 4 + + False + ..\..\..\..\..\Program Files (x86)\K2 blackpearl\Bin\SourceCode.Data.SmartObjectsClient.dll + False ..\..\..\..\..\Program Files (x86)\K2 blackpearl\Bin\SourceCode.HostClientAPI.dll diff --git a/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/ServiceObjects/EmailTemplate/EmailTemplateSO.cs b/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/ServiceObjects/EmailTemplate/EmailTemplateSO.cs index a5da3e1..7ecfe59 100644 --- a/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/ServiceObjects/EmailTemplate/EmailTemplateSO.cs +++ b/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/ServiceObjects/EmailTemplate/EmailTemplateSO.cs @@ -21,10 +21,11 @@ public class EmailTemplateSO : ServiceObjectBase { private PlaceholderItemCollection _placeholders; private Dictionary _inputIds; - private string _pSmoSystemName; - private string _pSmoListName; - private string _pNameProperty; - private string _pAdoNetProperty; + private readonly string _pSmoSystemName; + private readonly string _pSmoListName; + private readonly string _pNameProperty; + private readonly string _pAdoNetProperty; + private readonly string _pReturnProperty; public EmailTemplateSO(EmailTemplateServiceBroker broker) : base(broker) { @@ -38,6 +39,7 @@ public EmailTemplateSO(EmailTemplateServiceBroker broker) : base(broker) _pSmoListName = ServiceBroker.Service.ServiceConfiguration[ServiceConfig.ListMethodName].ToString(); _pNameProperty = ServiceBroker.Service.ServiceConfiguration[ServiceConfig.PlaceholderPropertyName].ToString(); _pAdoNetProperty = ServiceBroker.Service.ServiceConfiguration[ServiceConfig.AdoNetPropertyName].ToString(); + _pReturnProperty = ServiceBroker.Service.ServiceConfiguration[ServiceConfig.ReturnProperty].ToString(); } public override List DescribeServiceObjects() @@ -104,24 +106,26 @@ private void GetEmailTemplate() if (!string.IsNullOrEmpty(_pSmoSystemName)) { + SmartObjectClientServer smoServer = ServiceBroker.K2Connection.GetConnection(); using (smoServer.Connection) { var smo = smoServer.GetSmartObject(_pSmoSystemName); smo.MethodToExecute = _pSmoListName; var dt = smoServer.ExecuteListDataTable(smo); - //Getting only the placholders, which are used in the EmailSubject/EmailBody foreach (DataRow row in dt.Rows) { var placeholder = _placeholders.Wrapper + row[_pNameProperty] + _placeholders.Wrapper; + //Getting only the placholders, which are used in the EmailSubject/EmailBody if (_inputSubject.Contains(placeholder) || _inputBody.Contains(placeholder)) { - _placeholders.AddItem(row[_pNameProperty].ToString(), row[_pAdoNetProperty].ToString()); + _placeholders.AddItem(row[_pNameProperty].ToString(), row[_pAdoNetProperty].ToString(), row[_pReturnProperty].ToString()); } } - //Getting the values of the placeholders - _placeholders.GetAllValues(smoServer, _inputIds); } + //Getting the values of the placeholders + _placeholders.GetAllValues(_inputIds, ServiceBroker.K2Connection.SessionConnectionString); + } //Adding static placeholders foreach (var item in GetStaticPlaceholders()) diff --git a/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/ServiceObjects/EmailTemplate/PlaceholderItem.cs b/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/ServiceObjects/EmailTemplate/PlaceholderItem.cs index d71ae89..c6413ed 100644 --- a/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/ServiceObjects/EmailTemplate/PlaceholderItem.cs +++ b/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/ServiceObjects/EmailTemplate/PlaceholderItem.cs @@ -11,5 +11,6 @@ public class PlaceholderItem public string Name; public string AdoQuery; public string Value; + public string ReturnProperty; } } diff --git a/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/ServiceObjects/EmailTemplate/PlaceholderItemCollection.cs b/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/ServiceObjects/EmailTemplate/PlaceholderItemCollection.cs index 3de8d0a..64f69f9 100644 --- a/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/ServiceObjects/EmailTemplate/PlaceholderItemCollection.cs +++ b/K2Field.ServiceBroker.EmailTemplate/K2Field.ServiceBroker.EmailTemplate/ServiceObjects/EmailTemplate/PlaceholderItemCollection.cs @@ -5,6 +5,7 @@ using System.Text; using System.Threading.Tasks; using K2Field.ServiceBroker.EmailTemplate.Properties; +using SourceCode.Data.SmartObjectsClient; using SourceCode.SmartObjects.Client; namespace K2Field.ServiceBroker.EmailTemplate.ServiceObjects.EmailTemplate @@ -26,12 +27,13 @@ public void AddItem(string name) }; Items.Add(item); } - public void AddItem(string name, string adoQuery) + public void AddItem(string name, string adoQuery, string returnProperty) { var item = new PlaceholderItem() { Name = name, - AdoQuery = adoQuery + AdoQuery = adoQuery, + ReturnProperty = returnProperty }; Items.Add(item); } @@ -44,7 +46,7 @@ public void AddItemWithValue(string name, string value) }; Items.Add(item); } - public void GetAllValues(SmartObjectClientServer smoServer, Dictionary inputIds) + public void GetAllValues(Dictionary inputIds, string connectionString) { foreach (var p in Items) { @@ -55,13 +57,19 @@ public void GetAllValues(SmartObjectClientServer smoServer, Dictionary 0) + DataTable dt = new DataTable(); + using (SOConnection soConnection = new SOConnection(connectionString)) + using (SOCommand soCommand = new SOCommand(query, soConnection)) + using (SODataAdapter soDataAdapter = new SODataAdapter(soCommand)) { - p.Value = results.Rows[0][0].ToString(); + soDataAdapter.Fill(dt); + } + if (dt.Rows.Count > 0) + { + p.Value = dt.Rows[0][p.ReturnProperty].ToString(); } } }