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); }
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); }