/// <inheritdoc/> public CompositeBalance GetAccountTotalBalance(Account account) { lock (this.lockMutex) { if (account == null) { throw new ArgumentNullException(nameof(account)); } if (this.totalBalances.TryGetValue(account, out var balance)) { return(balance); } if (!this.balances.TryGetValue(account, out balance)) { throw new InvalidOperationException(Localization.Localization.ACCOUNT_SPECIFIED_NOT_IN_BOOK); } var subAccountBalances = from a in this.accounts where a.ParentAccount == account select this.GetAccountTotalBalance(a); balance = new CompositeBalance(balance, subAccountBalances); this.totalBalances[account] = balance; return(balance); } }
public CompositeBalance GetAccountTotalBalance(Account account) { lock (this.lockMutex) { if (account == null) { throw new ArgumentNullException("account"); } CompositeBalance balance; if (this.totalBalances.TryGetValue(account, out balance)) { return balance; } if (!this.balances.TryGetValue(account, out balance)) { throw new InvalidOperationException("The account specified is not a member of the book."); } var subAccountBalances = from a in this.accounts where a.ParentAccount == account select this.GetAccountTotalBalance(a); balance = new CompositeBalance(balance, subAccountBalances); this.totalBalances[account] = balance; return balance; } }
public CompositeBalance(CompositeBalance balance, IEnumerable <CompositeBalance> balances) { this.balances = CombineBalances(balances.Concat(new[] { balance })).AsReadOnly(); }
public CompositeBalance(CompositeBalance balance, IEnumerable<CompositeBalance> balances) { this.balances = CombineBalances(balances.Concat(new[] { balance })).AsReadOnly(); }