protected override void Execute(CodeActivityContext context) { ITracingService tracing = context.GetExtension <ITracingService>(); IWorkflowContext workflowContext = context.GetExtension <IWorkflowContext>(); IOrganizationService service = context.GetExtension <IOrganizationServiceFactory>().CreateOrganizationService(workflowContext.InitiatingUserId); FuncLibrary aux = new FuncLibrary(); find_marketingautomationintegration sendGridAccount = aux.GetMailchimpInfo(service); Apihelper.InitializeClient(sendGridAccount.find_SendGridIntegration); ApiRoot apiRoot = new ApiRoot(); List list = service.Retrieve(MarketingList.Get(context).LogicalName, MarketingList.Get(context).Id, new ColumnSet("find_sendgridid")).ToEntity <List>(); Campaign campaign = service.Retrieve(Campaign.Get(context).LogicalName, Campaign.Get(context).Id, new ColumnSet("name")).ToEntity <Campaign>(); EntityReference memberReference = new EntityReference(MemberType.Get(context), new Guid(MemberId.Get(context))); find_metric metric = GetMetricByCampaign(service, campaign); if (HasMetricDetailsToMember(service, metric, memberReference)) { return; } CreateMetricDetails(service, metric, memberReference); SyncMemberTypeToSendGrid(service, memberReference, list, apiRoot, tracing); }
private void UpdateAsync(IPluginExecutionContext context, IOrganizationService service, ITracingService tracingService) { CrmEarlyBound.Campaign target = ((Entity)context.InputParameters["Target"]).ToEntity <CrmEarlyBound.Campaign>(); CrmEarlyBound.Campaign campaign = service.Retrieve(target.LogicalName, target.Id, new ColumnSet("name", "find_platformmarketing", "find_fromname", "find_subject", "find_mailchimpcampaignid", "find_sendgridid")).ToEntity <CrmEarlyBound.Campaign>(); if (target.Attributes.ContainsKey("find_crm_integration_count")) { if (campaign.find_PlatformMarketing == false) { tracingService.Trace("a"); OrganizationRequest request = new OrganizationRequest("find_SyncMailchimpToCrm"); request.Parameters["Campaign"] = target.ToEntityReference(); service.Execute(request); } else { OrganizationRequest request = new OrganizationRequest("find_SyncSendgridToCrm"); request.Parameters["Campaign"] = target.ToEntityReference(); service.Execute(request); } } else if (target.Attributes.ContainsKey("find_mailchimp_integration_count")) { List <List> listsToUpdate = GetAllMarketingListsAssociatedToCampaign(service, target); if (listsToUpdate.Count == 0) { target.find_mailchimp_integration_count = 0; return; } FuncLibrary aux = new FuncLibrary(); find_marketingautomationintegration mailChimpAccount = aux.GetMailchimpInfo(service); ApiRoot root = new ApiRoot(); if (campaign.find_PlatformMarketing == false) { ProcessMailChimpListsAndCampaign(service, campaign, mailChimpAccount, root, listsToUpdate); } else { ProcessSendGridLists(service, campaign, mailChimpAccount, root, listsToUpdate); } foreach (List list in listsToUpdate) { list.find_mailchimp_integration_count++; service.Update(list); } } else if (target.Attributes.ContainsKey("find_mail_integration_started")) { target.find_crm_integration_count = 1; service.Update(target); } }
private void SendCampaingInMailChimp(IOrganizationService service, Campaign campaign) { FuncLibrary aux = new FuncLibrary(); find_marketingautomationintegration mailChimpObj = aux.GetMailchimpInfo(service); ApiRoot root = new ApiRoot(); if (SendEmails(campaign, mailChimpObj, root)) { campaign.find_mail_integration_started = true; service.Update(campaign); } }
private void ScheduleCampaign(IOrganizationService service, Campaign campaign, string dateTime) { FuncLibrary aux = new FuncLibrary(); find_marketingautomationintegration mailChimpObj = aux.GetMailchimpInfo(service); ApiRoot root = new ApiRoot(); if (campaign.find_PlatformMarketing == false) { PostActionScheduleMail(service, campaign, mailChimpObj, root, dateTime); } else { PutScheduleNow(service, campaign, mailChimpObj, root, dateTime); } }
private void TestActionCampaign(IOrganizationService service, Campaign campaign, string emails, ITracingService tracing) { FuncLibrary aux = new FuncLibrary(); find_marketingautomationintegration mailChimpObj = aux.GetMailchimpInfo(service); ApiRoot root = new ApiRoot(); if (campaign.find_PlatformMarketing == false) { tracing.Trace("aq"); PostActionSendTestEmailsMailchimp(campaign, mailChimpObj, root, emails, tracing); } else { PostActionSendTestEmailsSendGrid(mailChimpObj, root, emails); } }
protected override void Execute(CodeActivityContext context) { ITracingService tracing = context.GetExtension <ITracingService>(); IWorkflowContext workflowContext = context.GetExtension <IWorkflowContext>(); IOrganizationService service = context.GetExtension <IOrganizationServiceFactory>().CreateOrganizationService(workflowContext.InitiatingUserId); FuncLibrary aux = new FuncLibrary(); find_marketingautomationintegration mailChimpAccount = aux.GetMailchimpInfo(service); ApiRoot root = new ApiRoot(); Campaign campaign = service.Retrieve(Campaign.Get(context).LogicalName, Campaign.Get(context).Id, new ColumnSet("find_platformmarketing", "find_fromname", "find_subject", "name", "find_mailchimpcampaignid", "find_sendgridid")).ToEntity <Campaign>(); Guid newGuidCampaign = CreateCopyFromCampaign(service, campaign, root, mailChimpAccount); CampaingId.Set(context, newGuidCampaign.ToString()); tracing.Trace(CampaingId.ToString()); }
protected override void Execute(CodeActivityContext context) { ITracingService tracing = context.GetExtension <ITracingService>(); IWorkflowContext workflowContext = context.GetExtension <IWorkflowContext>(); IOrganizationService service = context.GetExtension <IOrganizationServiceFactory>().CreateOrganizationService(workflowContext.InitiatingUserId); FuncLibrary aux = new FuncLibrary(); find_marketingautomationintegration accountObj = aux.GetMailchimpInfo(service); Apihelper.InitializeClient(accountObj.find_SendGridIntegration); ApiRoot root = new ApiRoot(); Campaign campaign = service.Retrieve(Campaign.Get(context).LogicalName, Campaign.Get(context).Id, new ColumnSet("name", "find_sendgridid")).ToEntity <Campaign>(); find_metric metric = GetMetricByCampaign(service, campaign); UpdateMetric(service, root, campaign, metric, tracing); }
protected override void Execute(CodeActivityContext context) { ITracingService tracing = context.GetExtension <ITracingService>(); IWorkflowContext workflowContext = context.GetExtension <IWorkflowContext>(); IOrganizationService service = context.GetExtension <IOrganizationServiceFactory>().CreateOrganizationService(workflowContext.InitiatingUserId); FuncLibrary aux = new FuncLibrary(); find_marketingautomationintegration mailChimpObj = aux.GetMailchimpInfo(service); Apihelper.InitializeClient(mailChimpObj.find_MailChimpIntegration); ApiRoot root = new ApiRoot(); string[] server = mailChimpObj.find_MailChimpIntegration.Split('-'); Campaign campaign = service.Retrieve(Campaign.Get(context).LogicalName, Campaign.Get(context).Id, new ColumnSet("name", "find_mailchimpcampaignid")).ToEntity <Campaign>(); find_metric metric = GetMetricByCampaign(service, campaign); List <find_metricdetails> metricDetailsList = GetMetricDetailsByMetric(service, metric); ProcessAtivitiesByMember(service, metricDetailsList, aux, root, server[1], campaign, metric, tracing); }
private void ProcessAtivitiesByMember(IOrganizationService service, List <find_metricdetails> metricDetailsList, FuncLibrary aux, ApiRoot root, string server, Campaign campaign, find_metric metric, ITracingService tracing) { bool anyUpdate = false; foreach (find_metricdetails metricDetails in metricDetailsList) { int numOpens = 0, numClicks = 0; string md5mail = aux.GetMailMd(GetMailFromMember(service, metricDetails)); DateTime?lastUpdate = GetLastUpdateByMetricDetail(service, metricDetails); List <Class.Reports.Activity> activitiesList = GetlastActivityByMetricDetail(root, server, campaign, md5mail).Activity; if (activitiesList.Count != 0 && lastUpdate == null) { ProcessAtivities(service, metricDetails, numOpens, numClicks, activitiesList, tracing); anyUpdate = true; } else if (activitiesList.Count != 0 && GetDateTimeFromLastActivity(activitiesList, (DateTime)lastUpdate).Count != 0) { ProcessAtivities(service, metricDetails, numOpens, numClicks, GetDateTimeFromLastActivity(activitiesList, (DateTime)lastUpdate), tracing); anyUpdate = true; } UpdateOpensAndClicksMetricDetails(service, metricDetails, numOpens, numClicks); } if (anyUpdate) { UpdateMetric(service, root, server, campaign, metric); } }
private void SyncMemberTypeToMailChimp(IOrganizationService service, EntityReference memberId, List list, ApiRoot root, string server, find_marketingautomationintegration mailChimpAccount, FuncLibrary aux) { string mail = "", sub = ""; switch (memberId.LogicalName) { case "account": Account account = service.Retrieve(memberId.LogicalName, memberId.Id, new ColumnSet("emailaddress1", "find_sub")).ToEntity <Account>(); mail = account.EMailAddress1; sub = account.find_Sub.ToString(); break; case "contact": Contact contact = service.Retrieve(memberId.LogicalName, memberId.Id, new ColumnSet("emailaddress1", "find_sub")).ToEntity <Contact>(); mail = contact.EMailAddress1; sub = contact.find_Sub.ToString(); break; case "lead": Lead lead = service.Retrieve(memberId.LogicalName, memberId.Id, new ColumnSet("emailaddress1", "find_sub")).ToEntity <Lead>(); mail = lead.EMailAddress1; sub = lead.find_Sub.ToString(); break; } if (CheckIfMemberIsMailChimp(root, server, mailChimpAccount.find_MailchimpListId, aux.GetMailMd(mail))) { PutMemberToMailChimp(root, server, mailChimpAccount.find_MailchimpListId, aux.GetMailMd(mail), list, mail); } else { PostMemberToMailChimp(root, server, mailChimpAccount.find_MailchimpListId, mail, sub, list); } }