Exemple #1
0
        public Task Create(MessageContext context, CreateTransactionEvent inputEvent)
        {
            var transaction = transactionsRepository.Create(inputEvent.Title, inputEvent.Amount, inputEvent.Recipient, inputEvent.Sender, inputEvent.PaymentId, inputEvent.CardId);

            if (context.ReplyTo != null)
            {
                publishingRouter.Publish(context.ReplyTo, new SelectedTransactionsEvent {
                    Transactions = new[] { transaction }
                }, context.FlowId);
            }
            return(Task.CompletedTask);
        }
Exemple #2
0
        private CreateTransactionEvent TransferToCreateTransactionEvent(Transfer inputEvent)
        {
            var account   = accountsRepository.Get(inputEvent.AccountId);
            var recipient = accountsRepository.Get(inputEvent.Recipient);

            var transcation = new CreateTransactionEvent
            {
                Sender    = inputEvent.AccountId,
                Recipient = inputEvent.Recipient,
                Title     = inputEvent.Title,
                Amount    = inputEvent.Amount,
                CardId    = inputEvent.CardId
            };

            return(transcation);
        }
        public async Task HandleAsync(CreatePaymentEvent message)
        {
            //TODO: implement logs
            var random      = new Random();
            var minimumSeed = Convert.ToInt32((message.Amount.Value - (message.Amount.Value * Convert.ToDecimal(0.10))));
            var maximumSeed = Convert.ToInt32((message.Amount.Value + (message.Amount.Value * Convert.ToDecimal(0.30))));
            int randomShopperCreditCardLimit = random.Next(minimumSeed, maximumSeed);
            var newTransactionID             = Guid.NewGuid();

            var transactionStatus = message.Amount.Value <= randomShopperCreditCardLimit ? "Approved" : "Rejected";

            var createTransactionEvent = new CreateTransactionEvent(message.EventID, newTransactionID, transactionStatus);

            var response = await this.topicProducer.ProduceAsync(createTransactionEvent);

            //TODO: Log response
        }
Exemple #4
0
        public async Task Handle_ProduceBankResponseTransactionMessageAsync_Success()
        {
            // Arrange
            var createPaymentEvent = new CreatePaymentEvent(Guid.NewGuid(), Guid.NewGuid(), new CreditCardProtected(), Money.Zero);

            var createTransactionEvent = new CreateTransactionEvent(createPaymentEvent.EventID, Guid.NewGuid(), "Approved");

            var deliveryMessageReport = new DeliveryMessageReport("Payment.gateway-events-v2", DateTime.Now);

            var mockITopicProducer = new Mock <ITopicProducer <CreateTransactionEvent> >();

            mockITopicProducer.Setup(t => t.ProduceAsync(createTransactionEvent))
            .ReturnsAsync(deliveryMessageReport);

            // Act
            var bankEventHandler = new BankEventHandler(mockITopicProducer.Object);
            await bankEventHandler.HandleAsync(createPaymentEvent);

            // Assert
            mockITopicProducer.Verify(mock => mock.ProduceAsync(It.IsAny <CreateTransactionEvent>()), new Times());
        }