From 3c8d343165bc06f30cacf331ff215c138bf3849b Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 20 Apr 2021 11:18:28 +0200 Subject: [PATCH] Customize CRON input help text for Quartz provider --- .../Activities/Cron/Cron.cs | 2 +- .../Extensions/TimersOptionsExtensions.cs | 4 ++- .../Handlers/ConfigureCronProperty.cs | 25 +++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 src/activities/Elsa.Activities.Temporal.Quartz/Handlers/ConfigureCronProperty.cs diff --git a/src/activities/Elsa.Activities.Temporal.Common/Activities/Cron/Cron.cs b/src/activities/Elsa.Activities.Temporal.Common/Activities/Cron/Cron.cs index 31b2fb0a2..1bc9cdf8a 100644 --- a/src/activities/Elsa.Activities.Temporal.Common/Activities/Cron/Cron.cs +++ b/src/activities/Elsa.Activities.Temporal.Common/Activities/Cron/Cron.cs @@ -31,7 +31,7 @@ namespace Elsa.Activities.Temporal _crontabParser = crontabParser; } - [ActivityProperty(Hint = "Specify a CRON expression. See https://crontab.guru/ for help.", SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })] + [ActivityProperty(Hint = "Specify a CRON expression.", SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })] public string CronExpression { get; set; } = "* * * * *"; public Instant? ExecuteAt diff --git a/src/activities/Elsa.Activities.Temporal.Quartz/Extensions/TimersOptionsExtensions.cs b/src/activities/Elsa.Activities.Temporal.Quartz/Extensions/TimersOptionsExtensions.cs index 754261939..f150f89ba 100644 --- a/src/activities/Elsa.Activities.Temporal.Quartz/Extensions/TimersOptionsExtensions.cs +++ b/src/activities/Elsa.Activities.Temporal.Quartz/Extensions/TimersOptionsExtensions.cs @@ -1,6 +1,7 @@ using System; using Elsa.Activities.Temporal.Common.Options; using Elsa.Activities.Temporal.Common.Services; +using Elsa.Activities.Temporal.Quartz.Handlers; using Elsa.Activities.Temporal.Quartz.Jobs; using Elsa.Activities.Temporal.Quartz.Services; using Microsoft.Extensions.DependencyInjection; @@ -29,7 +30,8 @@ namespace Elsa timersOptions.Services .AddSingleton() .AddSingleton() - .AddTransient(); + .AddTransient() + .AddNotificationHandlers(typeof(ConfigureCronProperty)); if (registerQuartz) { diff --git a/src/activities/Elsa.Activities.Temporal.Quartz/Handlers/ConfigureCronProperty.cs b/src/activities/Elsa.Activities.Temporal.Quartz/Handlers/ConfigureCronProperty.cs new file mode 100644 index 000000000..128644191 --- /dev/null +++ b/src/activities/Elsa.Activities.Temporal.Quartz/Handlers/ConfigureCronProperty.cs @@ -0,0 +1,25 @@ +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Elsa.Events; +using MediatR; + +namespace Elsa.Activities.Temporal.Quartz.Handlers +{ + public class ConfigureCronProperty : INotificationHandler + { + public Task Handle(DescribingActivityType notification, CancellationToken cancellationToken) + { + var activityType = notification.ActivityType; + + if (activityType.Type != typeof(Cron)) + return Task.CompletedTask; + + var cronExpressionProperty = notification.ActivityDescriptor.Properties.First(x => x.Name == nameof(Cron.CronExpression)); + cronExpressionProperty.DefaultValue = "0 * 0 ? * * *"; + cronExpressionProperty.Hint = "Specify a Quartz CRON expression. Go to https://www.freeformatter.com/cron-expression-generator-quartz.html to generate valid Quartz cron expressions."; + + return Task.CompletedTask; + } + } +} \ No newline at end of file