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); }
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); } }
public void Init() { _campaignHelper = new CampaignHelper("site", "user", "password", "https://secure.eloqua.com/API/REST/1.0/"); }