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); }
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"); } }
public Sitecore.Analytics.Tracking.Contact GetCurrentContact() { Sitecore.Analytics.Tracking.Contact contact = null; if (Tracker != null && Tracker.IsActive) { contact = Tracker.Contact; } return(contact); }
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); }
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); }
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); }
public XConnectClient(Sitecore.Analytics.Tracking.Contact contact) { this._manager = Sitecore.Configuration.Factory.CreateObject("tracking/contactManager", true) as Sitecore.Analytics.Tracking.ContactManager; this._contact = contact; }
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; }
public UpdateContactInfoInteraction(ICandidateMockContactInfo candidateContactInfo, Sitecore.Analytics.Tracking.Contact trackingContact) : base(trackingContact) { CandidateContactInfo = candidateContactInfo; }
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) { }
public SelfServiceMachineInteraction(Sitecore.Analytics.Tracking.Contact trackingContact, MovieTicket movieTicket) : base(trackingContact) { MovieTicket = movieTicket; }