Example #1
0
 public override CompileResult Execute(IEnumerable<FunctionArgument> arguments, ParsingContext context)
 {
     var functionArguments = arguments as FunctionArgument[] ?? arguments.ToArray();
     ValidateArguments(functionArguments, 2);
     var startDate = System.DateTime.FromOADate(ArgToInt(functionArguments, 0));
     var endDate = System.DateTime.FromOADate(ArgToInt(functionArguments, 1));
     WorkdayCalculator calculator = new WorkdayCalculator();
     var weekdayFactory = new HolidayWeekdaysFactory();
     if (functionArguments.Length > 2)
     {
         var holidayArg = functionArguments[2].Value;
         if (Regex.IsMatch(holidayArg.ToString(), "^[01]{7}"))
         {
             calculator = new WorkdayCalculator(weekdayFactory.Create(holidayArg.ToString()));
         }
         else if (IsNumeric(holidayArg))
         {
             var holidayCode = Convert.ToInt32(holidayArg);
             calculator = new WorkdayCalculator(weekdayFactory.Create(holidayCode));
         }
         else
         {
             return new CompileResult(eErrorType.Value);
         }
     }
     var result = calculator.CalculateNumberOfWorkdays(startDate, endDate);
     if (functionArguments.Length > 3)
     {
         result = calculator.ReduceWorkdaysWithHolidays(result, functionArguments[3]);
     }
     return new CompileResult(result.NumberOfWorkdays, DataType.Integer);
 }
Example #2
0
        public override CompileResult Execute(IEnumerable<FunctionArgument> arguments, ParsingContext context)
        {
            var functionArguments = arguments as FunctionArgument[] ?? arguments.ToArray();
            ValidateArguments(functionArguments, 2);
            var startDate = System.DateTime.FromOADate(ArgToInt(functionArguments, 0));
            var endDate = System.DateTime.FromOADate(ArgToInt(functionArguments, 1));
            var calculator = new WorkdayCalculator();
            var result = calculator.CalculateNumberOfWorkdays(startDate, endDate);
            if (functionArguments.Length > 2)
            {
                result = calculator.ReduceWorkdaysWithHolidays(result, functionArguments[2]);
            }

            return new CompileResult(result.NumberOfWorkdays, DataType.Integer);
        }
Example #3
0
        public override CompileResult Execute(IEnumerable<FunctionArgument> arguments, ParsingContext context)
        {
            var functionArguments = arguments as FunctionArgument[] ?? arguments.ToArray();
            ValidateArguments(functionArguments, 2);
            var startDate = System.DateTime.FromOADate(ArgToInt(functionArguments, 0));
            var nWorkDays = ArgToInt(functionArguments, 1);
            var resultDate = System.DateTime.MinValue;

            var calculator = new WorkdayCalculator();
            var result = calculator.CalculateWorkday(startDate, nWorkDays);
            if (functionArguments.Length > 2)
            {
                result = calculator.AdjustResultWithHolidays(result, functionArguments[2]);
            }
            return CreateResult(result.EndDate.ToOADate(), DataType.Date);
        }