public override DateTime CalculateDate(DateTime start, DateTime end)
{
var proposed = DateTime.MinValue;
for (var year = start.Year; year <= end.Year; year++)
{
proposed = new DateTime(year, Month, Day);
if (proposed >= start && proposed <= end)
{
break;
}
}
if (MondayiseIfOnWeekend &&
(proposed.DayOfWeek == DayOfWeek.Saturday || proposed.DayOfWeek == DayOfWeek.Sunday))
{
do
{
proposed = proposed.AddDays(1);
} while (proposed.DayOfWeek != DayOfWeek.Monday);
}
if (proposed < DateTime.MinValue.AddMonths(1))
{
throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture,
"Cannot find a suitable date between {0} and {1}", start, end));
}
return proposed;
}
}