예제 #1
0
        /// <summary>
        /// Validates the division ranges.
        /// </summary>
        /// <param name="tournamentDivision">The tournament division.</param>
        /// <exception cref="InvalidDataException">
        /// Start Handicap Already in a division range.
        /// or
        /// Start Handicap Already in a division range.
        /// </exception>
        private void ValidateDivisionRanges(TournamentDivisionDataTransferObject tournamentDivision)
        {
            Boolean startHandicapInRange =
                this.TournamentDivisions.Any(t => tournamentDivision.StartHandicap >= t.StartHandicap && tournamentDivision.StartHandicap <= t.EndHandicap);
            Boolean endHandicapInRange =
                this.TournamentDivisions.Any(t => tournamentDivision.EndHandicap >= t.StartHandicap && tournamentDivision.EndHandicap <= t.EndHandicap);

            if (startHandicapInRange)
            {
                throw new InvalidDataException("Start Handicap Already in a division range.");
            }

            if (endHandicapInRange)
            {
                throw new InvalidDataException("End Handicap Already in a division range.");
            }
        }
예제 #2
0
        /// <summary>
        /// Adds the tournament division.
        /// </summary>
        /// <param name="tournamentDivision">The tournament division.</param>
        public void AddTournamentDivision(TournamentDivisionDataTransferObject tournamentDivision)
        {
            Guard.ThrowIfNull(tournamentDivision, typeof(ArgumentNullException), "Tournament Division cannot be null");

            this.CheckHasGolfClubAlreadyBeenCreated();

            // Check for duplicate division
            this.ValidateForDuplicateDivision(tournamentDivision.Division);

            // check for clashing ranges
            this.ValidateDivisionRanges(tournamentDivision);

            this.ValidateTournamentDivision(tournamentDivision);

            // Raise a domain event
            TournamentDivisionAddedEvent tournamentDivisionAddedEvent =
                TournamentDivisionAddedEvent.Create(this.AggregateId, tournamentDivision.Division, tournamentDivision.StartHandicap, tournamentDivision.EndHandicap);

            // Apply and pend
            this.ApplyAndPend(tournamentDivisionAddedEvent);
        }
예제 #3
0
        /// <summary>
        /// Validates the tournament division.
        /// </summary>
        /// <param name="tournamentDivision">The tournament division.</param>
        /// <exception cref="ArgumentOutOfRangeException">
        /// Division - Tournament Division must be between 1 and 5
        /// or
        /// StartHandicap - Tournament Division Start Handicap must be between -10 and 36
        /// or
        /// EndHandicap - Tournament Division End Handicap must be between -10 and 36
        /// or
        /// EndHandicap - Tournament Division End Handicap cannot be <= Start Handicap
        /// </exception>
        private void ValidateTournamentDivision(TournamentDivisionDataTransferObject tournamentDivision)
        {
            if (tournamentDivision.Division <= 0 || tournamentDivision.Division > 5)
            {
                throw new ArgumentOutOfRangeException(nameof(tournamentDivision.Division), "Tournament Division must be between 1 and 5");
            }

            if (tournamentDivision.StartHandicap < -10 || tournamentDivision.StartHandicap > 36)
            {
                throw new ArgumentOutOfRangeException(nameof(tournamentDivision.StartHandicap), "Tournament Division Start Handicap must be between -10 and 36");
            }

            if (tournamentDivision.EndHandicap < -10 || tournamentDivision.EndHandicap > 36)
            {
                throw new ArgumentOutOfRangeException(nameof(tournamentDivision.EndHandicap), "Tournament Division End Handicap must be between -10 and 36");
            }

            if (tournamentDivision.EndHandicap <= tournamentDivision.StartHandicap)
            {
                throw new ArgumentOutOfRangeException(nameof(tournamentDivision.EndHandicap), "Tournament Division End Handicap cannot be <= Start Handicap");
            }
        }