Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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
     });
 }
Ejemplo n.º 3
0
        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);
 }