Exemplo n.º 1
0
        public virtual DateTime GetCalculatedBusinessDay(DateTime date, BusinessDayCalculation adjsutment)
        {
            if (adjsutment == BusinessDayCalculation.AnyDay)
            {
                return(date);
            }

            if (adjsutment == BusinessDayCalculation.PreviousBusinessDay)
            {
                return(GetPreviousBusinessDay(date));
            }

            if (adjsutment == BusinessDayCalculation.NextBusinessDay)
            {
                return(GetNextBusinessDay(date));
            }

            var previousBusinessDay = GetPreviousBusinessDay(date);
            var nextBusinessDay     = GetPreviousBusinessDay(date);

            if (adjsutment == BusinessDayCalculation.ClosestBusinessDayOrNext)
            {
                if (date.Subtract(previousBusinessDay).Days > nextBusinessDay.Subtract(date).Days)
                {
                    return(nextBusinessDay);
                }
                else if (date.Subtract(previousBusinessDay).Days < nextBusinessDay.Subtract(date).Days)
                {
                    return(previousBusinessDay);
                }
                else
                {
                    return(nextBusinessDay);
                }
            }

            //last option is NextBusinessDayThisMonthOrPrevious

            if (nextBusinessDay.Month == date.Month)
            {
                return(nextBusinessDay);
            }

            return(previousBusinessDay);
        }
        public IActionResult Post(BusinessDayCalculation request)
        {
            request.BusinessDays = _businessDayCalculationService.CalculateNumberOfBusinessDaysBetweenTwoDates(request.StartDate, request.EndDate);

            return(Ok(request));
        }