コード例 #1
0
ファイル: Book.cs プロジェクト: otac0n/SharpBooks
        /// <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);
            }
        }
コード例 #2
0
ファイル: Book.cs プロジェクト: otac0n/SharpBooks
        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;
            }
        }
コード例 #3
0
 public CompositeBalance(CompositeBalance balance, IEnumerable <CompositeBalance> balances)
 {
     this.balances = CombineBalances(balances.Concat(new[] { balance })).AsReadOnly();
 }
コード例 #4
0
ファイル: CompositeBalance.cs プロジェクト: otac0n/SharpBooks
 public CompositeBalance(CompositeBalance balance, IEnumerable<CompositeBalance> balances)
 {
     this.balances = CombineBalances(balances.Concat(new[] { balance })).AsReadOnly();
 }