/// <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."); } }
/// <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); }
/// <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"); } }