public void Handle(PersonUpdatedEvent @event, DatabaseContext db)
        {
            var aggregate       = @event.Person;
            var personReadModel = db.Set <PersonReadModel>()
                                  .FirstOrDefault(readModel => readModel.AggregateRootId == aggregate.Id);

            if (personReadModel != null)
            {
                var homePhoneNumber   = aggregate.PhoneNumbers?.FirstOrDefault(phone => phone.PhoneNumberType == PhoneNumberType.Home);
                var officePhoneNumber = aggregate.PhoneNumbers?.FirstOrDefault(phone => phone.PhoneNumberType == PhoneNumberType.Office);
                var mobilePhoneNumber = aggregate.PhoneNumbers?.FirstOrDefault(phone => phone.PhoneNumberType == PhoneNumberType.Mobile);

                var relatedPersons = aggregate.RelatedPersons == null ? string.Empty :
                                     JsonConvert.SerializeObject(aggregate.RelatedPersons);

                personReadModel.ChangeDetails(aggregate.Id,
                                              aggregate.FirstName,
                                              aggregate.LastName,
                                              aggregate.IdentificationNumber,
                                              aggregate.BirthDate,
                                              aggregate.CityId,
                                              aggregate.Photo.FilePath,
                                              aggregate.Photo.Height,
                                              aggregate.Photo.Width,
                                              aggregate.Gender.ToString(),
                                              relatedPersons,
                                              homePhoneNumber?.Number,
                                              officePhoneNumber?.Number,
                                              mobilePhoneNumber?.Number);

                db.Set <PersonReadModel>().Update(personReadModel);
            }
        }
Exemple #2
0
        /// <summary>
        /// Update Reporting Data
        /// During Update first check wheather previous data and new data are same or different
        /// </summary>
        /// <param name="evt"></param>
        public void Handle(PersonUpdatedEvent evt)
        {
            var person = _reportingRepository.GetById <Person>(evt.Id);

            if (person.FirstName != evt.FirstName)
            {
                person.FirstName = evt.FirstName;
            }

            if (person.LastName != evt.LastName)
            {
                person.LastName = evt.LastName;
            }

            if (person.Age != evt.Age)
            {
                person.Age = evt.Age;
            }

            _reportingRepository.Modify <Person>(person);
        }
Exemple #3
0
        public async Task TestPersonUpdateEventHandler()
        {
            //Arrange
            await SetupData();

            var handler = new PersonUpdatedEventHandler(PersonFamilyTreeRepository);
            var @event  = new PersonUpdatedEvent()
            {
                OldPersonData = CreatePerson2(),
                NewPersonData = CreatePerson3(),
            };

            //Act
            await handler.Handle(@event);

            //Assert
            var result = await PersonFamilyTreeRepository.GetFamilyTree("3", 2);

            Assert.NotEmpty(result.Nodes.Where(item => item.Id == "5"));
            Assert.Empty(result.Nodes.Where(item => item.Id == "1"));
            Assert.Empty(result.Nodes.Where(item => item.Id == "2"));
        }
Exemple #4
0
        public async Task TestPersonUpdatedEventHandler()
        {
            //Arrange
            var handler = new PersonUpdatedEventHandler(PersonCategoryRepository,
                                                        PersonPerCityCounterRepository, TransactionManager);

            var @event = new PersonUpdatedEvent()
            {
                OldPersonData = CreatePerson1(),
                NewPersonData = CreatePerson2()
            };

            //Act
            var resultOld = await GetCategory(@event.OldPersonData);

            var resultNew = await GetCategory(@event.NewPersonData);

            var expectedOld = resultOld[0];
            var expectedNew = resultNew[0];

            expectedOld.Count = Math.Max(expectedOld.Count - 1, 0);
            expectedNew.Count++;

            await handler.Handle(@event);

            resultOld = await GetCategory(@event.OldPersonData);

            resultNew = await GetCategory(@event.NewPersonData);

            var obtainedOld = resultOld[0];
            var obtainedNew = resultNew[0];

            //Assert
            Assert.Equal(expectedOld.Count, obtainedOld.Count);
            Assert.Equal(expectedNew.Count, obtainedNew.Count);
        }
 public Task Handle(PersonUpdatedEvent @event, CancellationToken cancellationToken)
 {
     // Send some notification by updated post
     return(_hubContext.Clients.All.SendAsync("personUpdated", @event, cancellationToken));
 }
 public Task Handle(PersonUpdatedEvent notification, CancellationToken cancellationToken)
 {
     //Envia alguma notificação de e-mail, por exemplo
     return(Task.CompletedTask);
 }
Exemple #7
0
 public Task Handle(PersonUpdatedEvent notification, CancellationToken cancellationToken)
 {
     return(Task.CompletedTask);
 }