Пример #1
0
        private async Task InitializeParticipantsAsync(TournamentRegistrationRules rules, TournamentTeam team)
        {
            // Determine participants' status
            var initStatus = rules.Rules.HasFlag(RegistrationRules.RequireInvitationAccept) ? ParticipantStatus.Invited : ParticipantStatus.Accepted;

            foreach (var participant in team.Participants)
            {
                // Set participant's status if it is default (Invited)
                // TODO: create default status
                if (participant.Status == ParticipantStatus.Invited)
                {
                    participant.Status = initStatus;
                }

                // Verify the player doesn't already belong to a team
                if (initStatus == ParticipantStatus.Accepted &&
                    await Context.TournamentParticipants
                    .Include(p => p.Team)
                    .Where(p => p.Team.TournamentId == team.TournamentId &&
                           p.Team.TeamId != team.TeamId &&
                           p.PlayerId == participant.PlayerId &&
                           p.Status == ParticipantStatus.Accepted)
                    .AnyAsync())
                {
                    throw new ArgumentException($"{participant.Player?.Nickname ?? "One of these players"} already belongs to another team.");
                }
            }
        }
Пример #2
0
 public TournamentRegistrationRulesValidator(TournamentRegistrationRules rules)
 {
     if (rules is null)
     {
         throw new ArgumentNullException(nameof(rules));
     }
     _rules = rules;
 }