public async Task Handle(CashoutTransactionStateSavedEvent evt) { var message = evt.Message; var walletCredentials = await _walletCredentialsRepository.GetAsync(message.ClientId); var amount = message.Amount.ParseAnyDouble(); var transactionId = evt.Command.TransactionId.ToString(); var context = await _transactionService.GetTransactionContext <CashOutContextData>(transactionId); var isForwardWithdawal = context.AddData?.ForwardWithdrawal != null; var operation = new CashInOutOperation { Id = context.CashOperationId, ClientId = message.ClientId, Multisig = walletCredentials?.MultiSig, AssetId = message.AssetId, Amount = -Math.Abs(amount), DateTime = DateTime.UtcNow, AddressFrom = walletCredentials?.MultiSig, AddressTo = context.Address, TransactionId = transactionId, Type = isForwardWithdawal ? CashOperationType.ForwardCashOut : CashOperationType.None, BlockChainHash = string.Empty, State = TransactionStates.SettledOffchain }; operation.AddFeeDataToOperation(message); await RegisterOperation(operation); }
public async Task Handle(CashoutTransactionStateSavedEvent evt, ICommandSender sender) { var message = evt.Message; var transactionId = message.Id; var context = await _transactionService.GetTransactionContext <CashOutContextData>(transactionId); var isForwardWithdawal = context.AddData?.ForwardWithdrawal != null; if (isForwardWithdawal) { sender.SendCommand(new SetLinkedCashInOperationCommand { Message = message, Id = context.AddData.ForwardWithdrawal.Id }, BoundedContexts.ForwardWithdrawal); } }