public ActionResult Index(string email)
        {
            // save the  email to the current tracked user if it doesnt exsist
            Tracker.Current.Session.Identify(email);
            var contact = Tracker.Current.Contact;
            var emails  = contact.GetFacet <IContactEmailAddresses>("Emails");

            if (!emails.Entries.Contains("personal"))
            {
                emails.Preferred = "personal";
                var personalEmail = emails.Entries.Create("personal");
                personalEmail.SmtpAddress = email;
            }

            // create a new outcome object
            var subscribeOutcome = new ContactOutcome
                                   (
                ID.NewID,
                new ID("{CF6C658B-1343-4905-8F4D-6E22594B5702}"),
                new ID(Tracker.Current.Contact.ContactId)
                                   );

            Tracker.Current.RegisterContactOutcome(subscribeOutcome);

            return(View("Confirmation"));
        }
        private void SetOutcome(Item definitonItem)
        {
            if (Tracker.Current == null)
            {
                return;
            }

            ID  id             = ID.NewID;
            ID  interactionId  = ID.Parse(Tracker.Current.Interaction.InteractionId);
            ID  contactId      = ID.Parse(Tracker.Current.Contact.ContactId);
            var definitionItem = definitonItem;

            if (Tracker.Current.HasOutcome(definitionItem.ID))
            {
                return;
            }

            var outcome = new ContactOutcome(id, definitionItem.ID, contactId)
            {
                DateTime      = DateTime.UtcNow.Date,
                MonetaryValue = MonetaryValue,
                InteractionId = interactionId
            };

            var manager = Factory.CreateObject("outcome/outcomeManager", true) as OutcomeManager;

            if (manager != null)
            {
                manager.Save(outcome);
            }
        }
Esempio n. 3
0
        public string RegisterOutcome(OutcomeDetails data)
        {
            var Tracker = this.GetTracker(false);

            if (Tracker == null || !Tracker.IsActive)
            {
                return("Disabled");
            }

            var id            = ID.NewID;
            var interactionId = ID.Parse(Tracker.Interaction.InteractionId);
            var contactId     = ID.Parse(Tracker.Contact.ContactId);

            var definitionId = new ID(data.definitionId);

            decimal monetaryValue = 0;

            decimal.TryParse(data.monetaryValue, out monetaryValue);

            var outcome = new ContactOutcome(id, definitionId, contactId)
            {
                DateTime      = DateTime.UtcNow.Date,
                MonetaryValue = monetaryValue,
                InteractionId = interactionId
            };

            var manager = Sitecore.Configuration.Factory.CreateObject("outcome/outcomeManager", true) as OutcomeManager;

            manager.Save(outcome);

            Tracker.RegisterContactOutcome(outcome);

            return("OK");
        }
Esempio n. 4
0
        private void CreateOutcomeAnalytic(Contact contact)
        {
            var outcome = new ContactOutcome(
                ID.NewID,
                //sitecore/system/Marketing Control Panel/Outcomes/Subscribed
                new ID("{8931433F-EE16-4616-B996-C122E5A4E243}"), //your own Outcome
                new ID(contact.ContactId));

            Tracker.Current.RegisterContactOutcome(outcome);
        }
Esempio n. 5
0
        public void TrackOutcome(ID definitionId)
        {
            Assert.ArgumentNotNull(definitionId, nameof(definitionId));

            if (this.IsActive && Tracker.Current.Contact != null)
            {
                var outcomeId = new ID();
                var contactId = new ID(Tracker.Current.Contact.ContactId);

                var outcome = new ContactOutcome(outcomeId, definitionId, contactId);
                Tracker.Current.RegisterContactOutcome(outcome);
            }
        }
Esempio n. 6
0
    public void TrackOutcome(ID definitionId)
    {
      Assert.ArgumentNotNull(definitionId, nameof(definitionId));

      if (Tracker.Current != null && Tracker.Current.IsActive && Tracker.Current.Contact != null)
      {
        var outcomeId = new ID();
        var contactId= new ID(Tracker.Current.Contact.ContactId);

        var outcome = new ContactOutcome(outcomeId, definitionId, contactId);
        Tracker.Current.RegisterContactOutcome(outcome);
      }
    }
        public ActionResult Index(string email)
        {
            Tracker.Current.Session.Identify(email);
            var contact = Tracker.Current.Contact;
            var emails  = contact.GetFacet <IContactEmailAddresses>("Emails");

            if (!emails.Entries.Contains("personal"))
            {
                emails.Preferred = "personal";
                var personalEmail = emails.Entries.Create("personal");
                personalEmail.SmtpAddress = email;
            }
            var outcome = new ContactOutcome(ID.NewID, new ID("{E9A7385F-5C84-4C8D-AE77-AB7B6615FEC4}"), new ID(contact.ContactId));

            Tracker.Current.RegisterContactOutcome(outcome);
            return(View("Confirmation"));
        }
Esempio n. 8
0
        public ActionResult Index(string email)
        {
            Tracker.Current.Session.Identify(email);
            var contact = Tracker.Current.Contact;
            var emails  = contact.GetFacet <IContactEmailAddresses>("Emails");

            if (!emails.Entries.Contains("personal"))
            {
                emails.Preferred = "personal";
                var personalEmail = emails.Entries.Create("personal");
                personalEmail.SmtpAddress = email;
            }
            var outcome = new ContactOutcome(ID.NewID, new ID("{8DAFFB64-56BE-4A19-81E2-5CB158299E5E}"), new ID(contact.ContactId));

            Tracker.Current.RegisterContactOutcome(outcome);
            return(View("Confirmation"));
        }
        public ActionResult Index(string email)
        {
            Sitecore.Analytics.Tracker.Current.Session.Identify(email);
            var contact = Sitecore.Analytics.Tracker.Current.Contact;
            var emails  = contact.GetFacet <IContactEmailAddresses>("Emails");

            if (!emails.Entries.Contains("personal"))
            {
                emails.Preferred = "personal";
                var personalEmail = emails.Entries.Create("personal");
                personalEmail.SmtpAddress = email;
            }
            var outcome = new ContactOutcome(ID.NewID, new ID("{F1A68003-6CD0-44C7-B7FD-556041A68090}"), new ID(contact.ContactId));

            Tracker.Current.RegisterContactOutcome(outcome);

            return(View("Confirmation"));
        }
Esempio n. 10
0
        /// <summary>
        /// Processes the specified arguments.
        /// </summary>
        /// <param name="args">The arguments.</param>
        public override void Process(ServicePipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.ArgumentNotNull(args.Request, "args.Request");
            Assert.ArgumentNotNull(args.Result, "args.Result");
            Assert.ArgumentCondition(args.Request is SubmitVisitorOrderRequest, "args.Request", "args.Request is SubmitVisitorOrderRequest");
            Assert.ArgumentCondition(args.Result is SubmitVisitorOrderResult, "args.Result", "args.Result is SubmitVisitorOrderResult");
            if (args.Result.Success)
            {
                if (Tracker.Current != null)
                {
                    SubmitVisitorOrderResult result = args.Result as SubmitVisitorOrderResult;
                    Order orderFromResult           = result.Order;
                    Assert.ArgumentNotNull(orderFromResult, "order result");

                    var contactId = Guid.Empty;
                    if (Tracker.Current.Contact != null)
                    {
                        contactId = Tracker.Current.Contact.ContactId;
                    }

                    try
                    {
                        var serializedOrder = SerializeOrder(orderFromResult);

                        var outcome = new ContactOutcome(ID.NewID, StorefrontConstants.KnownItemIds.ProductPurchaseOutcome, new ID(contactId));
                        outcome.CustomValues["ShopName"]   = orderFromResult.ShopName;
                        outcome.CustomValues["ExternalId"] = orderFromResult.ExternalId;
                        outcome.CustomValues["Order"]      = JsonConvert.SerializeObject(orderFromResult);
                        outcome.MonetaryValue = orderFromResult.Total.Amount;

                        Tracker.Current.RegisterContactOutcome(outcome);
                    }
                    catch (Exception ex)
                    {
                        CommerceLog.Current.Error("SubmitVisitorOrder, OrderOutcome", this, ex);
                    }
                }
            }
        }
        public void Execute(ITracker tracker, RequestInfo requestInfo)
        {
            var outcomes = requestInfo.Variables.GetOrDefault("TriggerOutcomes") as IEnumerable <TriggerOutcomeData>;

            if (outcomes != null)
            {
                var ix = 0;
                foreach (var o in outcomes)
                {
                    var defintion = DefinitionManagerFactory.Default.GetDefinitionManager <IOutcomeDefinition>().Get(o.DefinitionId.ToID(), LanguageManager.DefaultLanguage.CultureInfo);
                    if (defintion == null)
                    {
                        throw new Exception("Outcome not found");
                    }
                    var oc = new ContactOutcome(Guid.NewGuid().ToID(), defintion.Id, tracker.Contact.ContactId.ToID());
                    if (defintion.IsMonetaryValueApplicable)
                    {
                        oc.MonetaryValue = o.MonetaryValue;
                    }

                    if (o.CustomValues != null)
                    {
                        foreach (var kv in o.CustomValues)
                        {
                            oc.CustomValues[kv.Key] = kv.Value;
                        }
                    }

                    tracker.RegisterContactOutcome(oc);
                    var added = tracker.GetContactOutcomes().First(outcome => outcome.Id == oc.Id);

                    //Patch date time, and add 1 ms each time to avoid collisions in xProfile
                    added.DateTime = (o.DateTime ?? tracker.CurrentPage.DateTime).AddMilliseconds(ix + 1);

                    ++ix;
                }
            }
        }