コード例 #1
0
 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);
        }