Exemple #1
0
        /// <summary>
        /// query relate my wallet balances
        /// </summary>
        /// <returns></returns>
        public async Task <object> GetMyTotalBalance(UInt160[] assets = null)
        {
            if (CurrentWallet == null)
            {
                return(Error(ErrorCode.WalletNotOpen));
            }

            var addresses = CurrentWallet.GetAccounts().Select(a => a.ScriptHash).ToList();

            using var db = new TrackDB();
            var balances = db.FindAssetBalance(new BalanceFilter()
            {
                Addresses = addresses, Assets = assets
            });

            var result = balances.GroupBy(b => new { b.Asset, b.AssetDecimals, b.AssetSymbol }).Select(g => new AssetBalanceModel
            {
                Asset   = g.Key.Asset,
                Symbol  = g.Key.AssetSymbol,
                Balance = new BigDecimal(g.Select(b => b.Balance).Sum(), g.Key.AssetDecimals)
            }).ToList();

            if (assets.IsEmpty())
            {
                AppendDefaultNeoAndGas(result);
            }
            return(result);
        }
Exemple #2
0
        /// <summary>
        /// query relate my wallet balances
        /// </summary>
        /// <returns></returns>
        public async Task <object> GetMyBalances(UInt160 address = null, UInt160[] assets = null)
        {
            if (CurrentWallet == null)
            {
                return(Error(ErrorCode.WalletNotOpen));
            }

            var addresses = CurrentWallet.GetAccounts().Select(a => a.ScriptHash).ToList();

            if (address != null)
            {
                if (!addresses.Contains(address))
                {
                    return(Error(ErrorCode.AddressNotFound));
                }
                addresses = new List <UInt160>()
                {
                    address
                };
            }

            using var db = new TrackDB();
            var balances = db.FindAssetBalance(new BalanceFilter()
            {
                Addresses = addresses, Assets = assets
            });

            var result = balances.ToLookup(b => b.Address).ToAddressBalanceModels();

            if (assets.IsEmpty())
            {
                AppendDefaultNeoAndGas(result, addresses);
            }
            return(result);
        }
Exemple #3
0
        public async Task <object> GetAddressBalance(UInt160[] addresses, UInt160[] assets)
        {
            using var db = new TrackDB();
            var balances = db.FindAssetBalance(new BalanceFilter()
            {
                Addresses = addresses,
                Assets    = assets,
            });

            return(balances.ToLookup(b => b.Address).ToAddressBalanceModels());
        }