/// <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);
        }
Пример #4
0
        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);
        }