Exemplo n.º 1
0
        public void UpdateContactFacets_ShouldUpdateTracker(ITracker tracker, Contact contact, Sitecore.XConnect.Contact xdbContact, IXdbContextFactory xdbContextFactory, IXdbContext xdbContext, IContactManagerService contactManager, IContactFacetUpdater facetUpdater, string source, string identifier)
        {
            // Arrange
            contact.Identifiers.Returns(new List <ContactIdentifier>
            {
                new ContactIdentifier(source, identifier, ContactIdentificationLevel.Known)
            }.AsReadOnly());
            tracker.Contact.Returns(contact);
            xdbContext.GetAsync <Sitecore.XConnect.Contact>(Arg.Any <IdentifiedContactReference>(), Arg.Any <ContactExpandOptions>()).Returns(Task.FromResult(xdbContact));
            xdbContextFactory.CreateContext().Returns(xdbContext);
            var userProfile = Substitute.For <Sitecore.Security.UserProfile>();

            facetUpdater.SetFacets(userProfile, xdbContact, xdbContext).Returns(true);
            var facetsService = new UpdateContactFacetsService(xdbContextFactory, contactManager, new List <IContactFacetUpdater> {
                facetUpdater
            });

            // Act
            using (new TrackerSwitcher(tracker))
            {
                facetsService.UpdateContactFacets(userProfile);
            }

            // Assert
            contactManager.Received(1).SaveContact();
            contactManager.Received(1).ReloadContact();
        }
        public KnownData GetKnownDataViaTracker(Sitecore.Analytics.Tracking.Contact trackingContact)
        {
            KnownData toReturn = null;

            using (XConnectClient xConnectClient = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    toReturn = new KnownData();

                    var xConnectHelper = new XConnectHelper(AllFacetKeys);

                    IdentifiedContactReference IdentifiedContactReference = xConnectHelper.GetIdentifierFromTrackingContact(trackingContact);

                    Contact XConnectContact = xConnectHelper.IdentifyKnownContact(IdentifiedContactReference);

                    XConnectFacets = Tracker.Current.Contact.GetFacet <IXConnectFacets>("XConnectFacets");

                    toReturn.FacetData = GatherFacetData(XConnectFacets);

                    toReturn.KnownInteractions = GetKnownInteractions(XConnectContact, xConnectClient);

                    toReturn.Identifiers = Tracker.Current.Contact.Identifiers.ToList();
                }
                catch (XdbExecutionException ex)
                {
                    Sitecore.Diagnostics.Log.Error(CollectionConst.Logger.Prefix + ex.Message, this);
                }
            }

            return(toReturn);
        }
Exemplo n.º 3
0
        public IWeKnowTreeNode TrackingContactNode(Sitecore.Analytics.Tracking.Contact trackingContact, XConnectClient xConnectClient)
        {
            WeKnowTreeNode toReturn = null;

            if (trackingContact != null && TreeOptions.IncludeTrackingContact)
            {
                toReturn = new WeKnowTreeNode("Tracking Contact", TreeOptions);

                toReturn.AddNode(new WeKnowTreeNode("Is New", trackingContact.IsNew.ToString(), TreeOptions));
                toReturn.AddNode(new WeKnowTreeNode("Contact Id", trackingContact.ContactId.ToString(), TreeOptions));
                toReturn.AddNode(new WeKnowTreeNode("Identification Level", trackingContact.IdentificationLevel.ToString(), TreeOptions));

                var ContractResolver = new XdbJsonContractResolver(xConnectClient.Model, true, true);

                var serializerSettings = new JsonSerializerSettings
                {
                    ContractResolver     = ContractResolver,
                    DateTimeZoneHandling = DateTimeZoneHandling.Utc,
                    DefaultValueHandling = DefaultValueHandling.Ignore,
                    Formatting           = Formatting.Indented
                };

                var serialized = JsonConvert.SerializeObject(trackingContact, serializerSettings);

                toReturn.AddRawNode(serialized);
            }

            return(toReturn);
        }
 protected _interactionBase(Sitecore.Analytics.Tracking.Contact trackingContact)
 {
     IdentifiedContactReference = XConnectHelper.GetIdentifierFromTrackingContact(trackingContact);
     XConnectContact            = XConnectHelper.IdentifyKnownContact(IdentifiedContactReference);
     if (XConnectContact != null)
     {
         XConnectFacets = trackingContact.GetFacet <IXConnectFacets>("XConnectFacets");
     }
 }
Exemplo n.º 5
0
        public Sitecore.Analytics.Tracking.Contact GetCurrentContact()
        {
            Sitecore.Analytics.Tracking.Contact contact = null;

            if (Tracker != null && Tracker.IsActive)
            {
                contact = Tracker.Contact;
            }

            return(contact);
        }
Exemplo n.º 6
0
        public static async Task <bool?> isConsented(Sitecore.Analytics.Tracking.Contact contact, SiteContext context)
        {
            Boolean?isConsented = null;

            if (contact != null && context != null)
            {
                using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
                {
                    try
                    {
                        var            contactReference = new ContactReference(contact.ContactId);
                        Task <Contact> contactTask      = client.GetContactAsync(contactReference, new ContactExpandOptions()
                        {
                        });

                        Contact XContact = await contactTask;

                        var facet = XContact.GetFacet <ConsentInfo>(ConsentInfo.DefaultFacetKey);

                        if (facet != null)
                        {
                            if (facet.Consents != null)
                            {
                                Item           rootItem            = Sitecore.Context.Database.GetItem(context.RootPath);
                                ReferenceField xconsentPolicyField = rootItem.Fields["XConsent Policy"];
                                Item           xconsentPolicy      = xconsentPolicyField.TargetItem;

                                ConsentObject obj = facet.Consents.FirstOrDefault <ConsentObject>(x => x.rootId.Equals(rootItem.ID) &&
                                                                                                  x.language.Equals(context.Language) &&
                                                                                                  x.policyId.Equals(xconsentPolicy.ID) &&
                                                                                                  x.policyVersion.Equals(xconsentPolicy.Version.Number));
                                if (obj != null && obj.consent)
                                {
                                    isConsented = true;
                                }
                                else if (obj != null && !obj.consent)
                                {
                                    isConsented = false;
                                }
                            }
                        }
                    }
                    catch (XdbExecutionException ex)
                    {
                        //do something
                    }
                }
            }
            return(isConsented);
        }
        public IdentifiedContactReference GetIdentifierFromTrackingContact(Sitecore.Analytics.Tracking.Contact trackingContact)
        {
            // moved

            IdentifiedContactReference toReturn = null;

            if (trackingContact != null && trackingContact.IdentificationLevel == Sitecore.Analytics.Model.ContactIdentificationLevel.Known)
            {
                var AnyIdentifier = Tracker.Current.Contact.Identifiers.FirstOrDefault();
                toReturn = GetIdentifierFromSourceIdentifier(AnyIdentifier.Source, AnyIdentifier.Identifier);
            }

            return(toReturn);
        }
Exemplo n.º 8
0
        public List <IWeKnowTreeNode> Tier1NodeBuilder(Sitecore.Analytics.Tracking.Contact trackingContact, XConnectClient xConnectClient, Sitecore.XConnect.Contact xConnectContact)
        {
            Sitecore.Diagnostics.Log.Debug(ProjConstants.Logger.Prefix + "s) Tier1NodeBuilder");

            var identifies = trackingContact?.Identifiers != null?trackingContact.Identifiers.ToList() : null;


            var toReturn = new List <IWeKnowTreeNode>
            {
                TrackingContactNode(trackingContact, xConnectClient),
                IdentifiersNode(identifies),
                FacetsNode(xConnectClient),
                InteractionsNode(xConnectContact, xConnectClient)
            };

            Sitecore.Diagnostics.Log.Debug(ProjConstants.Logger.Prefix + "s) Tier1NodeBuilder");
            return(toReturn);
        }
        public static Contact ToContact(this Sitecore.Analytics.Tracking.Contact contact, XConnectClient client, string[] facets = null)
        {
            var trackerIdentifier = new IdentifiedContactReference(
                Sitecore.Analytics.XConnect.DataAccess.Constants.IdentifierSource,
                contact.ContactId.ToString("N"));

            var ret = client.Get(trackerIdentifier, new ContactExpandOptions(facets));

            if (ret == null)
            {
                ret = new Contact(new ContactIdentifier(trackerIdentifier.Source, trackerIdentifier.Identifier, ContactIdentifierType.Anonymous));

                client.AddContact(ret);

                client.Submit();
            }

            return(ret);
        }
Exemplo n.º 10
0
        public IWeKnowTree GetWeKnowTreeFromTrackingContact(Sitecore.Analytics.Tracking.Contact trackingContact)
        {
            Sitecore.Diagnostics.Log.Debug(ProjConstants.Logger.Prefix + "s) GetWhatWeKnowTree");
            IWeKnowTree toReturn = new Concretions.WhatWeKnowTree("What We Know", Options);

            using (XConnectClient xConnectClient = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    IdentifiedContactReference IdentifiedContactReference = xConnectHelper.GetIdentifierFromTrackingContact(trackingContact);
                    Contact XConnectContact = xConnectHelper.IdentifyKnownContact(IdentifiedContactReference);

                    var tier1Nodes = new Tier1Nodes(trackingContact, Options);
                    toReturn.Root.AddNodes(tier1Nodes.Tier1NodeBuilder(trackingContact, xConnectClient, XConnectContact));
                }
                catch (XdbExecutionException ex)
                {
                    Sitecore.Diagnostics.Log.Error(ProjConstants.Logger.Prefix + ex.Message, this);
                }
            }

            Sitecore.Diagnostics.Log.Debug(ProjConstants.Logger.Prefix + "e) GetWhatWeKnowTree");
            return(toReturn);
        }
Exemplo n.º 11
0
        public XConnectClient(Sitecore.Analytics.Tracking.Contact contact)
        {
            this._manager = Sitecore.Configuration.Factory.CreateObject("tracking/contactManager", true) as Sitecore.Analytics.Tracking.ContactManager;

            this._contact = contact;
        }
Exemplo n.º 12
0
        public static async void setConsented(Sitecore.Analytics.Tracking.Contact contact, SiteContext context, Boolean consent)
        {
            if (contact != null && context != null)
            {
                Item           rootItem            = Sitecore.Context.Database.GetItem(context.RootPath);
                ReferenceField xconsentPolicyField = rootItem.Fields["XConsent Policy"];
                Item           xconsentPolicy      = xconsentPolicyField.TargetItem;

                if (rootItem != null && xconsentPolicy != null)
                {
                    using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
                    {
                        try
                        {
                            var            contactReference = new ContactReference(contact.ContactId);
                            Task <Contact> contactTask      = client.GetContactAsync(contactReference, new ContactExpandOptions()
                            {
                            });

                            Contact XContact = await contactTask;

                            var facet = XContact.GetFacet <ConsentInfo>(ConsentInfo.DefaultFacetKey);


                            if (facet != null)
                            {
                                if (facet.Consents != null)
                                {
                                    ConsentObject obj = facet.Consents.FirstOrDefault <ConsentObject>(x => x.rootId.Equals(rootItem.ID) &&
                                                                                                      x.language.Equals(context.Language) &&
                                                                                                      x.policyId.Equals(xconsentPolicy.ID) &&
                                                                                                      x.policyVersion.Equals(xconsentPolicy.Version.Number));

                                    if (obj != null)
                                    {
                                        obj.consent = consent;
                                    }
                                    else
                                    {
                                        facet.Consents.Add(new ConsentObject(rootItem.ID, xconsentPolicy.ID, xconsentPolicy.Version.Number, context.Language, consent));
                                    }

                                    // Set the updated facet
                                    client.SetFacet(XContact, ConsentInfo.DefaultFacetKey, facet);
                                }
                            }
                            else
                            {
                                facet = new ConsentInfo();
                                facet.Consents.Add(new ConsentObject(rootItem.ID, xconsentPolicy.ID, xconsentPolicy.Version.Number, context.Language, consent));
                            }

                            await client.SubmitAsync();
                        }
                        catch (XdbExecutionException ex)
                        {
                            // Handle exception
                        }
                    }
                }
            }
        }
 public ConcessionStandInteraction(Sitecore.Analytics.Tracking.Contact trackingContact, Guid priceitem, Guid productitem) : base(trackingContact)
 {
     PriceItemGuid   = priceitem;
     ProductItemGuid = productitem;
 }
Exemplo n.º 14
0
 public UpdateContactInfoInteraction(ICandidateMockContactInfo candidateContactInfo, Sitecore.Analytics.Tracking.Contact trackingContact) : base(trackingContact)
 {
     CandidateContactInfo = candidateContactInfo;
 }
Exemplo n.º 15
0
 public Tier1Nodes(Sitecore.Analytics.Tracking.Contact trackingContact, WeKnowTreeOptions options)
 {
     this.XConnectFacets = trackingContact.GetFacet <IXConnectFacets>("XConnectFacets");;
     TreeOptions         = options;
 }
 private bool IsContactIdentified(Sitecore.Analytics.Tracking.Contact trackingContact)
 {
     return(!trackingContact.IsNew && trackingContact.Identifiers.Any());
 }
 public WatchMovieInteraction(Sitecore.Analytics.Tracking.Contact trackerContact) : base(trackerContact)
 {
 }
Exemplo n.º 18
0
 public SelfServiceMachineInteraction(Sitecore.Analytics.Tracking.Contact trackingContact, MovieTicket movieTicket) : base(trackingContact)
 {
     MovieTicket = movieTicket;
 }