using System.Collections.Generic; using System.Linq; using WebGrease.Css.Extensions; namespace EloWeb.Models { public class Players { private static Dictionary _players = new Dictionary(); public static void Initialise(IEnumerable playerEntities) { _players = playerEntities.Select(p => Player.CreateInitial(p.Name, p.IsRetired)).ToDictionary(p => p.Name); } public static void Add(Player player) { _players.Add(player.Name, player); } public static void UpdateRatings(Game game) { var winner = PlayerByName(game.Winner); var loser = PlayerByName(game.Loser); var pointsExchanged = EloCalc.PointsExchanged(winner.Rating, loser.Rating); winner.IncreaseRating(pointsExchanged); loser.DecreaseRating(pointsExchanged); } public static IEnumerable All() { return _players.Values; } public static IEnumerable Active() { return _players.Values.Where(p => !p.IsRetired); } public static IEnumerable Names() { return _players.Keys; } public static Player PlayerByName(string name) { if (!_players.ContainsKey(name)) return new Player(); return _players[name]; } } }