public async void SampleModelAsync() { using (Sitecore.XConnect.Client.XConnectClient xClient = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { try { Contact contact = new Contact(new ContactIdentifier("website", "email@address", ContactIdentifierType.Known)); xClient.AddContact(contact); var flyerInfo = new FrequentFlyerInfo("First1") { Status = FrequentFlyerInfo.FrequentFlyerStatus.Silver }; var facetReference = new FacetReference(contact, FrequentFlyerInfo.DefaultFacetKey); xClient.SetFacet(facetReference, flyerInfo); await xClient.SubmitAsync(); } catch (Exception e) { Console.WriteLine(e); } } }
public void ReportContactData(Sitecore.XConnect.Client.XConnectClient client) { try { var serializerSettings = new JsonSerializerSettings { ContractResolver = new XdbJsonContractResolver(client.Model, serializeFacets: true, serializeContactInteractions: true), DateTimeZoneHandling = DateTimeZoneHandling.Utc, DefaultValueHandling = DefaultValueHandling.Ignore, Formatting = Formatting.Indented }; var json = JsonConvert.SerializeObject(RetrievedContact, serializerSettings); var jsonFullFileName = GetMockDataFolder().FullName + "\\" + "contact." + RetrievedContact.Id.ToString() + ".json"; File.WriteAllText(jsonFullFileName, json); Console.WriteLine("------------------------"); Console.WriteLine("Retrieved Data"); Console.WriteLine(""); Console.WriteLine(json); Console.WriteLine("------------------------"); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
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 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 } } } } }