private void ExecuteImmediateCampaignStep(UserConnection userConnection, Guid campaignId, Guid stepId,
                                                  Guid contactId)
        {
            KeyValuePair <int, string> contactData = GetContactMailingDataById(userConnection, contactId);
            int    contactRId   = contactData.Key;
            string contactEmail = contactData.Value;
            KeyValuePair <Guid, int> bulkEmailInfo = CampaignHelper.GetImmediatelyTriggerBulkEmailIdentifierByStepId(
                userConnection, stepId);

            if (bulkEmailInfo.Key.IsEmpty())
            {
                return;
            }
            Guid bulkEmailId   = bulkEmailInfo.Key;
            int  bulkEmailRId  = bulkEmailInfo.Value;
            var  jobParameters = new Dictionary <string, object> {
                { "ApplicationUrl", string.Empty },
                { "CampaignId", campaignId },
                { "BulkEmailId", bulkEmailId },
                { "BulkEmailRId", bulkEmailRId },
                { "BulkEmailStepId", stepId },
                { "ContactId", contactId },
                { "ContactRId", contactRId },
                { "ContactEmail", contactEmail }
            };

            CampaignHelper.CreateSendEmailImmediatelyJob(userConnection, jobParameters);
        }
        /// <summary>
        /// Insert or update contact into every campaign where given landing is used.
        /// </summary>
        /// <param name="contactId">Uniqie identifier of contact.</param>
        public void MergeContactIntoCampaign(Guid contactId)
        {
            if (contactId.IsEmpty())
            {
                return;
            }
            Dictionary <Guid, Guid> campaignList = CampaignHelper.GetCampaignListByLandingId(_userConnection, _webFormId);
            CampaignStepsHandler    stepsHandler = null;

            if (!campaignList.Any())
            {
                return;
            }
            stepsHandler = GetHandler(_userConnection);
            foreach (KeyValuePair <Guid, Guid> campaign in campaignList)
            {
                Guid campaignId    = campaign.Key;
                Guid landingStepId = campaign.Value;
                if (!CampaignHelper.CanMergeContactIntoCampaign(_userConnection, campaignId, landingStepId, contactId))
                {
                    continue;
                }
                IEnumerable <Guid> nextSteps = stepsHandler.GetImmediateTargetSteps(landingStepId);
                if (nextSteps.Any())
                {
                    Guid nextStepId = nextSteps.First();
                    ExecuteImmediateCampaignStep(_userConnection, campaignId, nextStepId, contactId);
                }
                else
                {
                    CampaignHelper.MergeContactIntoCampaign(_userConnection, campaignId, landingStepId, contactId);
                }
            }
        }
        private void UpdateCampaignStatus(Guid campaignId, UserConnection userConnection, string dateFieldName,
                                          Guid statusId)
        {
            var fields = new Dictionary <string, object>();

            fields["CampaignStatusId"] = statusId;
            fields[dateFieldName]      = DateTime.UtcNow;
            CampaignHelper.SetCampaignFields(campaignId, fields, userConnection);
        }
Ejemplo n.º 4
0
        public void ApplyCampaigns(params Campaign[] campaigns)
        {
            var applicableCampaigns = CampaignHelper.GetApplicableCampaignForShoppingCard(this, campaigns);

            foreach (var campaign in applicableCampaigns)
            {
                campaign.ApplyDiscount(this);
            }
        }
        public virtual void CampaignStepsUpdate()
        {
            var campaignStepsHandler = ClassFactory.Get <CampaignStepsHandler>(new ConstructorArgument("userConnection", UserConnection));

            campaignStepsHandler.ActualizeStepsByCampaign(CampaignId, true);
            CampaignHelper.UpdateCampaignsTargetAchieve(campaignStepsHandler.ProcessedCampaigns, UserConnection);
            CampaignEventHelper campaignEventHelper = new CampaignEventHelper(UserConnection);

            campaignEventHelper.ActualizeEvents(CampaignId);
        }
 public CampaignConfigurationServiceResponse LaunchCampaignV2(Guid campaignId, bool ignoreWarnings = false)
 {
     try {
         CampaignSchema schema = CampaignHelper.GetCampaignSchema(campaignId);
         if (ignoreWarnings)
         {
             CampaignEventFacade.StartWithWarnings(UserConnection, schema);
         }
         else
         {
             CampaignEventFacade.Start(UserConnection, schema);
         }
         return(GetResponse(schema, ignoreWarnings));
     } catch (Exception e) {
         return(new CampaignConfigurationServiceResponse(e));
     }
 }
        public void CompleteCampaign(Guid campaignId)
        {
            UserConnection userConnection = UserConnection;

            UpdateCampaignStatus(campaignId, UserConnection, "EndDate", CampaignConsts.CompletedCampaignStatusId);
            RemoveActualizeStepsCampaignJob(campaignId);
            CultureInfo culture = Thread.CurrentThread.CurrentCulture;

            Task.Factory.StartNew(() => {
                Thread.CurrentThread.CurrentCulture = culture;
                var campaignStepsHandler            =
                    ClassFactory.Get <CampaignStepsHandler>(new ConstructorArgument("userConnection", userConnection));
                campaignStepsHandler.ActualizeStepsByCampaign(campaignId, false);
                DeactivateReferencedCampaignEmails(campaignId, userConnection);
                SetGoalForCampaignStep(campaignId, userConnection);
                CampaignHelper.UpdateCampaignTargetAchieve(campaignId, userConnection);
            });
        }
 public CampaignConfigurationServiceResponse CompleteCampaignV2(Guid campaignId)
 {
     try {
         var campaignInfo = CampaignHelper.GetCampaignInfo(campaignId);
         if (campaignInfo.CampaignStatusId == CampaignConsts.StoppingCampaignStatusId ||
             campaignInfo.CampaignStatusId == CampaignConsts.CompletedCampaignStatusId)
         {
             string errorText = CampaignHelper
                                .GetLczStringValue(nameof(CampaignService), CampaignHasAlreadyStoppedException);
             string message = string.Format(errorText, campaignId);
             throw new InvalidOperationException(message);
         }
         var schema = CampaignHelper.GetCampaignSchema(campaignId);
         CampaignEventFacade.Finalize(UserConnection, schema);
         if (!campaignInfo.InProgress)
         {
             CampaignEventFacade.Stop(UserConnection, schema);
         }
     } catch (Exception e) {
         return(new CampaignConfigurationServiceResponse(e));
     }
     return(new CampaignConfigurationServiceResponse());
 }
 public virtual void SendEmail()
 {
     try {
         var sendDate   = DateTime.UtcNow;
         var recipients = new List <BulkEmailRecipientInfo>();
         recipients.Add(new BulkEmailRecipientInfo {
             Id           = ContactId,
             EmailAddress = ContactEmail,
             ContactRId   = ContactRId
         });
         var messageInfo = new InstantMessageInfo()
         {
             ApplicationUrl = ApplicationUrl,
             MessageId      = BulkEmailId,
             MessageRId     = BulkEmailRId,
             Recipients     = recipients
         };
         var mailingService = ClassFactory.Get <MailingService>(new ConstructorArgument("userConnection", UserConnection));
         mailingService.SendMessage(messageInfo);
         CampaignHelper.MergeContactIntoCampaign(UserConnection, CampaignId, BulkEmailStepId, ContactId);
     } catch (Exception e) {
         LogError("Error send immediately message.", e);
     }
 }
Ejemplo n.º 10
0
 public void Init()
 {
     _campaignHelper = new CampaignHelper("site", "user", "password", "https://secure.eloqua.com/API/REST/1.0/");
 }