private PaymentDate CalculateNextPaymentDate(PaymentDate paymentDate)
{
var proposedDate = new PaymentDate(paymentDate.ScheduledDate.AddDays(7 * this.multiplier));
if (this.filter.BeginDate != null)
{
List<DateTime> holidays =
NewZealandPublicHolidays.CalculateHolidays(this.filter.BeginDate.Value,
this.filter.BeginDate.Value.AddYears(1)).ToList();
while (holidays.Contains(proposedDate.Date))
{
proposedDate.Date = proposedDate.Date.AddDays(1);
proposedDate.Date = proposedDate.Date.FindNextWeekday();
}
}
if (proposedDate.Date != proposedDate.ScheduledDate)
{
this.diagLogger.LogInfo(
l => l.Format(" {0} is a holiday, moved to {1}", proposedDate.ScheduledDate, proposedDate.Date));
}
return proposedDate;
}