public TeamOfWeekViewModel(
     int season,
     TeamOfWeek[] teamOfWeek)
 {
     Leaders = new TeamOfWeekLeadersViewModel(teamOfWeek);
     Season = season;
     Weeks = new List<Week>();
     foreach (var turn in teamOfWeek.GroupBy(x => x.Turn))
     {
         var q = from t in turn
                 from playerScore in t.PlayerScores
                 group playerScore by new
                 {
                     playerScore.Key,
                     playerScore.Value.PlayerId,
                     playerScore.Value.Name
                 } into g
                 let maxValue = g.OrderByDescending(x => x.Value.Pins).FirstOrDefault()
                 orderby maxValue.Value.Pins descending
                 select new PlayerScore(g.Key.PlayerId, g.Key.Name, maxValue.Value.Team, maxValue.Value.TeamLevel)
                 {
                     Pins = maxValue.Value.Pins,
                     Score = maxValue.Value.Score,
                     Series = maxValue.Value.Series,
                     Medals = g.SelectMany(x => x.Value.Medals).ToList()
                 };
         var week = new Week(turn.Key, q.ToList());
         Weeks.Add(week);
     }
 }
        public TeamOfWeekLeadersViewModelTest()
        {
            // Arrange
            var player1 = new Player("Daniel", "*****@*****.**", Player.Status.Active) { Id = "9876" };
            var player2 = new Player("Tomas", "*****@*****.**", Player.Status.Active) { Id = "8765" };
            var teamOfWeek1 = new TeamOfWeek(1234, 2012, 10, "Team A", "A");
            teamOfWeek1.AddResultForPlayer(player1, 1, 210);
            teamOfWeek1.AddResultForPlayer(player2, 1, 190);
            var teamOfWeek2 = new TeamOfWeek(5432, 2012, 10, "Team B", "B");
            teamOfWeek2.AddResultForPlayer(player1, 0, 220);
            teamOfWeek2.AddResultForPlayer(player2, 1, 180);

            // Act
            viewModel = new TeamOfWeekViewModel(
                2012,
                new[]
                {
                    teamOfWeek1,
                    teamOfWeek2
                });
        }