public class Mailing : CodeActivity
{
[Input("Customer")]
[ReferenceTarget("contact")]
public InArgument<EntityReference> Customer { get; set; }
protected override void Execute(CodeActivityContext executionContext)
{
IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
try
{
var _pageMailing = 1;
FilterExpression filter = new FilterExpression();
//filter.Conditions.Add(new ConditionExpression("tch_created", ConditionOperator.Equal, "Today"));
QueryExpression _query = new QueryExpression("hup_mailids");
_query.ColumnSet = new ColumnSet(true);
_query.Criteria = filter;
EntityCollection List = service.RetrieveMultiple(_query);
for (int m = 0; m < List.Entities.Count; m++)
{
string url = "apiv3.emailsys.net/.../" + List.Entities[m]["hup_name"] + "/stats/activity?&page=" + _pageMailing;
JObject joResponseMailing = JObject.Parse(_request.Request(url));
JObject ojObjectMailing = (JObject)joResponseMailing["_embedded"];
JArray arrayMailing = (JArray)ojObjectMailing["mailingrecipients"];
int page_countMailing = (int)joResponseMailing["page_count"];
for (int k = 0; k < arrayMailing.Count; k++)
{
var CustomerEmail = (string)arrayMailing[k]["email"];
QueryExpression _query2 = new QueryExpression("contact");
_query2.ColumnSet = new ColumnSet(true);
FilterExpression filter2 = new FilterExpression();
filter2.Conditions.Add(new ConditionExpression("emailaddress1", ConditionOperator.Equal, CustomerEmail));
_query2.Criteria = filter;
EntityCollection List2 = service.RetrieveMultiple(_query2);
if (List2.Entities.Count > 0)
{
var rapidMailAddress = "my.rapidmail.de/.../show.html + List.Entities[m]["hup_name"];
List2.Entities[k]["hup_rapidmailaddress"] = rapidMailAddress;
service.Update(List2.Entities[k]);
}
}
for (int p = 2; p < page_countMailing; p++)
{
url = "apiv3.emailsys.net/.../" + List.Entities[m]["hup_name"] + "/stats/activity?&page=" + p;
JObject joResponseMailing2 = JObject.Parse(_request.Request(url));
JObject ojObjectMailing2 = (JObject)joResponseMailing2["_embedded"];
JArray arrayMailing2 = (JArray)ojObjectMailing2["mailingrecipients"];
int page_countMailing2 = (int)joResponseMailing2["page_count"];
for (int n = 0; n < arrayMailing2.Count; n++)
{
var CustomerEmail2 = (string)arrayMailing2[n]["email"];
QueryExpression _query3 = new QueryExpression("contact");
_query3.ColumnSet = new ColumnSet(true);
FilterExpression filter3 = new FilterExpression();
filter3.Conditions.Add(new ConditionExpression("emailaddress1", ConditionOperator.Equal, CustomerEmail2));
_query3.Criteria = filter3;
EntityCollection List3 = service.RetrieveMultiple(_query3);
if (List3.Entities.Count > 0)
{
var rapidMailAddress2 = "my.rapidmail.de/.../show.html + List.Entities[m]["hup_name"];
List3.Entities[n]["hup_rapidmailaddress"] = rapidMailAddress2;
service.Update(List3.Entities[n]);
}
}
}
}
}
catch (Exception ex)
{
new Exception("Error:" + ex.Message);
throw;
}
}
}
class _request
{
public static string Request(string _url)
{
#region Request
string username = "fdaa101384d00c86767367d575d99184be431950";
string password = "fb0cf7ca6628b474ca632fec5e483ebdc70944a2";
byte[] auth = Encoding.ASCII.GetBytes(username + ":" + password);
string encodedAuth = Convert.ToBase64String(auth);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(string.Format(_url));
request.Method = "GET";
request.ContentType = "application/hal+json";
request.Headers.Add("Authorization", "Basic " + encodedAuth);
request.Accept = "*/*";
WebResponse webResponse = request.GetResponse();
Stream webStream = webResponse.GetResponseStream();
StreamReader responseReader = new StreamReader(webStream);
string response = responseReader.ReadToEnd();
return response;
#endregion
}
}