public async Task <IActionResult> AddMatch(SoloTeamMatchDto matchDto)
        {
            var soloTeamPlayers = new List <SoloTeamPlayer>();

            foreach (var playerDto in matchDto.Players)
            {
                var player = await GetOrCreatePlayer(playerDto.Name);

                soloTeamPlayers.Add(new SoloTeamPlayer {
                    Team   = playerDto.Team,
                    Player = player
                });
            }

            var match = new SoloTeamMatch()
            {
                EndTime       = matchDto.EndTime,
                StartTime     = matchDto.StartTime,
                HomeTeamScore = matchDto.Team1Score,
                AwayTeamScore = matchDto.Team2Score,
                Players       = soloTeamPlayers
            };
            var result = await _matchService.AddMatchAsync <SoloTeamMatch>(match);

            return(Ok(result));
        }
        public async Task CalculateElo_MultiplePlayers_TeamAverageUsed(int team1score, int team2score,
                                                                       string p1name, double p1elo, string p2name, double p2elo, string p3name, double p3elo, string p4name, double p4elo)
        {
            IRankedMatch match = new SoloTeamMatch
            {
                Players       = SoloPlayers,
                HomeTeamScore = team1score,
                AwayTeamScore = team2score
            };

            var result = await _sut.AddMatchAsync <SoloTeamMatch>(match);

            var team1      = result.Players.Where(x => x.Team == TeamSide.Home);
            var team2      = result.Players.Where(x => x.Team == TeamSide.Away);
            var t1_player1 = team1.First().Player;
            var t1_player2 = team1.Last().Player;
            var t2_player1 = team2.First().Player;
            var t2_player2 = team2.Last().Player;

            Assert.Equal(p1name, t1_player1.Name);
            Assert.Equal(p1elo, t1_player1.CurrentElo, 1);
            Assert.Equal(p2name, t1_player2.Name);
            Assert.Equal(p2elo, t1_player2.CurrentElo, 1);
            Assert.Equal(p3name, t2_player1.Name);
            Assert.Equal(p3elo, t2_player1.CurrentElo, 1);
            Assert.Equal(p4name, t2_player2.Name);
            Assert.Equal(p4elo, t2_player2.CurrentElo, 1);
        }
        public async Task CalculateElo_SoloTeamMatch_IndividualEloChange()
        {
            var match = new SoloTeamMatch
            {
                Players       = SoloPlayers,
                HomeTeamScore = 1,
                AwayTeamScore = 0
            };

            var result = await _sut.AddMatchAsync <SoloTeamMatch>(match);

            Assert.All(match.Players, x => Assert.Equal(21.1, x.Match.EloChange, 1));
        }