/// <summary>
        /// Creates the report.
        /// </summary>
        /// <param name="daysForReport">The days for report.</param>
        /// <param name="bucketSize">Size of the bucket.</param>
        /// <returns>
        /// A full report outlining specific information based the supplied weather data
        /// </returns>
        public string CreateReport(WeatherDataCollection daysForReport, int bucketSize)
        {
            var report = new StringBuilder();

            this.bucketSize = bucketSize;
            var years = daysForReport.GroupByYear();

            foreach (var year in years)
            {
                var tempWeatherCollection = new WeatherDataCollection();
                foreach (var day in year)
                {
                    tempWeatherCollection.Add(day);
                }
            }

            report.Append(Environment.NewLine);

            this.createYearlyBreakdown(daysForReport, report);
            return(report.ToString());
        }
        private void createYearlyBreakdown(WeatherDataCollection daysForReport, StringBuilder report)
        {
            var years = daysForReport.GroupByYear();

            foreach (var year in years)
            {
                var tempWeatherCollection = new WeatherDataCollection();
                foreach (var day in year)
                {
                    tempWeatherCollection.Add(day);
                }

                this.createOverview(tempWeatherCollection, report);
                report.Append(Environment.NewLine);

                var upperBound = tempWeatherCollection.GetDaysWithHighestTempForAYear()[0].High;
                var lowerBound = tempWeatherCollection.GetDaysWithLowestHighTempByYear()[0].High;


                report.Append("Highest Temp Histogram" + Environment.NewLine);
                this.createHistogram(report, tempWeatherCollection, lowerBound, upperBound, this.bucketSize, HighLow.High);
                report.Append(Environment.NewLine);


                upperBound = tempWeatherCollection.GetDaysWithHighestLowTempByYear()[0].Low;
                lowerBound = tempWeatherCollection.GetDaysWithLowestTempByYear()[0].Low;


                report.Append("Lowest Temp Histogram" + Environment.NewLine);
                this.createHistogram(report, tempWeatherCollection, lowerBound, upperBound, this.bucketSize, HighLow.Low);
                report.Append(Environment.NewLine);


                this.createMonthlyBreakdown(tempWeatherCollection, report);
            }
        }