示例#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;
            }
             }
        }
示例#2
0
        public void PlayMatchDay(string seasonId, DateTime matchDay)
        {
            // First check if the given matchDay is the "next" match day
             DateTime nextMatchDay = GetNextMatchDay(seasonId);
             if (!nextMatchDay.Equals(matchDay))
             {
            throw new ConflictException("These matches can't be played now");
             }

             var matchesToPlay = GetBySeasonAndDate(seasonId, matchDay).ToList();
             if (!matchesToPlay.Any())
             {
            throw new NotFoundException("There are no matches on this day");
             }

             foreach (var match in matchesToPlay)
             {
            Play(match);
             }

             using (var repository = new RepositoryFactory().CreateUnitOfWorkRepository())
             {
            var seasonManager = new SeasonManager(Game);
            var postMatchManager = new PostMatchManager(repository, seasonManager);
            postMatchManager.DoSomething(matchesToPlay);

            // Save the result.
            repository.RegisterUpdate(matchesToPlay);

            repository.Save();
             }
        }
示例#3
0
        public void DeleteGame(Game game)
        {
            using (Logger.GetLogger(this, game))
             {
            var playerService = ServiceFactory.CreatePlayerService(game);
            var teamService = ServiceFactory.CreateTeamService(game);
            var seasonManager = new SeasonManager(game);

            using (var repository = new RepositoryFactory().CreateUnitOfWorkRepository())
            {
               // Delete all players.
               var players = playerService.GetAll(game);
               repository.RegisterDelete(players);

               // Delete all teams.
               var teams = teamService.GetAll(game);
               repository.RegisterDelete(teams);

               // Delete the seasons, matches etc.
               seasonManager.DeleteSeasons(repository);

               // Delete the game itself.
               repository.RegisterDelete(game);

               repository.Save();
            }
             }
        }