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