示例#1
0
        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);
        }
示例#2
0
        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)));
        }
示例#3
0
 protected abstract AdhocCommandBase GetLineChartDataForCheckRateCommand(LineChartArgs args);