예제 #1
0
        /// <summary>
        /// Confirm the request
        /// </summary>
        /// <param name="requestId">Request's id</param>
        public void Confirm(int requestId)
        {
            _authService.CheckAccess(AuthOperations.TournamentRequests.Confirm);
            var tournamentRequest = Get(requestId);

            if (tournamentRequest == null)
            {
                throw new MissingEntityException(ServiceResources.ExceptionMessages.TournamentRequestNotFound, requestId);
            }

            _tournamentRepository.AddTeamToTournament(tournamentRequest.TeamId, tournamentRequest.GroupId);
            _tournamentRepository.UnitOfWork.Commit();
            NotifyUser(_userService.GetUser(Get(requestId).UserId).Email);
            _tournamentRequestRepository.Remove(requestId);
            _tournamentRequestRepository.UnitOfWork.Commit();
        }
        /// <summary>
        /// Adds selected teams to tournament
        /// </summary>
        /// <param name="groupTeam">Teams related to specific groups that will be added to tournament</param>
        public void AddTeamsToTournament(ICollection <TeamTournamentAssignmentDto> groupTeam)
        {
            _authService.CheckAccess(AuthOperations.Tournaments.ManageTeams);

            var groupTeamCount = groupTeam.Count;

            if (groupTeamCount == 0)
            {
                throw new ArgumentException(
                          TournamentResources.CollectionIsEmpty);
            }

            var tournamentId             = GetTournamentByGroup(groupTeam.First().GroupId).Id;
            var allTeams                 = GetAllTournamentTeams(tournamentId);
            var numberOfTeamAlreadyExist = 0;

            foreach (var item in groupTeam)
            {
                var tournamentTeam = allTeams.SingleOrDefault(t => t.TeamId == item.TeamId);

                if (tournamentTeam == null)
                {
                    _tournamentRepository.AddTeamToTournament(item.TeamId, item.GroupId);
                }
                else
                {
                    numberOfTeamAlreadyExist++;
                }
            }

            if (numberOfTeamAlreadyExist != 0)
            {
                throw new ArgumentException(
                          TournamentResources.TeamNameInCurrentGroupOfTournamentNotUnique);
            }

            var totalTeamCount = allTeams.Count + groupTeamCount;

            CreateSchedule(tournamentId, totalTeamCount);

            _tournamentRepository.UnitOfWork.Commit();
        }