private RecurringDateRangeJobOptions CreateRecurringDateRangeJobOptions() { var options = new RecurringDateRangeJobOptions(() => string.Empty.Reverse()) { RecurringJobOptions = new RecurringJobOptions() { QueueName = EnqueuedState.DefaultQueue, TimeZone = TimeZoneInfo.Utc }, CronExpression = "* * * * * *", EndDateTime = DateTime.MaxValue, StartDateTime = DateTime.UtcNow, RecurringJobId = "Id" }; return(options); }
public void AddOrUpdate([NotNull] RecurringDateRangeJobOptions options) { if (options == null) { throw new ArgumentNullException(nameof(options)); } options.Validate(); ValidateCronExpression(options.CronExpression); using (var connection = _storage.GetConnection()) { var recurringJob = new Dictionary <string, string>(); var invocationData = InvocationData.Serialize(options.Job); recurringJob["Job"] = JobHelper.ToJson(invocationData); recurringJob["Cron"] = options.CronExpression; recurringJob["TimeZoneId"] = options.RecurringJobOptions.TimeZone.Id; recurringJob["Queue"] = options.RecurringJobOptions.QueueName; var utcStartDate = options.StartDateTime.HasValue ? TimeZoneInfo.ConvertTime(options.StartDateTime.Value, options.RecurringJobOptions.TimeZone, TimeZoneInfo.Utc) : (DateTime?)null; var utcEndDate = options.EndDateTime.HasValue ? TimeZoneInfo.ConvertTime(options.EndDateTime.Value, options.RecurringJobOptions.TimeZone, TimeZoneInfo.Utc) : (DateTime?)null; recurringJob["StartDate"] = JobHelper.SerializeDateTime(utcStartDate ?? DateTime.MinValue); recurringJob["EndDate"] = JobHelper.SerializeDateTime(utcEndDate ?? DateTime.MaxValue); if (options.UseEndDateTimeComponent.HasValue) { recurringJob[HashKeys.UseEndDateTimeComponent] = options.UseEndDateTimeComponent.ToString(); } var existingJob = connection.GetAllEntriesFromHash($"{PluginConstants.JobType}:{options.RecurringJobId}"); if (existingJob == null) { recurringJob["CreatedAt"] = JobHelper.SerializeDateTime(DateTime.UtcNow); } using (var transaction = connection.CreateWriteTransaction()) { transaction.SetRangeInHash( $"{PluginConstants.JobType}:{options.RecurringJobId}", recurringJob); transaction.AddToSet(PluginConstants.JobSet, options.RecurringJobId); transaction.Commit(); } } }