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); }
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()))); }
protected override IEnumerable <KeyBehaviorCacheEntry> GetKeyBehaviorCacheEntries(KeyBehaviorCache keyBehaviorCache) { Assert.ArgumentNotNull(keyBehaviorCache, "keyBehaviorCache"); return(keyBehaviorCache.Goals); }
protected abstract IEnumerable <KeyBehaviorCacheEntry> GetKeyBehaviorCacheEntries(KeyBehaviorCache keyBehaviorCache);