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