public void CalculateInterestFor(DateTime forDate, IYieldAccount account, double interestRate, uint days = 1) { if (HasPositiveBalance(account) && ItHasAlreadyBeenCalculated(forDate, account.LastYieldedDate.GetValueOrDefault(), days)) { decimal calc = Convert.ToDecimal(Math.Pow(1 + interestRate / 100d, days / 252d) - 1); var balance = Math.Round(calc * account.Balance, 2); account.SetYield(balance, forDate); } }
public CalculatedIncomeEvent(IYieldAccount account, decimal amount) : base(account, EventType.Income, amount) { }
private static bool HasPositiveBalance(IYieldAccount account) => account.Balance > 0;