/// <summary>
 /// <see cref="IHandleEvent{TEvent}.Handle(TEvent)"/>
 /// </summary>
 /// <param name="event"></param>
 public void Handle(PersonRegisteredWithAccountEvent @event)
 {
     try
     {
         EventStore.Save(@event);
     }
     catch
     {
         throw;
     }
 }
Example #2
0
        public void ToString_Should_Return_Event_Formatted_As_String()
        {
            Guid     personId  = Guid.NewGuid();
            string   firstName = "firstname";
            string   lastName  = "lastname";
            Gender   gender    = Gender.Male;
            DateTime birthDate = new DateTime(1980, 1, 1);
            string   userName  = "******";

            var ev = new PersonRegisteredWithAccountEvent(personId, firstName, lastName, gender, birthDate, userName);

            string eventAsString = $"Person {firstName} {lastName}, gender {gender.ToString()}, birth date {birthDate.ToShortDateString()} and username {userName} registered";

            Assert.Equal(eventAsString, ev.ToString());
        }
Example #3
0
        /// <summary>
        /// Implementation of <see cref="ICustomerCommands.RegisterNewPersonWithAccount(string, string, string, Gender, DateTime, string, string)"/>
        /// </summary>
        /// <param name="firstName">The first name</param>
        /// <param name="lastName">The last name</param>
        /// <param name="nationalIdentificationNumber">The national identification number</param>
        /// <param name="gender">The gender</param>
        /// <param name="birthDate">The birth date</param>
        /// <param name="userName">The username</param>
        /// <param name="password">The password</param>
        /// <returns></returns>
        public async Task RegisterNewPersonWithAccount(string firstName, string lastName, string nationalIdentificationNumber, Gender gender, DateTime birthDate, string userName, string password)
        {
            if (string.IsNullOrWhiteSpace(firstName))
            {
                throw new ArgumentException("value cannot be empty", nameof(firstName));
            }

            if (string.IsNullOrWhiteSpace(lastName))
            {
                throw new ArgumentException("value cannot be empty", nameof(lastName));
            }

            if (birthDate >= DateTime.Today)
            {
                throw new ArgumentException("Birth date cannot be after today", nameof(birthDate));
            }

            if (string.IsNullOrWhiteSpace(userName))
            {
                throw new ArgumentException("value cannot be empty", nameof(userName));
            }

            if (string.IsNullOrWhiteSpace(password))
            {
                throw new ArgumentException("value cannot be empty", nameof(password));
            }

            try
            {
                var userId = await AuthClient.RegisterNewAccount(userName, password);

                var person = Person.RegisterWithAccount(firstName, lastName, gender, birthDate, userId, userName);
                if (!string.IsNullOrWhiteSpace(nationalIdentificationNumber))
                {
                    person.SetNationalIdentificationNumber(nationalIdentificationNumber);
                }

                Repository.Add(person);
                await Repository.SaveChangesAsync();

                var @event = new PersonRegisteredWithAccountEvent(person.Id, firstName, lastName, gender, birthDate, userName);
                EventBus.RaiseEvent(@event);
            }
            catch
            {
                throw;
            }
        }
Example #4
0
        public void Ctor_Should_Set_All_Values_Correctly()
        {
            Guid     personId  = Guid.NewGuid();
            string   firstName = "firstname";
            string   lastName  = "lastname";
            Gender   gender    = Gender.Male;
            DateTime birthDate = new DateTime(1980, 1, 1);
            string   userName  = "******";

            var ev = new PersonRegisteredWithAccountEvent(personId, firstName, lastName, gender, birthDate, userName);

            Assert.Equal(personId, ev.PersonId);
            Assert.Equal(firstName, ev.FirstName);
            Assert.Equal(lastName, ev.LastName);
            Assert.Equal(gender, ev.Gender);
            Assert.Equal(birthDate, ev.BirthDate);
            Assert.Equal(userName, ev.UserName);

            Assert.Equal(personId, ev.AggregateId);
            Assert.Equal(typeof(Registries.Models.Customer), ev.AggregateType);
            Assert.Equal(DateTime.Today, ev.FiredOn.Date);
        }