private void RegisterDialog_FormClosing(object sender, FormClosingEventArgs e) { if (success) { PlayerRegisteredEvent?.Invoke(this, player); // Comunicate listeners there's a new player in the system } }
/// <summary> /// Registers the specified first name. /// </summary> /// <param name="firstName">The first name.</param> /// <param name="middleName">Name of the middle.</param> /// <param name="lastName">The last name.</param> /// <param name="gender">The gender.</param> /// <param name="dateOfBirth">The date of birth.</param> /// <param name="exactHandicap">The exact handicap.</param> /// <param name="emailAddress">The email address.</param> public void Register(String firstName, String middleName, String lastName, String gender, DateTime dateOfBirth, Decimal exactHandicap, String emailAddress) { // Validate the registration details Guard.ThrowIfNullOrEmpty(firstName, typeof(ArgumentNullException), "A first name is required to register a player"); Guard.ThrowIfNullOrEmpty(lastName, typeof(ArgumentNullException), "A last name is required to register a player"); Guard.ThrowIfNullOrEmpty(gender, typeof(ArgumentNullException), "A gender is required to register a player"); Guard.ThrowIfNullOrEmpty(emailAddress, typeof(ArgumentNullException), "An email address is required to register a player"); this.ValidateGender(gender); this.ValidateDateOfBirth(dateOfBirth); this.ValidateHandicap(exactHandicap); this.CheckIfPlayerAlreadyRegistered(); // Create the Player Registered domain event PlayerRegisteredEvent playerRegisteredEvent = PlayerRegisteredEvent.Create(this.AggregateId, firstName, middleName, lastName, gender, dateOfBirth, exactHandicap, emailAddress); // Apply and pend this.ApplyAndPend(playerRegisteredEvent); // Create the Opening Handicap Added domain event OpeningExactHandicapAddedEvent openingExactHandicapAddedEvent = OpeningExactHandicapAddedEvent.Create(this.AggregateId, exactHandicap); // Apply and pend this.ApplyAndPend(openingExactHandicapAddedEvent); }
/// <summary> /// Plays the event. /// </summary> /// <param name="playerRegisteredEvent">The player registered event.</param> private void PlayEvent(PlayerRegisteredEvent playerRegisteredEvent) { this.FirstName = playerRegisteredEvent.FirstName; this.MiddleName = playerRegisteredEvent.MiddleName; this.LastName = playerRegisteredEvent.LastName; this.FullName = $"{playerRegisteredEvent.FirstName}{(String.IsNullOrEmpty(playerRegisteredEvent.MiddleName) ? " " : " " + playerRegisteredEvent.MiddleName + " ")}{playerRegisteredEvent.LastName}"; this.Gender = playerRegisteredEvent.Gender; this.DateOfBirth = playerRegisteredEvent.DateOfBirth; this.EmailAddress = playerRegisteredEvent.EmailAddress; this.HasBeenRegistered = true; }
public void PlayerRegisteredEvent_CanBeCreated_IsCreated() { PlayerRegisteredEvent playerRegisteredEvent = PlayerRegisteredEvent.Create(PlayerTestData.AggregateId, PlayerTestData.FirstName, PlayerTestData.MiddleName, PlayerTestData.LastName, PlayerTestData.Gender, PlayerTestData.DateOfBirth, PlayerTestData.ExactHandicap, PlayerTestData.EmailAddress); playerRegisteredEvent.ShouldNotBeNull(); playerRegisteredEvent.AggregateId.ShouldBe(PlayerTestData.AggregateId); playerRegisteredEvent.EventId.ShouldNotBe(Guid.Empty); playerRegisteredEvent.EventCreatedDateTime.ShouldNotBe(DateTime.MinValue); playerRegisteredEvent.FirstName.ShouldBe(PlayerTestData.FirstName); playerRegisteredEvent.MiddleName.ShouldBe(PlayerTestData.MiddleName); playerRegisteredEvent.LastName.ShouldBe(PlayerTestData.LastName); playerRegisteredEvent.Gender.ShouldBe(PlayerTestData.Gender); playerRegisteredEvent.DateOfBirth.ShouldBe(PlayerTestData.DateOfBirth); playerRegisteredEvent.ExactHandicap.ShouldBe(PlayerTestData.ExactHandicap); playerRegisteredEvent.EmailAddress.ShouldBe(PlayerTestData.EmailAddress); }