/// <summary> /// Use for Batch Updates of Settings within an Area /// </summary> /// <param name="area"></param> /// <param name="areaSettings"></param> public void UpdateSubscriptions(Dictionary <Guid, PushSubscription> subscriptions) { if (Tracker.Current == null) { Tracker.StartTracking(); } try { using (XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { var contact = EnsureContact(client); if (contact != null) { var pushSubscriptions = contact.GetFacet <PushSubscriptions>(); if (pushSubscriptions == null) { pushSubscriptions = new PushSubscriptions(); } pushSubscriptions.Subscriptions = subscriptions; client.SetFacet(contact, FacetNames.PushSubscriptions, pushSubscriptions); client.Submit(); } } } catch (XdbExecutionException ex) { // Manage conflicts / exceptions Sitecore.Diagnostics.Log.Error("Error Updating Custom PushSubscriptions Facet", ex, this); } }
public PushSubscription this[Guid deviceId] { get { if (Tracker.Current == null) { Tracker.StartTracking(); } try { var pushSubscriptions = GetPushSubscriptions(); if (pushSubscriptions == null || !pushSubscriptions.Subscriptions.ContainsKey(Tracker.Current.Interaction.DeviceId)) { return(null); } return(pushSubscriptions.Subscriptions[deviceId]); } catch (XdbExecutionException ex) { // Manage conflicts / exceptions Sitecore.Diagnostics.Log.Error("Error Fetching Custom PushSubscriptions Facet", ex, this); } return(null); } set { if (Tracker.Current == null) { Tracker.StartTracking(); } try { using (XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { Contact contact = EnsureContact(client); if (contact != null) { var pushSubscriptions = contact.GetFacet <PushSubscriptions>(); if (pushSubscriptions == null) { pushSubscriptions = new PushSubscriptions(); } if (!pushSubscriptions.Subscriptions.ContainsKey(deviceId)) { pushSubscriptions.Subscriptions.Add(deviceId, value); } else { pushSubscriptions.Subscriptions[deviceId] = value; } client.SetFacet(contact, FacetNames.PushSubscriptions, pushSubscriptions); client.Submit(); } } } catch (XdbExecutionException ex) { // Manage conflicts / exceptions Sitecore.Diagnostics.Log.Error("Error SAving Custom PushSubscriptions Facet", ex, this); } } }