At the 4th line of code (ignore whitespace & comments) and beyond I\'m calculating the month difference between 2 dates. This works, but looks a bit hacky. Is there a be
This is the solution I came up with when commenting on Bozho
int handleAllowance(LocalDate today) {
int allowance = membership.allowance();
if (allowance == 0) return 0;
// calculate month difference
int allowanceMonths = Months.monthsBetween(lastAllowanceUpdate.withDayOfMonth(1), today.withDayOfMonth(1)).getMonths();
// if update was last month or earlier
if (allowanceMonths > 0) {
// ...and if today is on or past update day
int updateDay = Math.min(allowanceDay, today.dayOfMonth().getMaximumValue());
if (today.getDayOfMonth() >= updateDay) {
// give credits (multiply with months in the rare case this process consecutively fails to run for 2 months or more)
final int totalAllowance = allowance * allowanceMonths;
giveCredits(totalAllowance);
// update day
lastAllowanceUpdate = lastAllowanceUpdate.plusMonths(allowanceMonths);
// return the allowance given
return totalAllowance;
}
}
return 0;
}