public void WhenRetrievingTheNextOccurenceTimeWhenCurrentDateIsOccurenceTime() { var schedule = new SubscriptionSchedule(new QuerySchedule { Hour = "1", Minute = "0", Second = "0" }); var nextOccurence = schedule.GetNextOccurence(new DateTime(2019, 08, 01, 01, 00, 00)); Assert.AreEqual(new DateTime(2019, 08, 02, 01, 00, 00), nextOccurence); }
public void WhenRetrievingTheNextOccurenceTime() { var schedule = new SubscriptionSchedule(new QuerySchedule { Hour = "1" }); var nextOccurence = schedule.GetNextOccurence(new DateTime(2019, 08, 01, 15, 59, 05)); Assert.AreEqual(new DateTime(2019, 08, 02, 01, 00, 00), nextOccurence); }
public static void Validate(Subscription subscription) { EnsureDestinationIsValidURI(subscription); EnsureDestinationHasEndSlash(subscription); if (!(subscription.Schedule == null ^ string.IsNullOrEmpty(subscription.Trigger))) { throw new EpcisException(ExceptionType.SubscriptionControlsException, "Only one of the schedule and trigger must be provided"); } if (!SubscriptionSchedule.IsValid(subscription)) { throw new EpcisException(ExceptionType.SubscriptionControlsException, "Provided schedule parameters are invalid"); } }
public void Register(Subscription subscription) { Pulse(() => { if (string.IsNullOrEmpty(subscription.Trigger)) { _scheduledExecutions[subscription] = new SubscriptionSchedule(subscription.Schedule).GetNextOccurence(DateTime.UtcNow); } else { if (!_triggeredSubscriptions.ContainsKey(subscription.Trigger)) { _triggeredSubscriptions[subscription.Trigger] = new List <Subscription>(); } _triggeredSubscriptions[subscription.Trigger].Add(subscription); } }); }
public async Task <IActionResult> Register(SubscriptionSchedule SubscriptionSchedule) { var userWithSameEmail = _dbContext.SubscriptionSchedule.SingleOrDefault(u => u.ScheduleName == SubscriptionSchedule.ScheduleName); if (userWithSameEmail != null) { return(BadRequest("Schedule Name already exists")); } var SubscriptionScheduleObj = new SubscriptionSchedule { SubSchID = Guid.NewGuid(), ScheduleType = SubscriptionSchedule.ScheduleType, ScheduleName = SubscriptionSchedule.ScheduleName }; _dbContext.SubscriptionSchedule.Add(SubscriptionScheduleObj); await _dbContext.SaveChangesAsync(); return(StatusCode(StatusCodes.Status201Created)); }
private void ValidateRequest(Subscription subscription) { var query = _queries.SingleOrDefault(q => q.Name == subscription.QueryName); if (query == null) { throw new EpcisException(ExceptionType.NoSuchNameException, $"Query with name '{subscription.QueryName}' is not implemented"); } else if (!query.AllowSubscription) { throw new EpcisException(ExceptionType.SubscribeNotPermittedException, $"Query with name '{subscription.QueryName}' does not allow subscription"); } else if (!(subscription.Schedule == null ^ string.IsNullOrEmpty(subscription.Trigger))) { throw new EpcisException(ExceptionType.SubscriptionControlsException, "Only one of the schedule and trigger must be provided"); } else if (!SubscriptionSchedule.IsValid(subscription)) { throw new EpcisException(ExceptionType.SubscriptionControlsException, "Provided schedule parameters are invalid"); } EnsureDestinationIsValidURI(subscription); EnsureDestinationHasEndSlash(subscription); }