protected void rptAchievedGoals_OnItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item == null || e.Item.DataItem == null)
            {
                return;
            }

            VisitVariation visitVariation      = (VisitVariation)e.Item.DataItem;
            Literal        litVariationName    = (Literal)e.Item.FindControl("litVariationName");
            Literal        litVisitCount       = (Literal)e.Item.FindControl("litVisitCount");
            Literal        litActiveVisitCount = (Literal)e.Item.FindControl("litActiveVisitCount");
            Literal        litEffectiveness    = (Literal)e.Item.FindControl("litEffectiveness");

            TotalVisitCount        += visitVariation.VisitCount;
            TotalAchievedGoalCount += visitVariation.AchievedGoalCount;

            litEffectiveness.Text = "N/A";
            if (visitVariation.VisitCount > 0)
            {
                double effectiveness = ((double)(visitVariation.AchievedGoalCount) / ((double)visitVariation.VisitCount));
                litEffectiveness.Text = effectiveness.ToString("P1");
            }

            litVariationName.Text    = GetVariationName(visitVariation.TestValues);
            litVisitCount.Text       = visitVariation.VisitCount.ToString("N0");
            litActiveVisitCount.Text = visitVariation.AchievedGoalCount.ToString("N0");
        }
        /// <summary>
        /// Returns a grouping of achieved goals against visits per variation
        /// </summary>
        /// <param name="goalItem"></param>
        /// <param name="testItem"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <returns></returns>
        public List <VisitVariation> GetAchievedGoals(Item goalItem, Item testItem, DateTime startDate, DateTime endDate)
        {
            if (goalItem.IsNull() || testItem.IsNull())
            {
                return(new List <VisitVariation>());
            }

            try
            {
                using (AnalyticsDataContext AnalyticsDataContext = new AnalyticsDataContext(ConfigurationManager.ConnectionStrings["analytics"].ConnectionString))
                {
                    //how many people saw the test
                    string visitQuery = "select count(*) as VisitCount, dbo.fn_abc_hexadecimal(p.testValues) AS TestValues from pages p " +
                                        "where p.testSetId = {0} and p.[datetime] >= {1} and p.[datetime] <= {2} " +
                                        "group by testValues";

                    //how many people performed action (EV) against the test?
                    string evQuery = "select count(*) as AchievedGoalCount, dbo.fn_abc_hexadecimal(testValues) as TestValues from " +
                                     "(" +
                                     "select p.itemId, p.[DateTime], (select distinct(testValues) from pages where testSetId = {0} and visitId = p.visitId) as testValues " +
                                     "from pages p " +
                                     "inner join pageEvents pe on pe.pageId = p.pageId " +
                                     "where pe.pageEventDefinitionId = {1} and p.[datetime] >= {2} and p.[datetime] <= {3} " +
                                     ") t " +
                                     "where testValues is not null " +
                                     "group by testValues";

                    //get page hits
                    var visitResults = AnalyticsDataContext.ExecuteQuery <VisitVariation>(visitQuery, testItem.ID.RemoveBrackets(), startDate, endDate).ToList();
                    if (visitResults.Count == 0)
                    {
                        return(new List <VisitVariation>());
                    }

                    //get hits that hit goal
                    var engagementResults = AnalyticsDataContext.ExecuteQuery <VisitVariation>(evQuery, testItem.ID.RemoveBrackets(), goalItem.ID.RemoveBrackets(), startDate, endDate).ToList();

                    List <VisitVariation> variations = new List <VisitVariation>();
                    foreach (VisitVariation variationResult in visitResults)
                    {
                        VisitVariation result        = variationResult;
                        Int32          achievedCount = engagementResults.Where(x => x.TestValues == result.TestValues).Select(x => x.AchievedGoalCount).FirstOrDefault();
                        result.AchievedGoalCount = achievedCount;

                        variations.Add(result);
                    }

                    return(variations);
                }
            }
            catch (Exception e)
            {
                Logger.Error("Page Statistics Context - Could not retrieve the achieved goals");
                Logger.Error(e.Message);
                Logger.Error(e.InnerException);
            }

            return(new List <VisitVariation>());
        }