internal override void Write(SplitView split) { try { using (var conn = new SqlConnection(ConnectionString)) { conn.Open(); var cmd = new SqlCommand(CommandText, conn); foreach (var parameter in Parameters) { if (CommandText.Contains(parameter.Key)) { cmd.Parameters.AddWithValue(parameter.Key, ParameterRetriever.RetireveValue(split, parameter.Value)); } } cmd.ExecuteNonQuery(); conn.Close(); } } catch (Exception ex) { if (TargetService.Config.Targets.ThrowExceptions) { throw new Exception("Exception occurred in AbTestMaster when writing to database. Error Message: " + ex.Message); } } }
internal void WriteToFile(SplitView split) { var keyValuePairs = new Dictionary<string, string> { {Constants.SPLIT_GROUP, split.SplitGroup}, {Constants.SPLIT_NAME, split.SplitViewName}, {Constants.SPLIT_SEQUENCE, split.Sequence} }; CheckForFile(Constants.SPLIT_VIEWS_FILE_PATH, new List<string> { Constants.DATE_TIME, Constants.SPLIT_GROUP, Constants.SPLIT_NAME, Constants.SPLIT_SEQUENCE }); WriteToFile(keyValuePairs, Constants.SPLIT_VIEWS_FILE_PATH); }
internal void WriteToFile(SplitView split) { var keyValuePairs = new Dictionary<string, string> { {Constants.DATE_TIME, DateTime.UtcNow.ToString()}, {Constants.SPLIT_GROUP, split.SplitGroup}, {Constants.SPLIT_NAME, split.SplitViewName}, {Constants.SPLIT_GOAL, split.Goal} }; CheckForFile(Constants.SPLIT_VIEWS_FILE_PATH, new List<string> { Constants.DATE_TIME, Constants.SPLIT_GROUP, Constants.SPLIT_NAME, Constants.SPLIT_GOAL }); WriteToFile(keyValuePairs, Constants.SPLIT_VIEWS_FILE_PATH); }
public SplitView GetSplitView(SplitView splitView) { try { using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings[TargetService.Config.SplitViews.ConnectionStringName].ConnectionString)) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = @"SELECT SplitGroup, SplitGoal, Ratio FROM [dbo].[AbSplitView] WHERE SplitName = @SplitName"; cmd.Parameters.AddWithValue("@SplitName", splitView.SplitViewName); using (var reader = cmd.ExecuteReader()) { if (reader.Read()) { if (!reader.IsDBNull(0)) { splitView.SplitGroup = reader.GetString(0); } if (!reader.IsDBNull(1)) { splitView.Goal = reader.GetString(1); } if (!reader.IsDBNull(2)) { splitView.Ratio = reader.GetDouble(2); } } } } conn.Close(); } } catch (Exception ex) { if (TargetService.Config.Targets.ThrowExceptions) { throw new Exception("Exception occurred in AbTestMaster when writing to database. Error Message: " + ex.Message); } } return splitView; }
internal override void Write(SplitView split) { try { var logservice = new LogService(); var values = Parameters.ToDictionary(parameter => parameter.Key, parameter => ParameterRetriever.RetireveValue(split, parameter.Value).ToString()); logservice.WriteToFile(values, Path); } catch (Exception ex) { if (TargetService.Config.Targets.ThrowExceptions) { throw new Exception("Exception occurred in AbTestMaster when writing to file. Error Message: " + ex.Message); } } }
private void AddRemoveArea(ControllerContext controllerContext, SplitView selectedSplit) { if (String.IsNullOrEmpty(selectedSplit.Area)) { if (controllerContext.RouteData.Values.ContainsKey(Constants.AREA)) { controllerContext.RouteData.Values.Remove(Constants.AREA); } } else { if (controllerContext.RouteData.Values.ContainsKey(Constants.AREA)) { controllerContext.RouteData.Values[Constants.AREA] = selectedSplit.Area; } else { controllerContext.RouteData.Values.Add(Constants.AREA, selectedSplit.Area); } } }
internal static object RetireveValue(SplitView view, string parameterName) { object value; switch (parameterName) { case Constants.SPLIT_GROUP_VARIABLE: value = view.SplitGroup; break; case Constants.SPLIT_NAME_VARIABLE: value = view.SplitViewName; break; case Constants.SPLIT_GOAL_VARIABLE: value = view.Goal; break; default: value = RetireveValue(parameterName); break; } return value; }
internal static SplitView ReadFromCookie(string splitGroup) { SplitView split = null; HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(Constants.AB_TEST_MASTER_COOKIE + "_" + splitGroup); if (cookie != null) { split = new SplitView { SplitGroup = cookie[Constants.SPLIT_GROUP], SplitViewName = cookie[Constants.SPLIT_NAME], Goal = cookie[Constants.SPLIT_GOAL] ?? cookie[Constants.SPLIT_SEQUENCE], Action = cookie[Constants.ACTION], Controller = cookie[Constants.CONTROLLER], Area = cookie[Constants.AREA], Namespace = cookie[Constants.NAMESPACES] }; } return split; }
private static string FormatSplitViewData(SplitView splitView) { string output = string.Empty; if (splitView == null) { return output; } output = "(" + splitView.SplitViewName + "#" + splitView.SplitGroup + "#" + splitView.Goal + ")"; return output; }
internal static void SaveToSession(SplitView selectedSplit) { SessionSplitViews.Add(selectedSplit); }
internal static void SaveToCookie(SplitView split) { var myCookie = new HttpCookie(Constants.AB_TEST_MASTER_COOKIE + "_" + split.SplitGroup); myCookie[Constants.SPLIT_GROUP] = split.SplitGroup; myCookie[Constants.SPLIT_NAME] = split.SplitViewName; myCookie[Constants.SPLIT_GOAL] = split.Goal; myCookie[Constants.ACTION] = split.Action; myCookie[Constants.CONTROLLER] = split.Controller; myCookie[Constants.AREA] = split.Area; myCookie[Constants.NAMESPACES] = split.Namespace; myCookie.Expires = DateTime.Now.AddYears(1); HttpContext.Current.Response.Cookies.Add(myCookie); }
public SplitViewAttribute(string splitName, string splitGroup, string sequence) { SplitView = new SplitView { SplitGroup = splitGroup, SplitViewName = splitName, Sequence = sequence }; }
public SplitViewAttribute(string splitName, string splitGroup) { SplitView = new SplitView { SplitGroup = splitGroup, SplitViewName = splitName }; }
private void ReinstantiateController(ControllerContext controllerContext, SplitView splitView, SplitView selectedSplit) { var factory = ControllerBuilder.Current.GetControllerFactory(); if (splitView.Controller != selectedSplit.Controller || splitView.Namespace != selectedSplit.Namespace) { controllerContext.Controller = (ControllerBase)factory.CreateController(controllerContext.RequestContext, selectedSplit.Controller); } }
private void AddRemoveNamespace(ControllerContext controllerContext, SplitView currentSplit, SplitView selectedSplit) { if (currentSplit.Namespace == selectedSplit.Namespace) { return; } if (controllerContext.RouteData.DataTokens.ContainsKey(Constants.NAMESPACES)) { var namespaces = new string[1]; namespaces[0] = selectedSplit.Namespace; controllerContext.RouteData.DataTokens[Constants.NAMESPACES] = namespaces; } }
internal abstract void Write(SplitView split);
public SplitViewAttribute(string splitName, string splitGroup, string goal, double ratio) { SplitView = new SplitView { SplitGroup = splitGroup, SplitViewName = splitName, Goal = goal, Ratio = ratio }; }
public SplitViewAttribute(string splitName, string splitGroup, string goal) { SplitView = new SplitView { SplitGroup = splitGroup, SplitViewName = splitName, Goal = goal }; }