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();
}
}
}