Exemplo n.º 1
0
        public ISquadsSetup New(IEnumerable <IPlayer> players, int numberOfSquads)
        {
            var playersArray = players as IPlayer[] ?? players.ToArray();

            if (numberOfSquads < 2)
            {
                return(AllWait(playersArray));
            }

            int squadSize = playersArray.Length / numberOfSquads;

            if (squadSize == 0)
            {
                return(AllWait(playersArray));
            }

            var playersInSquadsAndWaitingList = playersArray.ChunkBy(squadSize).ToArray();

            var waitingList = playersInSquadsAndWaitingList.Length == numberOfSquads
                ? Enumerable.Empty <IPlayer>()
                : playersInSquadsAndWaitingList.Last();

            var squads = playersInSquadsAndWaitingList
                         .Take(numberOfSquads)
                         .Select(ps =>
            {
                var playersInSquad = ps as IPlayer[] ?? ps.ToArray();
                return(new Squad(playersInSquad, _averageSkillCalculator.Calculate(playersInSquad)));
            });

            return(new SquadsSetup(waitingList, squads));
        }
Exemplo n.º 2
0
        public ISetupSource New()
        {
            var players       = _repository.All();
            var playersArray  = players as IPlayer[] ?? players.ToArray();
            var averageSkills = _averageSkillCalculator.Calculate(playersArray);

            return(new SetupSource(playersArray, averageSkills));
        }