private static IClientTrade[] CreateTradeRecordForClientWithVolumes(LimitQueueItem.LimitTradeInfo trade, ILimitOrder limitOrder, string btcTransactionId, IWalletCredentials walletCredentialsLimitA, IWalletCredentials walletCredentialsLimitB, double limitVolume, double oppositeLimitVolume) { var clientId = walletCredentialsLimitA?.ClientId ?? limitOrder.ClientId; var mutlisig = walletCredentialsLimitA?.MultiSig; var fromMultisig = walletCredentialsLimitB?.MultiSig; var depositAssetRecord = CreateCommonPartForTradeRecord(trade, limitOrder, btcTransactionId); var withdrawAssetRecord = CreateCommonPartForTradeRecord(trade, limitOrder, btcTransactionId); depositAssetRecord.ClientId = withdrawAssetRecord.ClientId = clientId; depositAssetRecord.AddressFrom = withdrawAssetRecord.AddressFrom = fromMultisig; depositAssetRecord.AddressTo = withdrawAssetRecord.AddressTo = mutlisig; depositAssetRecord.Multisig = withdrawAssetRecord.Multisig = mutlisig; depositAssetRecord.Amount = oppositeLimitVolume; depositAssetRecord.AssetId = trade.OppositeAsset; withdrawAssetRecord.Amount = -1 * limitVolume; withdrawAssetRecord.AssetId = trade.Asset; depositAssetRecord.Id = Utils.GenerateRecordId(depositAssetRecord.DateTime); withdrawAssetRecord.Id = Utils.GenerateRecordId(withdrawAssetRecord.DateTime); return(new IClientTrade[] { depositAssetRecord, withdrawAssetRecord }); }
private static ClientTrade CreateCommonPartForTradeRecord(LimitQueueItem.LimitTradeInfo trade, ILimitOrder limitOrder, string btcTransactionId) { return(new ClientTrade { DateTime = trade.Timestamp, Price = trade.Price, LimitOrderId = limitOrder.Id, OppositeLimitOrderId = trade.OppositeOrderId, TransactionId = btcTransactionId, IsLimitOrderResult = true }); }