/// <summary> /// <see cref="IHandleEvent{TEvent}.Handle(TEvent)"/> /// </summary> /// <param name="event"></param> public void Handle(PersonRegisteredWithAccountEvent @event) { try { EventStore.Save(@event); } catch { throw; } }
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()); }
/// <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; } }
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); }