Пример #1
0
        /// <summary>
        /// Performs logging of the hit.
        /// </summary>
        private void LogHit(string type, IABTestVariant variant, string conversionName, int[] variantData, int daysFromStart, DateTime logDate)
        {
            var conversionValueMultiplier = GetConversionValueMultiplier(variant, conversionName);

            var name = $"{type};{ABTest.ABTestName};{variant.Guid}";
            var hits = variantData[daysFromStart % variantData.Length];
            var data = new AnalyticsData(SiteContext.CurrentSiteID, conversionName, hits, hits * conversionValueMultiplier, CULTURE_CODE, uri: new Uri("http://domain.com"));

            mLogger.LogCustomAnalytics(name, data, logDate);
        }
Пример #2
0
        /// <summary>
        /// Return a value to be used for multiplying conversion value.
        /// </summary>
        /// <remarks>
        /// Only the value for purchase is multiplied as page visit has a value that equals to 1.
        /// Current date time is used to add more variance to the conversion value, so that in the report when
        /// 'Average conversion value' is used we have different values per day.
        /// Variant B always gets bigger multiplier so that it wins in every statistic.
        /// </remarks>
        private decimal GetConversionValueMultiplier(IABTestVariant variant, string conversionName)
        {
            decimal conversionValueMultiplier = 1m;

            if (conversionName.Equals(ABTestConversionNames.PURCHASE, StringComparison.OrdinalIgnoreCase))
            {
                if (variant.IsOriginal)
                {
                    conversionValueMultiplier = DateTime.Now.Millisecond / 2;
                }
                else
                {
                    conversionValueMultiplier = DateTime.Now.Millisecond * 2;
                }
            }

            return(conversionValueMultiplier);
        }
        /// <summary>
        /// Performs logging of the hit.
        /// </summary>
        private void LogHit(string type, IABTestVariant variant, string conversionName, double[] variantData, int daysFromStart, DateTime logDate)
        {
            double conversionValueMultiplier = GetConversionValueMultiplier(variant, conversionName);

            var hits      = Convert.ToInt32(variantData[daysFromStart % variantData.Length]);
            var logRecord = new LogRecord
            {
                CodeName   = $"{type};{ABTest.ABTestName};{variant.Guid}",
                Hits       = hits,
                Value      = hits * conversionValueMultiplier,
                LogTime    = logDate,
                ObjectName = conversionName,
                SiteName   = SiteContext.CurrentSiteName,
                Culture    = CULTURE_CODE
            };

            HitLogProcessor.SaveLogToDatabase(logRecord);
        }
Пример #4
0
 /// <summary>
 /// Performs logging of A/B conversions.
 /// </summary>
 private void LogConversions(IABTestVariant ABTestVariant, string conversionName, int daysFromStart, int[] firstConversions, int[] recurringConversions, int[] conversions, DateTime logDate)
 {
     LogHit(ABTestConstants.ABSESSIONCONVERSION_FIRST, ABTestVariant, conversionName, firstConversions, daysFromStart, logDate);
     LogHit(ABSESSIONCONVERSION_RECURRING, ABTestVariant, conversionName, recurringConversions, daysFromStart, logDate);
     LogHit(ABCONVERSION, ABTestVariant, conversionName, conversions, daysFromStart, logDate);
 }