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); }
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 }
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()); }