Tuesday, March 15, 2016

Triggering a sitecore profile or increasing profile key value programmatically


public static void TriggerProfilesForItem(Item profileItem, int incrrement)
        {
            // Trigger DMS profiles
            var profiles = ProfileUtil.GetProfiles(profileItem);
            foreach (var profile in profiles)
            {
                if (profile.Total > 0)
                {
                    var visitProfile = Tracker.CurrentVisit.GetOrCreateProfile(profile.Name);
                    visitProfile.BeginEdit();
                    visitProfile.Score(profile);
                    visitProfile.UpdatePattern();
                    visitProfile.EndEdit();
                }
            }

        }


SitecoreDmsTracker:

 /// <summary>
        /// Triggers a DMS profile
        /// </summary>
        /// <param name="item">The test definition item identifier.</param>
        /// <returns></returns>

        public static void TriggerProfilesForItem(Item profileItem, ID keyId, int increment = 0)
        {
            var profiles = ProfileUtil.GetProfiles(profileItem);
            ContentProfile contentProfile = profiles.FirstOrDefault(x => x.Name.ToLower().Equals(profileItem.Name.ToLower()));

            if (contentProfile == null || contentProfile.Keys.Count() < 1)
                return;
            
            var visitProfile = Tracker.CurrentVisit.GetOrCreateProfile(profileItem.Name);
            var key = contentProfile.Keys.FirstOrDefault(x => x.InnerItem.ID == keyId);

            if (key == null)
                return;

            float incrementBy = (increment > 0) ? increment : key.MaxValue;

            visitProfile.BeginEdit();
            visitProfile.Score(key.Name, key.Value + incrementBy);
            visitProfile.UpdatePattern();
            visitProfile.EndEdit(); 
        }
  

  

No comments:

Post a Comment