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); } }