public IEnumerable <LineChartData> GetLineChartDataForCheckRate(LineChartArgs args) { var data = new List <LineChartData>(); switch (args.Unit.ToLowerInvariant()) { case "hour": args.Bucket = "hourbucket"; args.Multiplier = 60; break; case "day": args.Bucket = "daybucket"; args.Multiplier = 1440; break; default: args.Bucket = "minutebucket"; args.Multiplier = 1; break; } using (var cmd = GetLineChartDataForCheckRateCommand(args)) { using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { var minutes = Convert.ToInt32(reader["MinutesBucket"]); var date = BucketBaselineDate.AddMinutes(minutes); data.Add(new LineChartData { Value = Convert.ToDouble(reader["ResultCount"]), When = Convert.ToDateTime(date) }); } } } return(data); }
protected override AdhocCommandBase GetLineChartDataForCheckRateCommand(LineChartArgs args) { var outcome = ConvertOutcome(args.Outcome); var operation = ConvertOperation(args.DataOperation); return(SqlServerAdhocCommand.UsingSmartConnection(myConfig.ConnectionString) .WithSql(SqlServerStatement.Create( "SELECT TOP {0} ({1}*{2}) [MinutesBucket], {3} [ResultCount] FROM AgentData WHERE CheckId=", args.Limit, args.Bucket, args.Multiplier, operation) .InsertParameter("@pCheckId", args.Check) .AppendIf(() => !string.IsNullOrEmpty(outcome), "AND {0}", outcome) .AppendIf(() => !string.IsNullOrEmpty(args.Site), "AND SiteId=") .InsertParameterIf(() => !string.IsNullOrEmpty(args.Site), "@pSiteId", args.Site) .AppendIf(() => !string.IsNullOrEmpty(args.Agent), "AND AgentId=") .InsertParameterIf(() => !string.IsNullOrEmpty(args.Agent), "@pAgentId", args.Agent) .AppendIf(() => !string.IsNullOrEmpty(args.Tag), "AND tag=") .InsertParameterIf(() => !string.IsNullOrEmpty(args.Tag), "@pTag", args.Tag) .Append("GROUP BY {0}", args.Bucket) .OrderBy(args.Bucket))); }
protected abstract AdhocCommandBase GetLineChartDataForCheckRateCommand(LineChartArgs args);