Example #1
0
        public void DeleteSeasons(IUnitOfWorkRepository repository)
        {
            // Get all seasons for the game.
             using (var seasonRepository = new RepositoryFactory().CreateSeasonRepository())
             using (var seasonCompetitionRepository = new RepositoryFactory().CreateSeasonCompetitionRepository())
             using (var seasonCompetitionTeamRepository = new RepositoryFactory().CreateRepository<SeasonCompetitionTeam>())
             using (var roundRepository = new RepositoryFactory().CreateRoundRepository())
             using (var matchRepository = new RepositoryFactory().CreateMatchRepository())
             {
            var seasons = seasonRepository.Find(season => season.GameId.Equals(_game.Id));

            foreach (var season in seasons)
            {
               // Get season competitions.
               var seasonCompetitions = seasonCompetitionRepository.Find(sc => sc.SeasonId.Equals(season.Id));

               foreach (var seasonCompetition in seasonCompetitions)
               {
                  // Delete relations between the season competition and the teams.
                  var seasonCompetitionTeams = seasonCompetitionTeamRepository.Find(team => team.SeasonCompetitionId.Equals(seasonCompetition.Id));
                  repository.RegisterDelete(seasonCompetitionTeams);

                  // Delete rounds and their matches.
                  var rounds = roundRepository.Find(round => round.SeasonCompetitionId.Equals(seasonCompetition.Id));
                  foreach (var round in rounds)
                  {
                     var matches = matchRepository.Find(match => match.RoundId.Equals(round.Id));
                     repository.RegisterDelete(matches);

                     repository.RegisterDelete(round);
                  }

                  repository.RegisterDelete(seasonCompetition);
               }

               repository.RegisterDelete(season);
            }
             }
        }