コード例 #1
0
        protected virtual DateTime GetSendTimeUtc(string timezoneId, List <SubscriberScheduleSettings <TKey> > periods, out bool isScheduled)
        {
            if (periods == null || periods.Count == 0)
            {
                isScheduled = false;
                return(DateTime.UtcNow);
            }

            //check receive periods in subscriber timezone
            DateTime nowTime = GetNowInTimeZone(timezoneId);
            SubscriberScheduleSettings <TKey> nowPeriod = periods.FirstOrDefault(
                p => p.PeriodBegin <= nowTime.TimeOfDay &&
                nowTime.TimeOfDay <= p.PeriodEnd);

            if (nowPeriod != null)
            {
                isScheduled = false;
                return(DateTime.UtcNow);
            }

            DateTime sendDate = FindClosestSendDate(periods, nowTime);

            isScheduled = true;
            return(sendDate.ToUniversalTime());
        }
            public void then_schedule_settings_rewriten_sets_are_found_using_ef()
            {
                List <SubscriberScheduleSettingsLong> actual = DbContext.SubscriberScheduleSettings
                                                               .Where(x => x.SubscriberId == _subscriberId)
                                                               .OrderBy(x => x.Set)
                                                               .ThenBy(x => x.Order)
                                                               .ToList();

                actual.Should().NotBeEmpty();
                actual.Count.Should().Be(_insertedData.Count);

                for (int i = 0; i < _insertedData.Count; i++)
                {
                    SubscriberScheduleSettingsLong    actualItem   = actual[i];
                    SubscriberScheduleSettings <long> expectedItem = _insertedData[i];

                    actualItem.Order.Should().Be(expectedItem.Order);
                    actualItem.PeriodBegin.Should().Be(expectedItem.PeriodBegin);
                    actualItem.PeriodEnd.Should().Be(expectedItem.PeriodEnd);
                    actualItem.Set.Should().Be(expectedItem.Set);
                }
            }