private List <Tuple <string, string> > GetCheckSummaryAvgForSpecifiedTimeSpan(int checkId)
        {
            int i = 7;
            List <Tuple <string, string> > summaryValues = new List <Tuple <string, string> >();

            while (i >= 1)
            {
                //Get the average response time for the past 7 hours/weeks based on the frequency.
                long fromTime = 0;
                long toTime   = 0;
                if (Frequency.Equals("Hourly", StringComparison.OrdinalIgnoreCase))
                {
                    fromTime = UnixTimeStampUtility.GetUnixTimestampSeconds(DateTime.UtcNow.Subtract(new TimeSpan(0, i, 0, 0)));
                    toTime   = UnixTimeStampUtility.GetUnixTimestampSeconds(DateTime.UtcNow.Subtract(new TimeSpan(0, i - 1, 0, 0)));
                }
                else
                {
                    fromTime = UnixTimeStampUtility.GetUnixTimestampSeconds(DateTime.UtcNow.Subtract(new TimeSpan(i, 0, 0, 0)));
                    toTime   = UnixTimeStampUtility.GetUnixTimestampSeconds(DateTime.UtcNow.Subtract(new TimeSpan(i - 1, 0, 0, 0)));
                }
                NetworkCredential nc      = new NetworkCredential(UserName, Password);
                WebRequest        request = WebRequest.Create(string.Format("https://api.pingdom.com/api/2.0/summary.average/{0}?from={1}&to={2}", checkId, fromTime, toTime));
                request.Credentials = nc;
                request.Headers.Add(AppKey);
                request.PreAuthenticate = true;
                request.Method          = "GET";
                WebResponse respose = request.GetResponse();
                using (var reader = new StreamReader(respose.GetResponseStream()))
                {
                    JavaScriptSerializer js = new JavaScriptSerializer();
                    var summaryObject       = js.Deserialize <dynamic>(reader.ReadToEnd());
                    foreach (var summary in summaryObject["summary"])
                    {
                        foreach (var status in summary.Value)
                        {
                            //Get the average response time and store it to the JSON object.
                            if (status.Key == "avgresponse")
                            {
                                if (Frequency.Equals("Hourly", StringComparison.OrdinalIgnoreCase))
                                {
                                    summaryValues.Add(new Tuple <string, string>(String.Format("{0:HH:mm}", UnixTimeStampUtility.DateTimeFromUnixTimestampSeconds(fromTime).ToLocalTime()), status.Value.ToString()));
                                }
                                else
                                {
                                    summaryValues.Add(new Tuple <string, string>(String.Format("{0:MM/dd}", UnixTimeStampUtility.DateTimeFromUnixTimestampSeconds(fromTime).ToLocalTime()), status.Value.ToString()));
                                }
                            }
                        }
                    }
                }
                i--;
            }
            return(summaryValues);
        }
        private void GetDetailedReportForCheck(string checkAlias)
        {
            DateTime startingTime = DateTime.Now.AddHours(DateTime.Now.Hour * -1).AddDays(NoOfDays * -1); //get the midnight time for today to create separate report for each day.

            for (int j = 0; j <= NoOfDays; j++)
            {
                int i = 0;
                List <Tuple <string, string> > summaryValues = new List <Tuple <string, string> >();
                while (i <= 23) //get th values for each hour. TBD : For today, there may not be values for all 24 hours and they are being filled as zero.Need to fix it.
                {
                    long fromTime = 0;
                    long toTime   = 0;

                    fromTime = UnixTimeStampUtility.GetUnixTimestampSeconds(startingTime.ToUniversalTime());
                    toTime   = UnixTimeStampUtility.GetUnixTimestampSeconds(startingTime.AddHours(1).ToUniversalTime());

                    NetworkCredential nc      = new NetworkCredential(UserName, Password);
                    WebRequest        request = WebRequest.Create(string.Format("https://api.pingdom.com/api/2.0/summary.average/{0}?from={1}&to={2}", CheckId, fromTime, toTime));
                    request.Credentials = nc;
                    request.Headers.Add(AppKey);
                    request.PreAuthenticate = true;
                    request.Method          = "GET";
                    WebResponse respose = request.GetResponse();
                    using (var reader = new StreamReader(respose.GetResponseStream()))
                    {
                        JavaScriptSerializer js = new JavaScriptSerializer();
                        var summaryObject       = js.Deserialize <dynamic>(reader.ReadToEnd());
                        foreach (var summary in summaryObject["summary"])
                        {
                            foreach (var status in summary.Value)
                            {
                                //Get the average response time and store it to the JSON object.
                                if (status.Key == "avgresponse")
                                {
                                    summaryValues.Add(new Tuple <string, string>(String.Format("{0:HH:mm}", UnixTimeStampUtility.DateTimeFromUnixTimestampSeconds(fromTime).ToLocalTime()), status.Value.ToString()));
                                }
                            }
                        }
                    }
                    i++;
                    startingTime = startingTime.AddHours(1);
                }
                JArray reportObject = ReportHelpers.GetJson(summaryValues);
                ReportHelpers.CreateBlob(StorageAccount, checkAlias + string.Format("{0:MMdd}", startingTime.AddHours(-1)) + "DetailedReport.json", ContainerName, "application/json", ReportHelpers.ToStream(reportObject));
            }
        }
        private void CreateWeeklyStatReportFor(string connectionString, string sqlQuery, string reportName)
        {
            startingTime = new DateTime(Year, UnixTimeStampUtility.GetMonthNumber(Month), 01); //initialize to day 01 of the given month.
            DateTime monthEndTime = new DateTime(Year, UnixTimeStampUtility.GetMonthNumber(Month), UnixTimeStampUtility.GetDaysInMonth(Month));
            List <Tuple <string, string> > uploadsDataPoints = new List <Tuple <string, string> >();
            int week = 1;

            using (var sqlConnection = new SqlConnection(connectionString))
            {
                using (var dbExecutor = new SqlExecutor(sqlConnection))
                {
                    sqlConnection.Open();

                    while (startingTime <= monthEndTime)
                    {
                        DateTime endTime = startingTime.AddDays(7);
                        if (endTime > monthEndTime)
                        {
                            endTime = monthEndTime;
                        }
                        try
                        {
                            var count = dbExecutor.Query <Int32>(string.Format(sqlQuery, startingTime.ToString("yyyy-MM-dd"), endTime.ToString("yyyy-MM-dd"))).SingleOrDefault();
                            uploadsDataPoints.Add(new Tuple <string, string>("Week" + week++, count.ToString()));
                        }
                        catch (NullReferenceException)
                        {
                            uploadsDataPoints.Add(new Tuple <string, string>("Week" + week++, "0"));
                        }

                        startingTime = startingTime.AddDays(7);
                    }
                }
            }
            JArray reportObject = ReportHelpers.GetJson(uploadsDataPoints);

            ReportHelpers.CreateBlob(ReportStorage, reportName + Month + "MonthlyReport.json", "dashboard", "application/json", ReportHelpers.ToStream(reportObject));
        }