public async Task <CommandHandlingResult> Handle(BroadcastTransactionCommand command, IEventPublisher publisher) { var broadcastingResult = await _client.BroadcastTransactionAsync(command.TransactionId, command.SignedTransactionContext); _chaosKitty.Meow(command.TransactionId); switch (broadcastingResult) { case TransactionBroadcastingResult.Success: publisher.PublishEvent(new TransactionBroadcastedEvent { TransactionId = command.TransactionId }); return(CommandHandlingResult.Ok()); case TransactionBroadcastingResult.AlreadyBroadcasted: _log.Info("API said that the transaction already was broadcasted", command); publisher.PublishEvent(new TransactionBroadcastedEvent { TransactionId = command.TransactionId }); return(CommandHandlingResult.Ok()); default: throw new ArgumentOutOfRangeException ( nameof(broadcastingResult), $"Transaction broadcastring result [{broadcastingResult}] is not supported." ); } }
public async Task SendBroadcastTransactionCommand([FromBody] BroadcastTransactionCommand command) { _cqrsEngine.SendCommand(command, $"{CqrsModule.TransactionExecutor}.saga", CqrsModule.TransactionExecutor); }