コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
        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());
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
            }
        }
コード例 #10
0
        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);
            }
        }