public AddressViewModel GetAddress(string addressText, int currentPage, int pageSize = AppSettings.PageSize)
        {
            var addressQueries = new AccountQueries(_context);
            var tokenQueries   = new TokenQueries(_context);

            var account = addressQueries.QueryAccount(addressText);

            if (account != null)
            {
                SoulRate = Explorer.GetSoulPrice();
                var addressVm = AddressViewModel.FromAddress(account, tokenQueries.QueryTokens().ToList());

                addressVm.Transactions = GetAddressTransactions(addressVm.Address, currentPage, pageSize);

                foreach (var addressVmNativeBalance in addressVm.NativeBalances)
                {
                    addressVmNativeBalance.TxnCount = GetTransactionCount(addressVm.Address);
                }

                CalculateAddressSoulValue(new List <AddressViewModel> {
                    addressVm
                });
                return(addressVm);
            }

            if (Address.IsValidAddress(addressText))
            {
                return(new AddressViewModel {
                    Address = addressText, Balance = 0, Name = "anonymous", Value = 0
                });
            }

            return(null);
        }
Ejemplo n.º 2
0
        public List <BalanceViewModel> GetHolders(string symbol)
        {
            var accountQuery = new AccountQueries(_context);
            var tokenQuery   = new TokenQueries(_context);

            var token = tokenQuery.QueryToken(symbol);

            var balances = new List <BalanceViewModel>();

            if (token == null)
            {
                return(balances);
            }

            if ((token.Flags & TokenFlags.Fungible) != 0)
            {
                foreach (var account in accountQuery.QueryRichList(30, symbol))
                {
                    var accountTokenBalanceList = accountQuery.QueryAccountTokenBalanceList(account.Address, symbol);

                    foreach (var balance in accountTokenBalanceList)
                    {
                        var existingEntry = balances.SingleOrDefault(p => p.Address.Equals(account.Address));
                        if (existingEntry != null)
                        {
                            existingEntry.Balance += UnitConversion.ToDecimal(balance.Amount, (int)token.Decimals);
                        }
                        else
                        {
                            var vm = new BalanceViewModel
                            {
                                ChainName = balance.Chain,
                                Balance   = UnitConversion.ToDecimal(balance.Amount, (int)token.Decimals),
                                Token     = TokenViewModel.FromToken(token, AppSettings.MockLogoUrl),
                                Address   = account.Address
                            };
                            balances.Add(vm);
                        }
                    }
                }
            }
            else
            {
                var nftList = tokenQuery.QueryAllNonFungibleTokens(symbol);
                foreach (var nonFungibleToken in nftList)
                {
                    var vm = new BalanceViewModel
                    {
                        ChainName = nonFungibleToken.Chain,
                        Token     = TokenViewModel.FromToken(token, AppSettings.MockLogoUrl),
                        Address   = nonFungibleToken.AccountAddress
                    };
                    vm.Balance = nftList.Count(p => p.AccountAddress.Equals(vm.Address));
                    balances.Add(vm);
                }
            }

            return(balances);
        }
Ejemplo n.º 3
0
        public List <TransactionViewModel> GetTransfers(string symbol, int amount = AppSettings.PageSize)
        {
            var tokenQuery = new TokenQueries(_context);
            var transfers  = tokenQuery.QueryLastTokenTransactions(symbol, amount);

            var temp = transfers.Select(TransactionViewModel.FromTransaction).ToList();

            return(temp);
            //return new List<TransactionViewModel>(temp.Where(p => p.AmountTransfer > 0).Take(amount));
        }
Ejemplo n.º 4
0
        public List <NftViewModel> GetNftListByAddress(string inputAddress) //todo redo this after rpc stuff
        {
            var accountQuery = new AccountQueries(_context);
            var account      = accountQuery.QueryAccount(inputAddress);
            var nftList      = new List <NftViewModel>();
            var tokensQuery  = new TokenQueries(_context);
            var tokenList    = tokensQuery.QueryTokens().ToList();

            if (account != null)
            {
                foreach (var nfToken in account.NonFungibleTokens)
                {
                    string viewerUrl = string.Empty, detailsUrl = string.Empty;

                    var tokenEntity = tokenList.SingleOrDefault(p => p.Symbol == nfToken.TokenSymbol);
                    if (tokenEntity.MetadataList.Count > 0)
                    {
                        viewerUrl  = GetViewerUrl(tokenEntity);
                        detailsUrl = GetDetailsUrl(tokenEntity);
                    }

                    var existingVm = nftList.SingleOrDefault(vm => vm.Symbol == nfToken.TokenSymbol);
                    if (existingVm != null)
                    {
                        existingVm.InfoList.Add(new NftInfoViewModel
                        {
                            ViewerUrl = viewerUrl,
                            Id        = nfToken.Id,
                            Info      = detailsUrl
                        });
                    }
                    else
                    {
                        var newVm = new NftViewModel
                        {
                            Address  = inputAddress,
                            Symbol   = nfToken.TokenSymbol,
                            InfoList = new List <NftInfoViewModel>
                            {
                                new NftInfoViewModel
                                {
                                    ViewerUrl = viewerUrl,
                                    Id        = nfToken.Id,
                                    Info      = detailsUrl
                                }
                            }
                        };

                        nftList.Add(newVm);
                    }
                }
            }

            return(nftList);
        }
Ejemplo n.º 5
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");
            }
        }
Ejemplo n.º 6
0
        public async Task <MarketplaceViewModel> GetAuctions(string chain, int currentPage, int pageSize = AppSettings.PageSize, string tokenSymbol = null)
        {
            var tokenQueries = new TokenQueries(_context);
            var chainQueries = new ChainQueries(_context);
            var tokenList    = tokenQueries.QueryTokens();

            var chains = chainQueries.QueryChains();
            List <AuctionDto> auctions = new List <AuctionDto>();

            var auction = await _phantasmaRpcService.GetAuctions.SendRequestAsync(chain, "", currentPage, pageSize);

            auctions.AddRange(auction.AuctionsList);

            return(MarketplaceViewModel.FromAuctionList(auctions, tokenList));
        }
Ejemplo n.º 7
0
        public TokenViewModel GetToken(string symbol)
        {
            var tokenQuery = new TokenQueries(_context);
            var token      = tokenQuery.QueryToken(symbol);

            if (token != null)
            {
                SoulRate = token.Symbol == "SOUL" ? CoinUtils.GetCoinRate(CoinUtils.SoulId) : 0;

                return(TokenViewModel.FromToken(token,
                                                AppSettings.MockLogoUrl,
                                                SoulRate));
            }

            return(null);
        }
Ejemplo n.º 8
0
        public TokenViewModel GetToken(string symbol)
        {
            var tokenQuery = new TokenQueries(_context);
            var token      = tokenQuery.QueryToken(symbol);

            if (token != null)
            {
                SoulRate = Explorer.GetSoulPrice();

                return(TokenViewModel.FromToken(token,
                                                AppSettings.MockLogoUrl,
                                                SoulRate));
            }

            return(null);
        }
Ejemplo n.º 9
0
        public List <TokenViewModel> GetTokens()
        {
            var tokenQuery = new TokenQueries(_context);
            var tokenList  = tokenQuery.QueryTokens();
            var tokensList = new List <TokenViewModel>();

            SoulRate = Explorer.GetSoulPrice();

            foreach (var token in tokenList)
            {
                tokensList.Add(TokenViewModel.FromToken(token,
                                                        AppSettings.MockLogoUrl,
                                                        SoulRate));
            }

            return(tokensList);
        }
Ejemplo n.º 10
0
        public List <TokenViewModel> GetTokens()
        {
            var tokenQuery = new TokenQueries(_context);
            var tokenList  = tokenQuery.QueryTokens();
            var tokensList = new List <TokenViewModel>();

            SoulRate = CoinUtils.GetCoinRate(CoinUtils.SoulId);

            foreach (var token in tokenList)
            {
                SoulRate = token.Symbol == "SOUL" ? CoinUtils.GetCoinRate(CoinUtils.SoulId) : 0;
                tokensList.Add(TokenViewModel.FromToken(token,
                                                        AppSettings.MockLogoUrl,
                                                        SoulRate));
            }

            return(tokensList);
        }
        public List <AddressViewModel> GetAddressList()
        {
            var addressQueries = new AccountQueries(_context);
            var tokenQueries   = new TokenQueries(_context);

            var addressList = new List <AddressViewModel>();

            var list = addressQueries.QueryRichList(30);

            foreach (var account in list)
            {
                var addressVm = AddressViewModel.FromAddress(account, tokenQueries.QueryTokens().ToList());
                CalculateAddressSoulValue(new List <AddressViewModel> {
                    addressVm
                });
                addressList.Add(addressVm);
            }

            CalculateAddressSoulValue(addressList);

            return(addressList);
        }