Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }