protected override void Execute(CodeActivityContext executionContext)
{
try
{
if (executionContext == null)
{
throw new InvalidPluginExecutionException("Context is Null");
}
IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
IWorkflowContext workflowContext = executionContext.GetExtension<IWorkflowContext>();
IOrganizationService service = serviceFactory.CreateOrganizationService(workflowContext.UserId);
RetrieveRequest getEmail = new RetrieveRequest();
getEmail.ColumnSet = new ColumnSet(new string[] { "siml_campaigncommunicationguid" });
getEmail.Target = new EntityReference("email", workflowContext.PrimaryEntityId);
RetrieveResponse currEmailResp = (RetrieveResponse)service.Execute(getEmail);
Entity currEmail = (Entity)currEmailResp.Entity;
Guid campaignCommunicationId = new Guid(currEmail.Attributes["siml_campaigncommunicationguid"].ToString());
////Guid campaignCommunicationId = new Guid("1B8B3934-B4E9-DF11-9307-001E4F330EB3");
RetrieveRequest req = new RetrieveRequest();
req.Target = new EntityReference("campaignactivity", campaignCommunicationId);
req.ColumnSet = new ColumnSet(new string[] { "i5_channel", "subject", "regardingobjectid", "ownerid" });
RetrieveResponse resp = (RetrieveResponse)service.Execute(req);
Entity campComm = (Entity)resp.Entity;
int campaignCommunicationChannel = ((OptionSetValue)campComm.Attributes["i5_channel"]).Value;
string entityToUse = String.Empty;
switch (campaignCommunicationChannel)
{
case 1:
entityToUse = "letter";
break;
case 2:
entityToUse = "email";
break;
default:
break;
}
CampaignCommunicationValidator.Validator camCommValidator = new CampaignCommunicationValidator.Validator(service, campaignCommunicationId);
List<Entity> contactsInCommunication = camCommValidator.GetValidContacts();
foreach (Entity recipient in contactsInCommunication)
{
Entity activityParty = new Entity("activityparty");
activityParty.Attributes.Add("partyid", new EntityReference("contact", ((Guid)recipient.Attributes["contactid"])));
Entity communicationActivity = new Entity(entityToUse);
communicationActivity.Attributes.Add("subject", campComm.Attributes["subject"].ToString());
communicationActivity.Attributes.Add("to", activityParty);
communicationActivity.Attributes.Add("description", "Campaign Communication Generated Activity.");
communicationActivity.Attributes.Add("regardingobjectid", new EntityReference("contact", ((Guid)recipient.Attributes["contactid"])));
communicationActivity.Attributes.Add("ownerid", new EntityReference("systemuser", ((EntityReference)campComm.Attributes["ownerid"]).Id));
service.Create(communicationActivity);
Thread.Sleep(1000);
}
}
catch (SoapException ex)
{
WriteMsg(String.Format("SoapEx: {0}", ex.Detail.InnerText));
WriteMsg(ex.StackTrace);
}
catch (Exception ex)
{
WriteMsg(String.Format("Ex: {0}", ex.Message));
WriteMsg(ex.StackTrace);
}
}
private void WriteMsg(string message)
{
Trace.TraceInformation("{0} - {1}", DateTime.Now.ToString("yyyy/MM/dd H:mm:ss"), message);
}
}
{
try
{
if (executionContext == null)
{
throw new InvalidPluginExecutionException("Context is Null");
}
IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
IWorkflowContext workflowContext = executionContext.GetExtension<IWorkflowContext>();
IOrganizationService service = serviceFactory.CreateOrganizationService(workflowContext.UserId);
RetrieveRequest getEmail = new RetrieveRequest();
getEmail.ColumnSet = new ColumnSet(new string[] { "siml_campaigncommunicationguid" });
getEmail.Target = new EntityReference("email", workflowContext.PrimaryEntityId);
RetrieveResponse currEmailResp = (RetrieveResponse)service.Execute(getEmail);
Entity currEmail = (Entity)currEmailResp.Entity;
Guid campaignCommunicationId = new Guid(currEmail.Attributes["siml_campaigncommunicationguid"].ToString());
////Guid campaignCommunicationId = new Guid("1B8B3934-B4E9-DF11-9307-001E4F330EB3");
RetrieveRequest req = new RetrieveRequest();
req.Target = new EntityReference("campaignactivity", campaignCommunicationId);
req.ColumnSet = new ColumnSet(new string[] { "i5_channel", "subject", "regardingobjectid", "ownerid" });
RetrieveResponse resp = (RetrieveResponse)service.Execute(req);
Entity campComm = (Entity)resp.Entity;
int campaignCommunicationChannel = ((OptionSetValue)campComm.Attributes["i5_channel"]).Value;
string entityToUse = String.Empty;
switch (campaignCommunicationChannel)
{
case 1:
entityToUse = "letter";
break;
case 2:
entityToUse = "email";
break;
default:
break;
}
CampaignCommunicationValidator.Validator camCommValidator = new CampaignCommunicationValidator.Validator(service, campaignCommunicationId);
List<Entity> contactsInCommunication = camCommValidator.GetValidContacts();
foreach (Entity recipient in contactsInCommunication)
{
Entity activityParty = new Entity("activityparty");
activityParty.Attributes.Add("partyid", new EntityReference("contact", ((Guid)recipient.Attributes["contactid"])));
Entity communicationActivity = new Entity(entityToUse);
communicationActivity.Attributes.Add("subject", campComm.Attributes["subject"].ToString());
communicationActivity.Attributes.Add("to", activityParty);
communicationActivity.Attributes.Add("description", "Campaign Communication Generated Activity.");
communicationActivity.Attributes.Add("regardingobjectid", new EntityReference("contact", ((Guid)recipient.Attributes["contactid"])));
communicationActivity.Attributes.Add("ownerid", new EntityReference("systemuser", ((EntityReference)campComm.Attributes["ownerid"]).Id));
service.Create(communicationActivity);
Thread.Sleep(1000);
}
}
catch (SoapException ex)
{
WriteMsg(String.Format("SoapEx: {0}", ex.Detail.InnerText));
WriteMsg(ex.StackTrace);
}
catch (Exception ex)
{
WriteMsg(String.Format("Ex: {0}", ex.Message));
WriteMsg(ex.StackTrace);
}
}
private void WriteMsg(string message)
{
Trace.TraceInformation("{0} - {1}", DateTime.Now.ToString("yyyy/MM/dd H:mm:ss"), message);
}
}
No comments:
Post a Comment