/// <summary> /// Returns all stats for this season per player /// </summary> public IEnumerable <Player> GetAllPlayers() { var reader = new PlayerStatsRetriever(_logger); for (int i = 1; i <= PlayerStatsRetriever.MAXPLAYER_ID; i++) { try { if (!_allPlayersCache.ContainsKey(i)) { var player = reader.GetPlayerStats(i); _allPlayersCache.Add(i, player); } } catch (ApplicationException ae) { _logger.WriteErrorMessage(string.Format("Error getting player stats for player id {0}: {1}\r\n{2}", i, ae.Message, ae.StackTrace)); } catch (Exception e) { // some of the ids may throw - only log to debug logger _logger.WriteDebugMessage(string.Format("Error getting player stats for player id {0}: {1}\r\n{2}", i, e.Message, e.StackTrace)); } } return(_allPlayersCache.Values); }
/// <summary> /// Return a single player's stats /// </summary> /// <param name="id">The player id (int)</param> /// <param name="reader">(optional)</param> /// <returns>Player stats</returns> public Player GetPlayer(int id, PlayerStatsRetriever reader = null) { if (reader == null) { reader = new PlayerStatsRetriever(_logger); } if (!_allPlayersCache.ContainsKey(id)) { var player = reader.GetPlayerStats(id); _allPlayersCache.Add(id, player); } return(_allPlayersCache[id]); }
/// <summary> /// Returns a dictionary mapping 15 player stat objects to sale values, representing the currently selected team of the logged on user /// </summary> /// <returns>An Dictionary mapping 15 player objects to their sale price</returns> public Dictionary <Player, int> GetMySquad() { var result = new Dictionary <Player, int>(); CheckAndCreateSession(); var myTeamReader = GetTransferPageRetriever(); var playerReader = new PlayerStatsRetriever(_logger); var playerIdsToValues = myTeamReader.GetMyTeamTransferValues(); foreach (var playerId in playerIdsToValues.Keys) { var player = GetPlayer(playerId, playerReader); result[player] = playerIdsToValues[playerId]; } return(result); }
public async Task Should_get_stats_from_player() { // Arrange var playerStats = new PlayerStatsRetriever(new FakeLoader()); // Act var stats = await playerStats.Retrieve("Rookian"); // Assert stats.SoloWins.ShouldBe(4); stats.SoloLosses.ShouldBe(1); stats.SoloGames.ShouldBe(5); stats.SoloWinRate.ShouldBe(80); stats.SoloLevel.ShouldBe(4); stats.TeamWins.ShouldBe(27); stats.TeamLosses.ShouldBe(16); stats.TeamGames.ShouldBe(43); stats.TeamWinRate.ShouldBe(62.8m); stats.TeamLevel.ShouldBe(12); stats.WinRate.ShouldBe(64.6m); }