public async Task TransferConvertedBetweenClientsWithNotification(string destClientId, string sourceClientId, double amount, string assetId, double price, double amountFrom, string fromAssetId, bool fromBtcConvWallet = false) { var additionalActionsDest = new TransferContextData.AdditionalActions { CashInConvertedOkEmail = new TransferContextData.ConvertedOkEmailAction(fromAssetId, price, amountFrom, amount), PushNotification = new TransferContextData.PushNotification(assetId, amount) }; await GenerateTransfer(destClientId, sourceClientId, amount, assetId, fromBtcConvWallet, additionalActionsDest); }
public async Task <string> TransferBetweenClientsWithNotification(string destClientId, string sourceClientId, double amount, string assetId) { var additionalActionsDest = new TransferContextData.AdditionalActions { SendTransferEmail = new TransferContextData.EmailAction(assetId, amount), PushNotification = new TransferContextData.PushNotification(assetId, amount) }; return(await GenerateTransfer(destClientId, sourceClientId, amount, assetId, false, additionalActionsDest)); }
public async Task TransferFromOrdinaryWalletWithNotification(string clientId, string sourceAddress, string sourceKey, double amount, string assetId) { var additionalActionsDest = new TransferContextData.AdditionalActions { SendTransferEmail = new TransferContextData.EmailAction(assetId, amount), PushNotification = new TransferContextData.PushNotification(assetId, amount) }; await GenerateTransferFromOrdinaryWallet(clientId, sourceAddress, sourceKey, amount, assetId, additionalActionsDest); }
public async Task GenerateTransferFromOrdinaryWallet(string clientId, string sourceAddress, string sourceKey, double amount, string assetId, TransferContextData.AdditionalActions additionalActionsDest = null) { var asset = await _assetsRepository.GetAssetAsync(assetId); if (asset == null) { return; } amount = Math.Abs(amount); var transactionId = Guid.NewGuid().ToString("N"); var clientCreds = await _walletCredentialsRepository.GetAsync(clientId); var transfer = await _transferEventsRepository.RegisterAsync(TransferEvent.CreateNew(clientId, clientCreds.MultiSig, null, assetId, amount, transactionId, sourceAddress, clientCreds.MultiSig)); var contextData = TransferContextData.Create(new TransferContextData.TransferModel { ClientId = clientId, OperationId = transfer.Id, Actions = additionalActionsDest }); if (_baseSettings.UsePushPrivateKeyService) { await _srvBlockchainHelper.PushPrivateKey(sourceKey, true); sourceKey = null; } var queueMsg = await _bitCoinCommandProducer.ProduceGenerateTransferAsync(transactionId, sourceAddress, sourceKey, clientCreds.MultiSig, amount, asset.BlockChainId); await _bitCoinTransactionsRepository.CreateAsync(transactionId, queueMsg, contextData); }
public async Task <string> GenerateTransfer(string destClientId, string sourceClientId, double amount, string assetId, bool fromBtcConvWallet = false, TransferContextData.AdditionalActions additionalActionsDest = null, TransferContextData.AdditionalActions additionalActionsSrc = null) { var asset = await _assetsRepository.GetAssetAsync(assetId); if (asset == null) { throw new ArgumentNullException(nameof(assetId)); } amount = Math.Abs(amount); var transactionId = Guid.NewGuid().ToString("N"); var destClientCredentials = await _walletCredentialsRepository.GetAsync(destClientId); var sourceWalletCred = await _walletCredentialsRepository.GetAsync(sourceClientId); var destTransfer = await _transferEventsRepository.RegisterAsync(TransferEvent.CreateNew(destClientId, destClientCredentials.MultiSig, null, assetId, amount, transactionId, destClientCredentials.Address, destClientCredentials.MultiSig)); var sourceTransfer = await _transferEventsRepository.RegisterAsync(TransferEvent.CreateNew(sourceClientId, fromBtcConvWallet ? sourceWalletCred.BtcConvertionWalletAddress : sourceWalletCred.MultiSig, null, assetId, -amount, transactionId, sourceWalletCred.Address, sourceWalletCred.MultiSig)); var contextData = TransferContextData.Create(new TransferContextData.TransferModel { ClientId = destClientId, OperationId = destTransfer.Id, Actions = additionalActionsDest }, new TransferContextData.TransferModel { ClientId = sourceClientId, OperationId = sourceTransfer.Id, Actions = additionalActionsSrc }); var pk = fromBtcConvWallet ? sourceWalletCred.BtcConvertionWalletPrivateKey : sourceWalletCred.PrivateKey; if (_baseSettings.UsePushPrivateKeyService) { await _srvBlockchainHelper.PushPrivateKey(pk, fromBtcConvWallet); } var queueMsg = await _bitCoinCommandProducer.ProduceGenerateTransferAsync(transactionId, fromBtcConvWallet?sourceWalletCred.BtcConvertionWalletAddress : sourceWalletCred.MultiSig, _baseSettings.UsePushPrivateKeyService?null : pk, destClientCredentials.MultiSig, amount, asset.BlockChainId); await _bitCoinTransactionsRepository.CreateAsync(transactionId, queueMsg, contextData); return(destTransfer.Id); }