Example #1
0
        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);
                }
            }
        }
Example #3
0
 public WorkingDayCalculator(IWeekDaysCalculator weekDaysCalculator, IPublicHolidayCalculator publicHolidayCalculator)
 {
     _weekDaysCalculator      = weekDaysCalculator;
     _publicHolidayCalculator = publicHolidayCalculator;
 }