private async Task ApplyTemperatureSummaries(TemperatureSummary temperatureSummary)
        {
            var temperature
                = await _weatherStationReadingRepository
                  .GetTemperatureReading(STATIONID, TemperatureReadingType.OUTSIDE);

            var today = temperature
                        .Recent
                        .Where(m => m.MeasurementTime >= DateTime.Today);

            var latest = today
                         .OrderByDescending(m => m.MeasurementTime)
                         .FirstOrDefault();

            if (today.Any())
            {
                temperatureSummary.Location  = TemperatureReadingType.OUTSIDE.ToString();
                temperatureSummary.HighToday = today.Max(v => v.Value);
                temperatureSummary.LowToday  = today.Min(v => v.Value);

                if (latest != null)
                {
                    temperatureSummary.Latest = latest.Value;
                    temperatureSummary.LatestMeasurementTime = latest.MeasurementTime;
                }
            }
        }
        public Summary Build()
        {
            _logger.Log(LogLevel.Information, "Building summary...");

            var rainfallSummaries  = new List <RainfallSummary>();
            var temperatureSummary = new TemperatureSummary();

            Task.WaitAll(
                ApplyRainfallSummaries(rainfallSummaries),
                ApplyTemperatureSummaries(temperatureSummary));

            return(new Summary()
            {
                RainfallSummaries = rainfallSummaries,
                TemperatureSummary = temperatureSummary
            });
        }