public void SaveSchedule() { var dataStoreName = view.DataStoreValue; if (string.IsNullOrEmpty(dataStoreName)) { Log.Warning(ManagementResources.NoDataStoreSelected); return; } var scheduleName = view.ScheduleNameValue; if (string.IsNullOrEmpty(scheduleName)) { Log.Warning(string.Format(ManagementResources.ValueMayNotBeEmpty, SchedulingResources.ScheduleName)); return; } var inboxWorkQueueUri = view.EndpointInboxWorkQueueUriValue; if (string.IsNullOrEmpty(inboxWorkQueueUri)) { Log.Warning(string.Format(ManagementResources.ValueMayNotBeEmpty, ManagementResources.InboxWorkQueueUri)); return; } var cronExpressionValue = view.CronExpressionValue; if (string.IsNullOrEmpty(cronExpressionValue)) { Log.Warning(string.Format(ManagementResources.ValueMayNotBeEmpty, SchedulingResources.CronExpression)); return; } CronExpression cronExpression; try { cronExpression = new CronExpression(cronExpressionValue); } catch { Log.Warning(string.Format(SchedulingResources.InvalidCronExpression, cronExpressionValue)); return; } QueueTask("AddSchedule", () => { var connectionName = DataSourceFactory.Create(dataStoreName); using (databaseConnectionFactory.Create(connectionName)) { var nextNotification = cronExpression.NextOccurrence(DateTime.Now); databaseGateway.ExecuteUsing( connectionName, databaseGateway.GetScalarUsing<int>(connectionName, ScheduleTableAccess.Contains(scheduleName)) == 1 ? ScheduleTableAccess.Save(scheduleName, inboxWorkQueueUri, cronExpressionValue, nextNotification) : ScheduleTableAccess.Add(scheduleName, inboxWorkQueueUri, cronExpressionValue, nextNotification)); } }); RefreshSchedules(); }
public Schedule Build(string name, string inboxWorkQueueUri, string cronExpression) { var expression = new CronExpression(cronExpression); return Build(name, inboxWorkQueueUri, expression, expression.NextOccurrence(DateTime.Now)); }