Friday, January 22, 2016

Multivariate Test Strategy



using Sitecore.Analytics.Data.Items;
using Sitecore.Analytics.Testing;
using Sitecore.Data.Items;
using Sitecore.Mvc.Analytics.Pipelines.Response.CustomizeRendering;

namespace HA.Web.Analytics.Pipelines
{
    public class SelectTestVariation : SelectVariation
    {
        protected override void ApplyVariation(CustomizeRenderingArgs args, ComponentTestContext context)
        {
            TestCombination testCombination = Tracker.CurrentPage.GetTestCombination();

            if (testCombination == null)
                return;

            Item testItem = Sitecore.Context.Database.GetItem(testCombination.Testset.Id.ToString());
            MultivariateTestDefinitionItem test = new MultivariateTestDefinitionItem(testItem);
            TestDefinitionItem defItem = new TestDefinitionItem(testItem);
            IMultiVariateTestStrategy strategy = TestManager.GetTestStrategy(defItem);
           
            if (SessionManager.Instance.MultivariateTestPage != null)
            {
                //if session contains current page's GUID proceed
                if(SessionManager.Instance.MultivariateTestPage.Contains(Tracker.CurrentPage.ItemId.ToString()))
                {
                    //proceed
                }
                else
                {
                    Tracker.CurrentPage.SetTestSetIdNull();
                    Tracker.CurrentPage.SetTestValuesNull();
                    return;
                }
            }
            else if (strategy is WeightedStickyOncePerSessionMultiVariateTestStrategy)
            {
                SessionManager.Instance.MultivariateTestPage = Tracker.CurrentPage.ItemId.ToString();
            }
            base.ApplyVariation(args, context);
        }
    }

}

No comments:

Post a Comment