public async Task Handle(PaymentCreatedEvent notification, CancellationToken cancellationToken)
        {
            try
            {
                Domain.Payments.Payment payment = _mapper.Map <Domain.Payments.Payment>(notification);
                var response = await _bankService.SendPaymentForBankApprovalAsync(payment);

                var bankResponse = new BankResponse
                {
                    Id        = response,
                    PaymentId = notification.AggregateId
                };

                await _bankResponseRepository.SaveBankResponseAsync(bankResponse);

                await _paymentRepository.UpdatePaymentReadModelStatusAsync(notification.AggregateId, PaymentStatus.PROCESSING);

                var sentToBankEvent = new PaymentSentForBankApprovalEvent(notification.AggregateId, bankResponse.Id);
                await _mediator.Publish(sentToBankEvent);
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Error while trying to send payment to bank.");
                var errorEvent = new SendPaymentForBankApprovalErrorEvent();
                await _mediator.Send(errorEvent);
            }
        }
Beispiel #2
0
 public async Task Handle(PaymentSentForBankApprovalEvent request, CancellationToken cancellationToken)
 {
     await SaveAsync <Event>(request);
 }