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>()); }