コード例 #1
0
        public int GetBlocksCount(string chain = null)
        {
            var context    = Explorer.AppServices.GetService <ExplorerDbContext>();
            var blockQuery = new BlockQueries(context);

            return(blockQuery.QueryBlocksCount(chain));
        }
コード例 #2
0
        public BlockQueryServiceTest()
        {
            //Mock
            _moqBlockQueries = new Mock <IBlockQueries>();

            // Arrange
            _sut = new BlockQueries(InitialData.context);
        }
コード例 #3
0
        public List <BlockListViewModel> GetBlocks(int currentPage, int pageSize = AppSettings.PageSize, string chain = null)
        {
            var blockQuery = new BlockQueries(_context);
            var query      = blockQuery.QueryBlocks(chain).Skip((currentPage - 1) * pageSize).Take(pageSize);

            return(query.AsEnumerable()
                   .Select(p => BlockListViewModel.FromBlock(p, blockQuery.QueryBlockTxsCount(p.Hash)))
                   .ToList());
        }
コード例 #4
0
        public string SearchCommand(string input)
        {
            try
            {
                if (Address.IsValidAddress(input)) //maybe is address
                {
                    return($"address/{input}");
                }

                //token
                var token = new TokenQueries(_context).QueryToken(input.ToUpperInvariant());
                if (token != null)// token
                {
                    return($"token/{token.Symbol}");
                }

                //app
                var app = new AppQueries(_context).QueryApp(input);
                if (app != null)
                {
                    return($"app/{app.Id}");
                }

                //chain
                var chain = new ChainQueries(_context).QueryChain(input);
                if (chain != null)
                {
                    return($"chain/{chain.Address}");
                }

                //hash
                if (Hash.TryParse(input, out var hash))
                {
                    var tx = new TransactionQueries(_context).QueryTransaction(input);
                    if (tx != null)
                    {
                        return($"tx/{tx.Hash}");
                    }

                    var block = new BlockQueries(_context).QueryBlock(input);
                    if (block != null)
                    {
                        return($"block/{block.Hash}");
                    }
                }

                return(null);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return("/home");
            }
        }
コード例 #5
0
        public HomeViewModel GetLastestInfo()
        {
            var blockQuery = new BlockQueries(_context);
            var txsQuery   = new TransactionQueries(_context);
            var chainQuery = new ChainQueries(_context);

            var blocks       = blockQuery.QueryLastBlocks(14);
            var transactions = txsQuery.QueryLastTransactions(15);
            var blocksVm     = blocks.Select(BlockHomeViewModel.FromBlock).ToList();

            var txsVm = transactions.Select(TransactionHomeViewModel.FromTransaction).ToList();

            // tx history chart calculation
            var repTxs = txsQuery.QueryLastTransactions(1000, null);

            var chart = new Dictionary <string, uint>();

            foreach (var transaction in repTxs)
            {
                var      block     = transaction.Block;
                DateTime chartTime = new Timestamp(block.Timestamp);
                var      chartKey  = $"{chartTime.Day}/{chartTime.Month}";

                if (chart.ContainsKey(chartKey))
                {
                    chart[chartKey] += 200;
                }
                else
                {
                    chart[chartKey] = 1;
                }
            }

            int  totalChains       = chainQuery.QueryChainCount;
            uint height            = chainQuery.QueryChain("main").Height;
            int  totalTransactions = txsQuery.QueryTotalChainTransactionCount();

            var vm = new HomeViewModel
            {
                Blocks            = blocksVm,
                Transactions      = txsVm,
                Chart             = chart,
                TotalTransactions = totalTransactions,
                TotalChains       = totalChains,
                BlockHeight       = height,
            };

            return(vm);
        }
コード例 #6
0
        public BlockViewModel GetBlock(string input)
        {
            var blockQuery = new BlockQueries(_context);

            var block = int.TryParse(input, out var height)
                ? blockQuery.QueryBlock(height, "main")
                : blockQuery.QueryBlock(input);//todo height only works with main

            if (block != null)
            {
                return(BlockViewModel.FromBlock(block));
            }

            return(null);
        }
コード例 #7
0
 public Task <IEnumerable <BlockDetail> > GetEpochBlocks(CancellationToken cancellationToken, uint epochNumber)
 {
     return(BlockQueries.GetEpochBlocks(this.GetConnection(), cancellationToken, epochNumber));
 }
コード例 #8
0
 public Task <Block> GetLatestBlock(CancellationToken cancellationToken)
 {
     return(BlockQueries.GetLatestBlock(this.GetConnection(), cancellationToken));
 }
コード例 #9
0
 public Task <Block> GetLatestBlock(CancellationToken cancellationToken, uint epochNumber)
 {
     return(BlockQueries.GetLatestBlockForEpoch(this.GetConnection(), cancellationToken, epochNumber));
 }