Esempio n. 1
0
        protected override bool Execute(T ruleContext)
        {
            Assert.ArgumentNotNull(ruleContext, "ruleContext");
            Assert.IsNotNull(Tracker.Current, "Tracker.Current is not initialized");
            Assert.IsNotNull(Tracker.Current.Session, "Tracker.Current.Session is not initialized");

            if (Tracker.Current.Session.Interaction == null)
            {
                return(this.AlternativeExecution(ruleContext));
            }

            Assert.IsNotNull(Tracker.Current.Session.Interaction, "Tracker.Current.Session.Interaction is not initialized");
            if (!GoalGuid.HasValue)
            {
                return(false);
            }
            if (Tracker.Current.Session.Interaction != null && HasEventOccurredInInteraction(Tracker.Current.Session.Interaction))
            {
                return(true);
            }
            Assert.IsNotNull(Tracker.Current.Contact, "Tracker.Current.Contact is not initialized");
            try
            {
                KeyBehaviorCache keyBehaviorCache = Tracker.Current.Contact.GetKeyBehaviorCache();
                return(FilterKeyBehaviorCacheEntries(keyBehaviorCache).Any(delegate(KeyBehaviorCacheEntry entry)
                {
                    Guid id = entry.Id;
                    Guid?b = GoalGuid;
                    return id == b;
                }));
            }
            catch (Exception ex)
            {
                Sitecore.Diagnostics.Log.Debug("Issue looking up goal history", ex);
                return(this.AlternativeExecution(ruleContext));
            }

            return(false);
        }
Esempio n. 2
0
        protected virtual IEnumerable <KeyBehaviorCacheEntry> FilterKeyBehaviorCacheEntries(KeyBehaviorCache keyBehaviorCache)
        {
            Assert.ArgumentNotNull(keyBehaviorCache, "keyBehaviorCache");
            IEnumerable <KeyBehaviorCacheEntry> keyBehaviorCacheEntries = keyBehaviorCache.Campaigns.Concat(keyBehaviorCache.Channels).Concat(keyBehaviorCache.CustomValues).Concat(keyBehaviorCache.Goals)
                                                                          .Concat(keyBehaviorCache.Outcomes)
                                                                          .Concat(keyBehaviorCache.PageEvents)
                                                                          .Concat(keyBehaviorCache.Venues);
            IEnumerable <KeyBehaviorCacheEntry> enumerable = FilterKeyBehaviorCacheEntriesByInteractionConditions(keyBehaviorCacheEntries);

            if (filterByCustomData)
            {
                if (CustomData == null)
                {
                    Log.Warn("CustomData can not be null", GetType());
                    return(Enumerable.Empty <KeyBehaviorCacheEntry>());
                }
                enumerable = enumerable.Where(delegate(KeyBehaviorCacheEntry entry)
                {
                    if (entry.Data != null)
                    {
                        return(ConditionsUtility.CompareStrings(entry.Data, CustomData, CustomDataOperatorId));
                    }
                    return(false);
                });
            }
            return(Assert.ResultNotNull(GetKeyBehaviorCacheEntries(keyBehaviorCache).Intersect(enumerable, new KeyBehaviorCacheEntry.KeyBehaviorCacheEntryEqualityComparer())));
        }
Esempio n. 3
0
 protected override IEnumerable <KeyBehaviorCacheEntry> GetKeyBehaviorCacheEntries(KeyBehaviorCache keyBehaviorCache)
 {
     Assert.ArgumentNotNull(keyBehaviorCache, "keyBehaviorCache");
     return(keyBehaviorCache.Goals);
 }
Esempio n. 4
0
 protected abstract IEnumerable <KeyBehaviorCacheEntry> GetKeyBehaviorCacheEntries(KeyBehaviorCache keyBehaviorCache);