public static void SetVisitTagsOnLogin(string domainUser, bool IsNewUser)
        {
            string name = Sitecore.Context.User.Profile.FullName;

            if (name == String.Empty)
            {
                name = Sitecore.Context.User.LocalName;
            }
            Tracker.Current.Contact.Tags.Add("Username", domainUser);
            Tracker.Current.Contact.Tags.Add("Full name", name);

            Tracker.Current.Contact.Identifiers.AuthenticationLevel = AuthenticationLevel.PasswordValidated;
            Tracker.Current.Session.Identify(domainUser);

            if (IsNewUser)
            {
                IContactPersonalInfo personalFacet = Tracker.Current.Contact.GetFacet <IContactPersonalInfo>("Personal");
                personalFacet.FirstName = GetFirstName(name);
                personalFacet.Surname   = GetSurName(name);

                IContactEmailAddresses addressesFacet = Tracker.Current.Contact.GetFacet <IContactEmailAddresses>("Emails");
                IEmailAddress          address;
                if (!addressesFacet.Entries.Contains("work_email"))
                {
                    address                  = addressesFacet.Entries.Create("work_email");
                    address.SmtpAddress      = GetEmailAddressFromUser(domainUser);
                    addressesFacet.Preferred = "work_email";
                }
            }
        }
Beispiel #2
0
        public TrackerDetails GetTracker(PageDetails data)
        {
            var Tracker = this.GetTracker(false);

            if (Tracker == null || !Tracker.IsActive)
            {
                throw new ArgumentException("Context is invalid");
            }

            var pageId = Guid.Empty;

            Guid.TryParse(data.pageId, out pageId);

            var pageInteraction = Tracker.Interaction.Pages.LastOrDefault(a => a.Item.Id == pageId);
            var page            = pageInteraction != null?Tracker.Interaction.GetPage(pageInteraction.VisitPageIndex) : Tracker.Interaction.PreviousPage;

            var details = new TrackerDetails();

            foreach (var pageEvent in page.PageEvents)
            {
                EventDetails eventDetails = new EventDetails();
                eventDetails.name   = pageEvent.Name;
                eventDetails.text   = pageEvent.Text;
                eventDetails.value  = pageEvent.Value.ToString();
                eventDetails.isGoal = pageEvent.IsGoal ? "1" : "0";
                details.events.Add(eventDetails);
            }

            details.contactId = Tracker.Contact.ContactId.ToString();
            details.userName  = Tracker.Contact.Identifiers.Identifier;

            try
            {
                Contact contact = Tracker.Contact;
                IContactPersonalInfo personal = contact.GetFacet <IContactPersonalInfo>("Personal");
                details.name = string.Format("{0} {1} {2}", personal.FirstName, personal.MiddleName, personal.Surname);
            }
            catch (Exception ex)
            {
                Sitecore.Diagnostics.Log.Error("Could not get Name", ex);
            }

            try
            {
                Contact contact = Tracker.Contact;
                IContactEmailAddresses emails = contact.GetFacet <IContactEmailAddresses>("Personal");
                details.email = emails.Entries[emails.Preferred].SmtpAddress;
            }
            catch (Exception ex)
            {
                Sitecore.Diagnostics.Log.Error("Could not get Preferred Email Address", ex);
            }

            Tracker.CurrentPage.Cancel();

            return(details);
        }
Beispiel #3
0
        public static void SaveContact(string userName, string firstName, string lastName, DateTime birthDate, string emailAddress, string workEmailAddress)
        {
            Contact contact = Tracker.Current.Contact;

            contact.Identifiers.AuthenticationLevel = AuthenticationLevel.PasswordValidated;
            Tracker.Current.Session.Identify(userName);

            IContactPersonalInfo personal = contact.GetFacet <IContactPersonalInfo>("Personal");

            personal.FirstName = firstName;
            personal.Surname   = lastName;
            personal.BirthDate = birthDate;

            // Storing multiple email address
            IContactEmailAddresses email = contact.GetFacet <IContactEmailAddresses>("Emails");
            var personalEmail            = email.Entries.Create("personal");

            personalEmail.SmtpAddress = emailAddress;

            var workEmail = email.Entries.Create("work");

            workEmail.SmtpAddress = emailAddress;

            email.Preferred = "personal";

            // Storing multiple Addresses
            IContactAddresses address     = contact.GetFacet <IContactAddresses>("Addresses");
            IAddress          homeAddress = address.Entries.Create("home");

            homeAddress.StreetLine1   = "Address 1 - Home";
            homeAddress.City          = "New York";
            homeAddress.StateProvince = "NY";
            homeAddress.PostalCode    = "03587";

            IAddress officeAddress = address.Entries.Create("office");

            officeAddress.StreetLine1   = "Address 1 - Office";
            officeAddress.City          = "New York";
            officeAddress.StateProvince = "NY";
            officeAddress.PostalCode    = "03587";

            address.Preferred = "home";

            // Add custom details in System Facets - Tag and Extensions
            contact.Tags.Add("Username", userName);
            contact.Tags.Add("Full name", firstName + " " + lastName);

            contact.Extensions.SimpleValues["Username"]  = userName;
            contact.Extensions.SimpleValues["Full Name"] = firstName + " " + lastName;
        }
Beispiel #4
0
        private static void SetEmail(Session session, string email)
        {
            IContactEmailAddresses emailAddresses = session.Contact.GetFacet <IContactEmailAddresses>("Emails");

            emailAddresses.Preferred = PreferredEmailKey;
            if (emailAddresses.Entries.Contains(PreferredEmailKey))
            {
                emailAddresses.Entries[PreferredEmailKey].SmtpAddress = email;
            }
            else
            {
                emailAddresses.Entries.Create(PreferredEmailKey).SmtpAddress = email;
            }
        }
    public void Emails_FacetExist_ShouldReturnContactEmail([NoAutoProperties] ContactProfileProvider provider, IContactEmailAddresses facet, ITracker tracker, [Substitute] Contact contact)
    {
      tracker.IsActive.Returns(true);
      tracker.Contact.Returns(contact);
      contact.Facets.Returns(new ReadOnlyDictionary<string, IFacet>(new Dictionary<string, IFacet>
      {
        {
          @"Emails", facet
        }
      }
        ));

      using (new TrackerSwitcher(tracker))
      {
        provider.Emails.Should().NotBeNull();
        provider.Emails.ShouldBeEquivalentTo(facet);
      }
    }
Beispiel #6
0
        public void Emails_FacetExist_ShouldReturnContactEmail([NoAutoProperties] ContactProfileProvider provider, IContactEmailAddresses facet, ITracker tracker, [Substitute] Contact contact)
        {
            tracker.IsActive.Returns(true);
            tracker.Contact.Returns(contact);
            contact.Facets.Returns(new ReadOnlyDictionary <string, IFacet>(new Dictionary <string, IFacet>
            {
                {
                    @"Emails", facet
                }
            }
                                                                           ));

            using (new TrackerSwitcher(tracker))
            {
                provider.Emails.Should().NotBeNull();
                provider.Emails.ShouldBeEquivalentTo(facet);
            }
        }