예제 #1
0
        public bool MatchesVisitor(string definition)
        {
            if (string.IsNullOrEmpty(definition))
            {
                throw new ArgumentNullException(nameof(definition));
            }

            PagesViewedSetting pagesViewedSetting;

            try
            {
                pagesViewedSetting = JsonConvert.DeserializeObject <PagesViewedSetting>(definition);
            }
            catch (JsonReaderException)
            {
                throw new ArgumentException($"Provided definition is not valid JSON: {definition}");
            }

            var nodeIdsViewed = _pagesViewedProvider.GetNodeIdsViewed();

            switch (pagesViewedSetting.Match)
            {
            case PagesViewedSettingMatch.ViewedAny:
                return(nodeIdsViewed
                       .ContainsAny(pagesViewedSetting.NodeIds));

            case PagesViewedSettingMatch.ViewedAll:
                return(nodeIdsViewed
                       .ContainsAll(pagesViewedSetting.NodeIds));

            case PagesViewedSettingMatch.NotViewedAny:
                return(!nodeIdsViewed
                       .ContainsAny(pagesViewedSetting.NodeIds));

            case PagesViewedSettingMatch.NotViewedAll:
                return(!nodeIdsViewed
                       .ContainsAll(pagesViewedSetting.NodeIds));

            default:
                return(false);
            }
        }
예제 #2
0
        public bool MatchesVisitor(string definition)
        {
            Mandate.ParameterNotNullOrEmpty(definition, "definition");

            PagesViewedSetting pagesViewedSetting;

            try
            {
                pagesViewedSetting = JsonConvert.DeserializeObject <PagesViewedSetting>(definition);
            }
            catch (JsonReaderException)
            {
                throw new ArgumentException(string.Format("Provided definition is not valid JSON: {0}", definition));
            }

            var nodeIdsViewed = _pagesViewedProvider.GetNodeIdsViewed();

            switch (pagesViewedSetting.Match)
            {
            case PagesViewedSettingMatch.ViewedAny:
                return(pagesViewedSetting.NodeIds
                       .ContainsAny(nodeIdsViewed));

            case PagesViewedSettingMatch.ViewedAll:
                return(pagesViewedSetting.NodeIds
                       .ContainsAll(nodeIdsViewed));

            case PagesViewedSettingMatch.NotViewedAny:
                return(!pagesViewedSetting.NodeIds
                       .ContainsAny(nodeIdsViewed));

            case PagesViewedSettingMatch.NotViewedAll:
                return(!pagesViewedSetting.NodeIds
                       .ContainsAll(nodeIdsViewed));

            default:
                return(false);
            }
        }