Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        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);
                }
            }
        }