public async Task Handle(CardCreatedEvent e) { var cardView = new CardViewQueryModel() { CardHolder = e.Data.CardHolder, ExpirationDate = e.Data.ExpirationDate, Id = e.Data.Id, Number = e.Data.Number }; var cardList = new CardListQueryModel() { Id = e.Data.Id, Number = e.Data.Number, CardHolder = e.Data.CardHolder, ExpirationDate = e.Data.ExpirationDate, HighestChargeDate = null, HighestTransactionAmount = null, HighestTransactionId = null, TransactionCount = 0 }; await readDbContext.CardViewMaterializedView.InsertOneAsync(cardView); await readDbContext.CardListMaterializedView.InsertOneAsync(cardList); }
public TransactionListQueryModel Materialize(Transaction source1, CardListQueryModel source2) { return(new TransactionListQueryModel() { Id = source1.Id, Amount = source1.Charge.Amount, ChargeDate = source1.ChargeDate, CardHolder = source2.CardHolder, CardNumber = source2.Number, CurrencyCode = source1.Charge.CurrencyCode, UniqueId = source1.UniqueId }); }
public CardListQueryModel Materialize(Transaction source1, CardListQueryModel source2) { if (!source2.HighestTransactionAmount.HasValue || source1.Charge.Amount > source2.HighestTransactionAmount) { source2.HighestChargeDate = source1.ChargeDate; source2.HighestTransactionId = source1.Id; source2.HighestTransactionAmount = source1.Charge.Amount; } source2.TransactionCount += 1; return(source2); }
public void Should_Create_Model_With_Right_Data() { // Arrange var transaction = TransactionMother.CreateSimpleTransaction(); var cardList = new CardListQueryModel() { CardHolder = "Name", Number = "12345678910" }; // Act var queryModel = materializer.Materialize(transaction, cardList); // Assert AssertProperties(queryModel, transaction, cardList); }
private void AssertProperties(TransactionListQueryModel queryModel, Transaction transaction, CardListQueryModel cardList) { Assert.Equal(queryModel.Id, transaction.Id); Assert.Equal(queryModel.Amount, transaction.Charge.Amount); Assert.Equal(queryModel.CurrencyCode, transaction.Charge.CurrencyCode); Assert.Equal(queryModel.ChargeDate, transaction.ChargeDate); Assert.Equal(queryModel.UniqueId, transaction.UniqueId); Assert.Equal(queryModel.CardHolder, cardList.CardHolder); Assert.Equal(queryModel.CardNumber, cardList.Number); }