Beispiel #1
0
        private (DateTimeOffset nextIntervalStart, DateTimeOffset nextIntervalEnd) SwitchToNextInterval(
            GeneratorLimitOptions limitOption,
            DateTimeOffset previousIntervalEnd,
            TimeSpan intervalLength,
            DateTimeOffset EndLimit,
            DateTimeOffset openHour,
            DateTimeOffset closeHour)
        {
            var nextIntervalStart = previousIntervalEnd;

            if (limitOption == GeneratorLimitOptions.LimitPerHour)
            {
                if (nextIntervalStart.TimeOfDay < openHour.TimeOfDay)
                {
                    nextIntervalStart = nextIntervalStart.Date + openHour.TimeOfDay;
                }

                if (closeHour.TimeOfDay <= nextIntervalStart.TimeOfDay)
                {
                    nextIntervalStart = nextIntervalStart.AddDays(1).Date + openHour.TimeOfDay;
                }
            }

            var nextIntervalEnd = EndLimit <= (nextIntervalStart + intervalLength) ?
                                  EndLimit :
                                  (nextIntervalStart + intervalLength);

            if (nextIntervalStart > nextIntervalEnd)
            {
                nextIntervalEnd = nextIntervalStart + intervalLength;
            }

            return(nextIntervalStart, nextIntervalEnd);
        }
Beispiel #2
0
        private TimeSpan GetDivisionInterval(GeneratorLimitOptions limitOptions,
                                             DateTimeOffset startDate,
                                             DateTimeOffset endDate)
        {
            switch (limitOptions)
            {
            case GeneratorLimitOptions.LimitPerHour:
                return(TimeSpan.FromHours(1));

            case GeneratorLimitOptions.LimitPerDay:
                return(TimeSpan.FromDays(1));

            case GeneratorLimitOptions.LimitPerMonth:
                return(TimeSpan.FromDays(30));

            case GeneratorLimitOptions.LimitPerCampaign:
            default:
                return(endDate - startDate);
            }
        }