public async Task <List <PlayerStatsDto> > getPlayerStats() { var playersDto = new List <PlayerStatsDto>(); var matchesWithTeamsAndPlayers = await _statsRepository.getMatchesWithTeamsAndPlayers(); foreach (var match in matchesWithTeamsAndPlayers) { foreach (var player in match.TeamPlayerA) { playersDto.Add(new PlayerStatsDto() { Draws = (match.ScoreTeamA == match.ScoreTeamB) ? 1 : 0, Losses = (match.ScoreTeamA < match.ScoreTeamB) ? 1 : 0, Wins = (match.ScoreTeamA > match.ScoreTeamB) ? 1 : 0, Player = player.Player }); } foreach (var player in match.TeamPlayerB) { playersDto.Add(new PlayerStatsDto() { Draws = (match.ScoreTeamA == match.ScoreTeamB) ? 1 : 0, Losses = (match.ScoreTeamA > match.ScoreTeamB) ? 1 : 0, Wins = (match.ScoreTeamA < match.ScoreTeamB) ? 1 : 0, Player = player.Player }); } } playersDto = playersDto.OrderBy(p => p.Player.Id).ToList(); var playerId = playersDto[0].Player.Id; var playerLastDto = new PlayerStatsDto(); var playerLastDtoList = new List <PlayerStatsDto>(); foreach (var player in playersDto) { if (playerId == player.Player.Id) { playerLastDto.Player = player.Player; playerLastDto.Draws = playerLastDto.Draws + player.Draws; playerLastDto.Wins = playerLastDto.Wins + player.Wins; playerLastDto.Losses = playerLastDto.Losses + player.Losses; } else { playerLastDtoList.Add(playerLastDto); playerLastDto = new PlayerStatsDto(); playerId = player.Player.Id; playerLastDto.Player = player.Player; playerLastDto.Draws = playerLastDto.Draws + player.Draws; playerLastDto.Wins = playerLastDto.Wins + player.Wins; playerLastDto.Losses = playerLastDto.Losses + player.Losses; } } playerLastDtoList.Add(playerLastDto); return(playerLastDtoList); }
public async Task GetPlayerStats_should_return_player_stats_when_player_exists() { var playerStatsDto = new PlayerStatsDto { TotalMatchesPlayed = 50 }; A.CallTo(() => _fakeMediator.Send(A <GetPlayerStatsQuery> ._, A <CancellationToken> ._)).Returns(playerStatsDto); var result = await _statsController.GetPlayerStats(string.Empty) as OkNegotiatedContentResult <PlayerStatsDto>; Assert.NotNull(result); Assert.AreEqual(50, result.Content.TotalMatchesPlayed); }
private async Task <PlayerStatsDto> GetPlayerStatsAsync(string playerStatsLink) { var playerStatsPage = await this.context.OpenAsync(playerStatsLink); var cleanSheets = playerStatsPage.QuerySelector(".statclean_sheet")?.TextContent.Trim().Replace(",", string.Empty); var goalsConc = playerStatsPage.QuerySelector(".statgoals_conceded")?.TextContent.Trim().Replace(",", string.Empty); var fouls = playerStatsPage.QuerySelector(".statfouls")?.TextContent.Trim().Replace(",", string.Empty); var shots = playerStatsPage.QuerySelector(".stattotal_scoring_att")?.TextContent.Trim().Replace(",", string.Empty); var shotsOnTarget = playerStatsPage.QuerySelector(".statontarget_scoring_att")?.TextContent.Trim().Replace(",", string.Empty); var passes = playerStatsPage.QuerySelector(".stattotal_pass")?.TextContent.Trim().Replace(",", string.Empty); var bigChanceCreated = playerStatsPage.QuerySelector(".statbig_chance_created")?.TextContent.Trim().Replace(",", string.Empty); var tackles = playerStatsPage.QuerySelector(".stattotal_tackle")?.TextContent.Trim().Replace(",", string.Empty); var cleareances = playerStatsPage.QuerySelector(".stattotal_clearance")?.TextContent.Trim().Replace(",", string.Empty); var appearances = playerStatsPage.QuerySelector(".statappearances")?.TextContent.Trim(); var wins = playerStatsPage.QuerySelector(".statwins")?.TextContent.Trim(); var losses = playerStatsPage.QuerySelector(".statlosses")?.TextContent.Trim(); var goals = playerStatsPage.QuerySelector(".statgoals")?.TextContent.Trim(); var assists = playerStatsPage.QuerySelector(".statgoal_assist")?.TextContent.Trim(); var yellowCards = playerStatsPage.QuerySelector(".statyellow_card")?.TextContent.Trim(); var redCards = playerStatsPage.QuerySelector(".statred_card")?.TextContent.Trim(); var playerStatsTotalDto = new PlayerStatsDto { Appearances = appearances != null?int.Parse(appearances) : 0, Wins = wins != null?int.Parse(wins) : 0, Losses = losses != null?int.Parse(losses) : 0, Goals = goals != null?int.Parse(goals) : 0, Assists = assists != null?int.Parse(assists) : 0, YellowCards = yellowCards != null?int.Parse(yellowCards) : 0, RedCards = redCards != null?int.Parse(redCards) : 0, CleanSheets = cleanSheets != null?int.Parse(cleanSheets) : (int?)null, GoalsConceded = goalsConc != null?int.Parse(goalsConc) : (int?)null, Fouls = fouls != null?int.Parse(fouls) : (int?)null, Shots = shots != null?int.Parse(shots) : (int?)null, ShotsOnTarget = shotsOnTarget != null?int.Parse(shotsOnTarget) : (int?)null, Passes = passes != null?int.Parse(passes) : (int?)null, BigChanceCreated = bigChanceCreated != null?int.Parse(bigChanceCreated) : (int?)null, Tackles = tackles != null?int.Parse(tackles) : (int?)null, Clearences = cleareances != null?int.Parse(cleareances) : (int?)null, }; return(playerStatsTotalDto); }