public IPublicHolidayCalculator GetCalculator(PublicHoliday holiday) { IPublicHolidayCalculator calculator = null; switch (holiday.HolidayType) { case PublicHolidayType.FixedDate: calculator = new FixedDayCalculator(); break; case PublicHolidayType.BasedOnAnotherHoliday: calculator = new BasedOnOtherHolidayCalculator(); break; case PublicHolidayType.RepeatEveryXYear: calculator = new YearRepetitionCalculator(); break; case PublicHolidayType.Easter: calculator = new EasterCalculator(); break; case PublicHolidayType.SpecificDayInWeek: calculator = new SpecificWeekDayCalculator(); break; default: throw new ArgumentException(); } return(calculator); }
private void ProcessCustomHolidays(List <int> yearsToCompare, List <PublicHoliday> publicHolidays, Dictionary <string, List <DateTime> > convertedHolidaysDictionnary) { IPublicHolidayCalculator calculator = null; foreach (var holiday in publicHolidays) { try { calculator = _publicHolidayCalculatorFactory.GetCalculator(holiday); var computedDates = calculator.GetPublicHolidayByYears(yearsToCompare, holiday); convertedHolidaysDictionnary.Add(holiday.Name, computedDates); } catch (Exception e) { _logger.LogError("An error occured when processing the custom holiday {0} with message {1}.", holiday.Name, e.Message); } } }
public WorkingDayCalculator(IWeekDaysCalculator weekDaysCalculator, IPublicHolidayCalculator publicHolidayCalculator) { _weekDaysCalculator = weekDaysCalculator; _publicHolidayCalculator = publicHolidayCalculator; }