Example #1
0
        public Game CreateGame()
        {
            using (var log = Logger.GetLogger(this))
             {
            using (var repository = new RepositoryFactory().CreateUnitOfWorkRepository())
            {
               // Insert the game into the database.
               string gameName = DateTime.Now.ToString("yyyyMMddHHmmss");
               var game = new Game { Name = gameName };

               // Create teams and players.
               var teamsAndPlayers = CreateTeamsAndPlayers(game);

               // Insert teams.
               repository.RegisterInsert(teamsAndPlayers.Teams);

               // Insert players and skill scores.
               repository.RegisterInsert(teamsAndPlayers.Players);
               foreach (var player in teamsAndPlayers.Players)
               {
                  repository.RegisterInsert(player.SkillScores);
               }

               var seasonManager = new SeasonManager(game);

               // Create a season with match schedules.
               var season = seasonManager.CreateFirstSeason(game, teamsAndPlayers.Teams, repository);

               // Insert the season statistics and season/team statistics.
               var seasonStatistics = new SeasonStatistics(season);
               repository.RegisterInsert(seasonStatistics);
               foreach (var team in teamsAndPlayers.Teams)
               {
                  var seasonTeamStatistics = new SeasonTeamStatistics(season, team);
                  repository.RegisterInsert(seasonTeamStatistics);
               }

               // Assign the user a random team.
               //TODO let the user choose a team via the GUI...
               //var teamToManage = _listRandomizer.GetItem(teamsAndPlayers.Teams);
               //game.CurrentTeam = teamToManage;

               repository.RegisterInsert(game);

               repository.Save();

               return game;
            }
             }
        }