public static void ConvertTournament(SmashGgHandler.Tournament tournamentObject, List <Event> events, List <Set> sets, List <Player> players, Game game)
        {
            var dbContext  = new SmashggTrackerContext();
            var tournament = new Models.Tournament
            {
                Name      = tournamentObject.name,
                SmashggId = tournamentObject.id
            };

            foreach (var @event in events)
            {
                tournament.Events.Add(new GameEvent
                {
                    Name      = @event.name,
                    SmashggId = @event.id
                });
            }
            foreach (var player in players)
            {
                var playerObject = dbContext.Players.FirstOrDefault(x => x.SmashggId == (int)player.Id);
                if (playerObject == null)
                {
                    playerObject = new Models.Player
                    {
                        SmashggId = (int)player.Id,
                        Name      = player.GamerTag,
                        Sponsor   = player.Prefix
                    };
                    dbContext.Players.Add(playerObject);
                }
            }
            foreach (var set in sets)
            {
                var setObject = new Match
                {
                    SmashggId = (int)set.Id,
                    Position  = set.FullRoundText,
                    Event     = tournament.Events.FirstOrDefault(x => x.SmashggId == (int)set.EventId),
                    Game      = game,
                };
                if (set.CompletedAt != null)
                {
                    setObject.DateDouble = (double)set.CompletedAt;
                }
                if (set.Entrant1Score != null)
                {
                    setObject.Score1 = (int)set.Entrant1Score;
                }
                if (set.Entrant2Score != null)
                {
                    setObject.Score2 = (int)set.Entrant2Score;
                }

                var player1 = players.FirstOrDefault(x => Convert.ToInt64(x.EntrantId) == set.Entrant1Id);
                if (player1 != null)
                {
                    setObject.Player1 = dbContext.Players.FirstOrDefault(x => x.SmashggId == (int)player1.Id);
                }
                var player2 = players.FirstOrDefault(x => Convert.ToInt64(x.EntrantId) == set.Entrant2Id);
                if (player2 != null)
                {
                    setObject.Player2 = dbContext.Players.FirstOrDefault(x => x.SmashggId == (int)player2.Id);
                }
                foreach (var setGame in set.Games)
                {
                    var gameMatch = new GameMatch();
                    if (setGame.Entrant1P1CharacterId != null)
                    {
                        gameMatch.CharacterIdP1 = (int)setGame.Entrant1P1CharacterId;
                    }
                    else if (setGame.Selections != null)
                    {
                        var selection = setGame.Selections[setGame.Entrant1Id.ToString()];
                        var character = selection?["character"];
                        if (character != null)
                        {
                            gameMatch.CharacterIdP1 = (int)character[0].SelectionValue;
                        }
                    }
                    if (setGame.Entrant2P1CharacterId != null)
                    {
                        gameMatch.CharacterIdP2 = (int)setGame.Entrant2P1CharacterId;
                    }
                    else if (setGame.Selections != null)
                    {
                        var selection = setGame.Selections[setGame.Entrant2Id.ToString()];
                        var character = selection?["character"];
                        if (character != null)
                        {
                            gameMatch.CharacterIdP2 = (int)character[0].SelectionValue;
                        }
                    }
                    if (setGame.StageId != null)
                    {
                        gameMatch.StageId = (int)setGame.StageId;
                    }
                    if (setGame.Entrant1P1Stocks != null)
                    {
                        gameMatch.StocksP1 = (int)setGame.Entrant1P1Stocks;
                    }
                    if (setGame.Entrant2P1Stocks != null)
                    {
                        gameMatch.StocksP2 = (int)setGame.Entrant2P1Stocks;
                    }
                    setObject.Matches.Add(gameMatch);
                }

                if (setObject.Player1 != null && setObject.Player2 != null)
                {
                    tournament.Matches.Add(setObject);
                }
            }
            Console.WriteLine("Matches saved: " + tournament.Matches.Count);
            dbContext.Tournaments.Add(tournament);
            dbContext.SaveChanges();
        }
        public IActionResult HeadToHead()
        {
            var dbContext = new SmashggTrackerContext();
            int user1     = 549;
            int user2     = 544;
            var player1   = dbContext.Players.FirstOrDefault(x => x.Id == user1);
            var player2   = dbContext.Players.FirstOrDefault(x => x.Id == user2);
            var matches   = dbContext.Matches
                            .Where(x => (x.Player1.Id == user1 || x.Player2.Id == user1) &&
                                   (x.Player2.Id == user2 || x.Player1.Id == user2)).Include(x => x.Player1)
                            .Include(x => x.Player2).Include(x => x.Matches).Include(x => x.Tournament).ToList();

            ViewBag.Player1 = player1.Name;
            ViewBag.Player2 = player2.Name;
            var stageMatchupP1   = new StageMatchup();
            var characterStatsP1 = new StageMatchup();
            var characterStatsP2 = new StageMatchup();

            foreach (var match in matches)
            {
                foreach (var game in match.Matches)
                {
                    if (match.Player1.Id == user1)
                    {
                        if (game.StocksP1 > game.StocksP2)
                        {
                            if (!string.IsNullOrEmpty(StageConverter.GetStageById(game.StageId)))
                            {
                                stageMatchupP1.AddStageWin(game.StageId);
                            }
                            if (!string.IsNullOrEmpty(CharacterConverter.GetChracterById(game.CharacterIdP1 - 1)))
                            {
                                characterStatsP1.AddStageWin(game.CharacterIdP1);
                            }
                            if (!string.IsNullOrEmpty(CharacterConverter.GetChracterById(game.CharacterIdP2 - 1)))
                            {
                                characterStatsP2.AddStageLoss(game.CharacterIdP2);
                            }
                        }
                        else
                        {
                            if (!string.IsNullOrEmpty(StageConverter.GetStageById(game.StageId)))
                            {
                                stageMatchupP1.AddStageLoss(game.StageId);
                            }
                            if (!string.IsNullOrEmpty(CharacterConverter.GetChracterById(game.CharacterIdP1 - 1)))
                            {
                                characterStatsP1.AddStageLoss(game.CharacterIdP1);
                            }
                            if (!string.IsNullOrEmpty(CharacterConverter.GetChracterById(game.CharacterIdP2 - 1)))
                            {
                                characterStatsP2.AddStageWin(game.CharacterIdP2);
                            }
                        }
                    }
                    else if (!string.IsNullOrEmpty(StageConverter.GetStageById(game.StageId)))
                    {
                        if (game.StocksP1 > game.StocksP2)
                        {
                            if (!string.IsNullOrEmpty(StageConverter.GetStageById(game.StageId)))
                            {
                                stageMatchupP1.AddStageLoss(game.StageId);
                            }
                            if (!string.IsNullOrEmpty(CharacterConverter.GetChracterById(game.CharacterIdP1 - 1)))
                            {
                                characterStatsP1.AddStageLoss(game.CharacterIdP1);
                            }
                            if (!string.IsNullOrEmpty(CharacterConverter.GetChracterById(game.CharacterIdP2 - 1)))
                            {
                                characterStatsP2.AddStageWin(game.CharacterIdP2);
                            }
                        }
                        else
                        {
                            if (!string.IsNullOrEmpty(StageConverter.GetStageById(game.StageId)))
                            {
                                stageMatchupP1.AddStageWin(game.StageId);
                            }
                            if (!string.IsNullOrEmpty(CharacterConverter.GetChracterById(game.CharacterIdP1 - 1)))
                            {
                                characterStatsP1.AddStageWin(game.CharacterIdP1);
                            }
                            if (!string.IsNullOrEmpty(CharacterConverter.GetChracterById(game.CharacterIdP2 - 1)))
                            {
                                characterStatsP2.AddStageLoss(game.CharacterIdP2);
                            }
                        }
                    }
                }
            }
            ViewBag.StagesP1    = stageMatchupP1;
            ViewBag.CharacterP1 = characterStatsP1;
            ViewBag.CharacterP2 = characterStatsP2;
            return(View(matches));
        }