public async Task <Block> GetBlock(string id) { var b = await _client.GetInformationBlockAsync(id); var transactionList = new List <Core.Domain.Transaction>(); var transactionIds = b.Transactions.Select(p => p.TxId).ToList(); foreach (var transactionId in transactionIds) { transactionList.Add(await _transactionProvider.GetTransaction(transactionId)); } var block = new Block() { Hash = b.Hash, Height = b.Height, Time = b.Time, Confirmations = b.Confirmations, Difficulty = b.Difficulty, MerkleRoot = b.MerkleRoot, Nonce = b.Nonce, TotalTransactions = b.TotalTransactions, PreviousBlock = b.PreviousBlock, Transactions = transactionList }; return(block); }
private static async Task <bool> IndexBlock(Model.BCExplorerContext context, string blockHash) { _logger.LogInformation($"Processing block at height {_currentBlockHeight}: {blockHash}"); BlockResult blockResult = await _client.GetBlockAsync(blockHash); if (blockResult == null) { _logger.LogWarning($"Warning - could not retrieve block at height {_currentBlockHeight}: {blockHash}"); return(false); } var block = new Model.Block { Id = _currentBlockNumber, Height = _currentBlockHeight, BlockHash = blockHash, BlockData = blockResult.OriginalJson }; context.Blocks.Add(block); if (_currentBlockHeight == 0) { // for the transaction in the genesis block, we can't pull transaction data, so this is all we know var genesisBlockTransaction = new Model.Transaction { Block = block, Id = blockResult.Transactions[0] }; context.Transactions.Add(genesisBlockTransaction); _currentBlockHeight++; _currentBlockNumber++; context.SaveChanges(); return(true); } List <BCExplorer.Network.Models.Transaction> blockTransactions = new List <BCExplorer.Network.Models.Transaction>(); foreach (var txid in blockResult.Transactions) { var transaction = await _transactionProvider.GetTransaction(txid); transaction.Block = new BCExplorer.Network.Models.Block { Height = _currentBlockHeight }; blockTransactions.Add(transaction); } foreach (var blockTx in blockTransactions) { ProcessTransaction(blockTx, context); } context.SaveChanges(); _currentBlockHeight++; _currentBlockNumber++; return(true); }
public async Task <IActionResult> Get(string customerId, int id) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var item = await _transactionProvider.GetTransaction(customerId, id); if (item == null) { return(NotFound()); //404 Not Found (Client Error Status Code) } return(Ok(item)); //Get Successfull (Success Status Code) }
public async Task <Transaction> GetTransaction(string id) { return(await _transactionProvider.GetTransaction(id)); }