SenseNet.Messaging.LastProcessTime.GetNextMonthlyTimeByEveryDayNr C# (CSharp) Method

GetNextMonthlyTimeByEveryDayNr() private static method

private static GetNextMonthlyTimeByEveryDayNr ( System.DateTime origin ) : System.DateTime
origin System.DateTime
return System.DateTime
        private static DateTime GetNextMonthlyTimeByEveryDayNr(DateTime origin)
        {
            var daysInMonth = DateTime.DaysInMonth(origin.Year, origin.Month);
            var dayOfMonth = Configuration.MonthlyDay > daysInMonth ? daysInMonth : Configuration.MonthlyDay;
            var nextTime = new DateTime(origin.Year, origin.Month, dayOfMonth, Configuration.MonthlyHour, Configuration.MonthlyMinute, 0);
            if (nextTime > origin)
                return nextTime;

            var nextMonth = origin.Month + 1;
            if (nextMonth == 13)
                return new DateTime(origin.Year + 1, 1, Configuration.MonthlyDay, Configuration.MonthlyHour, Configuration.MonthlyMinute, 0);

            daysInMonth = DateTime.DaysInMonth(origin.Year, nextMonth);
            dayOfMonth = Configuration.MonthlyDay > daysInMonth ? daysInMonth : Configuration.MonthlyDay;
            return new DateTime(origin.Year, nextMonth, dayOfMonth, Configuration.MonthlyHour, Configuration.MonthlyMinute, 0);
        }
        private static DateTime GetNextMonthlyTimeByWeekNrWeekday(DateTime origin)