public void UpdateDateRange(DateTime startDate, DateTime endDate)
        {
            var currentDate = startDate;

            while (currentDate <= endDate)
            {
                var gameDateId = currentDate.ToGameDateId();

                Console.Out.WriteLine($"Updating date: {gameDateId}");
                try
                {
                    var playerScores = _statsProvider.GetScoresForDateAsync(gameDateId).Result;

                    var season = new Season
                    {
                        ExternalId = _settings.SeasonId
                    };
                    var gds = new GameDateSeason
                    {
                        GameDateId = gameDateId,
                        Season     = season
                    };

                    var gameDate = new GameDate
                    {
                        Id = gameDateId,
                        PlayersStatsOnDate = playerScores
                    };

                    gameDate.GameDateSeasons.Add(gds);

                    Console.Out.WriteLine("Updating team date");
                    var result = _client.UpdateAsync("updateGameDateStats", gameDate).Result;
                    if (result == null)
                    {
                        Console.Error.WriteLine("Null result");
                    }
                    else if (!result.Success)
                    {
                        Console.Error.WriteLine($"Failed to update. Message {result.Message}");
                    }
                    Console.Out.WriteLine("Done updating date");
                }
                catch (Exception e)
                {
                    Console.Error.WriteLine($"Update failed. {e.Message}. {e.StackTrace}");
                }

                currentDate = currentDate.AddDays(1);
            }
        }
        public static void UpdateDate(DateRequest request)
        {
            var builder = new ConfigurationBuilder()
                          .AddEnvironmentVariables();
            var configuration = builder.Build();

            var serviceProvider = new ServiceCollection()
                                  .AddOptions()
                                  .Configure <Settings>(configuration.GetSection("Settings"))
                                  .AddSingleton <StatsProvider>()
                                  .AddAuth0Client(configuration)
                                  .AddStaplePuckClient(configuration)
                                  .BuildServiceProvider();

            var provider     = serviceProvider.GetService <StatsProvider>();
            var playerScores = provider.GetScoresForDateAsync(request.GameDateId).Result;
            //var teamStates = provider.GetTeamsStatesAsync(request.SeasonId).Result;


            var season = new Season
            {
                ExternalId = request.SeasonId
            };
            var gds = new GameDateSeason
            {
                GameDateId = request.GameDateId,
                Season     = season
            };

            var gameDate = new GameDate
            {
                Id = request.GameDateId,
                PlayersStatsOnDate = playerScores,
            };

            gameDate.GameDateSeasons.Add(gds);
            //gameDate.GameDateSeasons = null;
            //gameDate.PlayersStatsOnDate = null;
            //gameDate.TeamsStateOnDate = null;

            var client = serviceProvider.GetService <IStaplePuckClient>();
            var result = client.UpdateAsync("updateGameDateStats", gameDate).Result;

            if (!result.Success)
            {
                Console.Error.WriteLine($"Failed to update stats. {result.Message}");
            }
        }
        public void Update()
        {
            bool done           = false;
            var  previousDateId = string.Empty;

            while (!done)
            {
                try
                {
                    var gameDateId = DateExtensions.TodaysDateId();

                    Console.Out.WriteLine($"Updating date: {gameDateId}");
                    var playerScores = _statsProvider.GetScoresForDateAsync(gameDateId).Result;

                    var season = new Season
                    {
                        ExternalId = _settings.SeasonId
                    };
                    var gds = new GameDateSeason
                    {
                        GameDateId = gameDateId,
                        Season     = season
                    };

                    var gameDate = new GameDate
                    {
                        Id = gameDateId,
                        PlayersStatsOnDate = playerScores
                    };

                    if (gameDateId != previousDateId)
                    {
                        Console.Out.WriteLine("Getting team states");
                        var teamStates = _statsProvider.GetTeamsStatesAsync(_settings.SeasonId).Result;
                        var teamResult = _client.UpdateAsync("updateTeamStates", teamStates, "teamStates", "[TeamStateForSeasonInput]").Result;
                        if (teamResult == null)
                        {
                            Console.Error.WriteLine("Null result");
                        }
                        else if (!teamResult.Success)
                        {
                            Console.Error.WriteLine($"Failed to update. Message {teamResult.Message}");
                        }
                        Console.Out.WriteLine("Done updating date");
                    }

                    gameDate.GameDateSeasons.Add(gds);

                    Console.Out.WriteLine("Updating team date");
                    var result = _client.UpdateAsync("updateGameDateStats", gameDate).Result;
                    if (result == null)
                    {
                        Console.Error.WriteLine("Null result");
                    }
                    else if (!result.Success)
                    {
                        Console.Error.WriteLine($"Failed to update. Message {result.Message}");
                    }
                    Console.Out.WriteLine("Done updating date");
                    previousDateId = gameDateId;
                }
                catch (Exception e)
                {
                    Console.Error.WriteLine($"Update failed. {e.Message}. {e.StackTrace}");
                }
                if (!_settings.Continuous)
                {
                    done = true;
                }
                else
                {
                    Task.Delay(_settings.Delay).Wait();
                }
            }
        }