private Task <IEnumerable <TournamentGameRound> > GenerateGames(TournamentPostRequest game)
        {
            return(Task.Factory.StartNew(() =>
            {
                if (!game.Players?.Any() ?? false)
                {
                    return null;
                }

                var namesOfAvailablePlayers = game.Players.Select(p => p.Id).ToList();
                int maxPlayersNeeded = 4 * game.NumberOfGames;
                var newRealList = GenerateAwesomeList(maxPlayersNeeded, namesOfAvailablePlayers);
                Stack <string> realList = new Stack <string>(newRealList);

                var games = new List <Game>();
                for (int i = 0; realList.Any() && i < game.NumberOfGames; i++)
                {
                    realList.TryPop(out string player_red_1);
                    realList.TryPop(out string player_blue_1);
                    realList.TryPop(out string player_red_2);
                    realList.TryPop(out string player_blue_2);

                    Game newGame = new Game(null, player_red_1, player_red_2, player_blue_1, player_blue_2, DateTime.UtcNow, "", -1, -1);

                    // Don't return games, where there isn't at least 1 player on both teams
                    if (player_blue_1 != null)
                    {
                        games.Add(newGame);
                    }
                }

                return Enumerable.Repeat(new TournamentGameRound(games), 1);
            }));
        }
        public async Task <ActionResult <TournamentGameRound[]> > RequestGames([FromBody] TournamentPostRequest request)
        {
            var games = await GenerateGames(request);

            return(games.ToArray());
        }