Exemple #1
0
        private Core.Domain.Transaction GetTransaction(TransactionNinjaModel t)
        {
            var block = new Core.Domain.Block()
            {
                Hash          = t.Block.Hash,
                Height        = t.Block.Height,
                Time          = t.Block.Time,
                Confirmations = t.Block.Confirmations
            };

            var inputs = t.DeserializeInputs.Select(x => new In()
            {
                TransactionId = x.TxId,
                Address       = x.Address,
                Index         = x.Index,
                Value         = x.Value,
                AssetId       = x.AssetId,
                Quantity      = x.Quantity
            }).ToList();

            var outputs = t.DeserializeOutputs.Select(x => new Out()
            {
                TransactionId = x.TxId,
                Address       = x.Address,
                Index         = x.Index,
                Value         = x.Value,
                AssetId       = x.AssetId,
                Quantity      = x.Quantity
            }).ToList();

            var assets = new List <Core.Domain.Asset>();

            foreach (var k in t.Asset.Keys)
            {
                var assetRecord = t.Asset[k];

                var asset = new Core.Domain.Asset();
                asset.Id = k;
                if (t.TransactionUrl != null)
                {
                    asset.MetadataUrl = t.TransactionUrl.ToString();
                }

                asset.Input = assetRecord.AssetDataInput.Select(x => new In()
                {
                    TransactionId = x.TxId,
                    Address       = x.Address,
                    Index         = x.Index,
                    Value         = x.Value,
                    AssetId       = x.AssetId,
                    Quantity      = x.Quantity
                }).ToList();

                asset.Output = assetRecord.AssetDataOutput.Select(x => new Out()
                {
                    TransactionId = x.TxId,
                    Address       = x.Address,
                    Index         = x.Index,
                    Value         = x.Value,
                    AssetId       = x.AssetId,
                    Quantity      = x.Quantity
                }).ToList();

                assets.Add(asset);
            }

            var transaction = new Core.Domain.Transaction()
            {
                TransactionId   = t.TxId,
                Time            = block.Time,
                Hex             = t.Hex,
                Fees            = t.Fees,
                IsCoinBase      = t.IsCoinBase,
                IsColor         = t.IsColor,
                Block           = block,
                Blockhash       = t.Block.Hash,
                TransactionIn   = inputs,
                TransactionsOut = outputs,
                Assets          = assets
            };

            return(transaction);
        }
Exemple #2
0
        public async Task <Transaction> GetTransaction(string id)
        {
            var t = await _client.GetTransactionAsync(id);

            var block = new Block()
            {
                Hash          = t.Block.Hash,
                Height        = t.Block.Height,
                Time          = t.Block.Time,
                Confirmations = t.Block.Confirmations
            };

            var inputs = t.DeserializeInputs.Select(x => new In()
            {
                TransactionId = x.TxId,
                Address       = x.Address,
                Index         = x.Index,
                Value         = x.Value,
                AssetId       = x.AssetId,
                Quantity      = x.Quantity
            }).ToList();

            var outputs = t.DeserializeOutputs.Select(x => new Out()
            {
                TransactionId = x.TxId,
                Address       = x.Address,
                Index         = x.Index,
                Value         = x.Value,
                AssetId       = x.AssetId,
                Quantity      = x.Quantity
            }).ToList();

            var assets = new List <Core.Domain.Asset>();

            foreach (var k in t.Asset.Keys)
            {
                var assetRecord = t.Asset[k];

                var asset = new Core.Domain.Asset();
                asset.Id          = k;
                asset.MetadataUrl = t.TransactionUrl?.ToString();

                asset.Input = assetRecord.AssetDataInput.Select(x => new In()
                {
                    TransactionId = x.TxId,
                    Address       = x.Address,
                    Index         = x.Index,
                    Value         = x.Value,
                    AssetId       = x.AssetId,
                    Quantity      = x.Quantity
                }).ToList();

                asset.Output = assetRecord.AssetDataOutput.Select(x => new Out()
                {
                    TransactionId = x.TxId,
                    Address       = x.Address,
                    Index         = x.Index,
                    Value         = x.Value,
                    AssetId       = x.AssetId,
                    Quantity      = x.Quantity
                }).ToList();

                assets.Add(asset);
            }

            var transaction = new Transaction()
            {
                TransactionId   = t.TxId,
                Time            = block.Time,
                Hex             = t.Hex,
                Fees            = t.Fees,
                IsCoinBase      = t.IsCoinBase,
                IsColor         = t.IsColor,
                Block           = block,
                Blockhash       = t.Block.Hash,
                TransactionIn   = inputs,
                TransactionsOut = outputs,
                Assets          = assets
            };

            return(transaction);
        }