Example #1
0
        public WalletBalanceResult GetBalanceForAccount(int accountIndex, bool excludeColdStake)
        {
            string excludeColdStakeSql = excludeColdStake && this.network.Consensus.IsProofOfStake ? "AND IsColdCoinStake != true " : string.Empty;

            var sql = "SELECT " +
                      "@key as Confirmed," +
                      "SUM(*.Amount) " +
                      "FROM transactions " +
                      $"WHERE SpendingDetails = null AND AccountIndex = {accountIndex} " +
                      $"{excludeColdStakeSql}" +
                      $"GROUP BY BlockHeight != null";

            using (var res = this.db.Execute(sql))
            {
                var walletBalanceResult = new WalletBalanceResult();

                while (res.Read())
                {
                    if (res["Confirmed"] == false)
                    {
                        walletBalanceResult.AmountUnconfirmed = res["Amount"].AsInt64;
                    }
                    else
                    {
                        walletBalanceResult.AmountConfirmed = res["Amount"].AsInt64;
                    }
                }

                return(walletBalanceResult);
            }
        }
Example #2
0
        public WalletBalanceResult GetBalanceForAccount(int accountIndex, bool excludeColdStake)
        {
            string excludeColdStakeSql = excludeColdStake && this.network.Consensus.IsProofOfStake ? "AND (IsColdCoinStake = false OR IsColdCoinStake IS NULL) " : string.Empty;

            var sql = @$ "SELECT
                      BlockHeight as Confirmed,
                      SUM(Amount) as Total
                      FROM TransactionData
                      WHERE SpendingDetailsTransactionId IS NULL AND AccountIndex = @accountIndex
                      {excludeColdStakeSql}
                      GROUP BY BlockHeight IS NOT NULL";

            using var conn = this.GetDbConnection();
            var result = conn.Query(sql, new { accountIndex });

            var walletBalanceResult = new WalletBalanceResult();

            foreach (dynamic item in result)
            {
                if (item.Confirmed == null)
                {
                    walletBalanceResult.AmountUnconfirmed = (long)item.Total;
                }
                else
                {
                    walletBalanceResult.AmountConfirmed = (long)item.Total;
                }
            }

            return(walletBalanceResult);
        }
Example #3
0
        public WalletBalanceResult GetBalanceForAccount(int accountIndex, bool excludeColdStake)
        {
            var transactions = this.trxCol
                               .Find(Query.And(Query.EQ("AccountIndex", new BsonValue(accountIndex)), Query.EQ("SpendingDetails", BsonValue.Null)))
                               .Where(x => excludeColdStake && this.network.Consensus.IsProofOfStake ? (x.IsColdCoinStake != true) : true)
                               .GroupBy(x => x.BlockHeight != null)
                               .Select(o =>
                                       new
            {
                Confirmed = o.Key,
                Amount    = o.Sum(x => x.Amount)
            }).ToList();

            var walletBalanceResult = new WalletBalanceResult();

            foreach (var transaction in transactions)
            {
                if (transaction.Confirmed == false)
                {
                    walletBalanceResult.AmountUnconfirmed = transaction.Amount;
                }
                else
                {
                    walletBalanceResult.AmountConfirmed = transaction.Amount;
                }
            }
            return(walletBalanceResult);
        }