/// <summary>
    /// Represent calculate interest web service
    /// </summary>
    /// <param name="accountId"></param>
    /// <param name="notes"></param>
    /// <returns></returns>
    public double?CalculateInterest(int accountId, string notes)
    {
        BankAccount  bankAccount = db.BankAccounts.Where(x => x.BankAccountId == accountId).SingleOrDefault();
        AccountState state       = db.AccountStates.Where(x => x.AccountStateId == bankAccount.AccountStateId).SingleOrDefault();

        double rate = state.RateAdjustment(bankAccount);

        double interest = (rate * bankAccount.Balance) / 12;

        bankAccount.Balance += interest;
        db.SaveChanges();

        TransactionRecord(accountId, (int)TransactionTypeValues.CalculateInterest, interest, notes);
        return(bankAccount.Balance);
    }
Esempio n. 2
0
    /// <summary>
    /// Determines the calculated interest and returns the new balance
    /// </summary>
    /// <param name="accountId">Account ID of the bank account being applied the interest</param>
    /// <param name="notes">Interest notes</param>
    /// <returns>The updated balance</returns>
    public double?CalculateInterest(int accountId, string notes)
    {
        BankAccount  bankAccount  = db.BankAccounts.Where(x => x.BankAccountId == accountId).SingleOrDefault();
        AccountState accountState = bankAccount.AccountState;
        double       interestRate = accountState.RateAdjustment(bankAccount);

        double calculatedInterest = (interestRate * bankAccount.Balance * 1) / 12;

        if (calculatedInterest < 0)
        {
            Withdrawal(accountId, Math.Abs(Math.Round(calculatedInterest, 2)), "Withdrawn interest");
        }
        else if (calculatedInterest > 0)
        {
            Deposit(accountId, Math.Round(calculatedInterest, 2), "Deposited interest");
        }

        return(bankAccount.Balance);
    }