Esempio n. 1
0
        private static void UpdateHistoricalWeather(List <WeatherNode> nodes)
        {
            var endDate      = DateTime.SpecifyKind(DateTime.Now.Date, DateTimeKind.Utc);
            var startDate    = endDate.AddDays(-1 * DEFAULT_DAYS_TO_CHECK_FOR_HISTORICAL_WEATHER);
            int requestCount = 0;

            foreach (var node in nodes)
            {
                int nodeRequests = 0;
                var missingDates = GetMissingWeatherDatesForNode(node, startDate, endDate);
                foreach (var date in missingDates)
                {
                    var result = _weatherClient.GetWeather(node.Name, date);


                    if (result?.Hourly != null && result.Hourly.Any() && result?.Daily != null && result.Daily.Any())
                    {
                        var dateTime = TimeConversion.ConvertToDateTime(result.Daily[0].Time);

                        //Write to C*
                        _session.Insert(result.Hourly);
                        _session.Insert(result.Daily);

                        //Increment counters
                        nodeRequests++;
                        requestCount++;

                        //Check request limits and exit if reached cap
                        if (requestCount >= MAX_HISTORICAL_FORECASTIO_REQUESTS_PER_RUN)
                        {
                            LogNodeHistoricalUpdate(nodeRequests, node.Name, missingDates.First(), date);
                            return;
                        }
                    }
                }
                if (nodeRequests > 0)
                {
                    LogNodeHistoricalUpdate(nodeRequests, node.Name, missingDates.First(), missingDates.Last());
                    return;
                }
            }
        }