From 70adb1833f790b0b5a9ee4dd5e246d234819f73d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Alazorza?= Date: Thu, 31 Aug 2017 21:19:46 +0200 Subject: [PATCH] Add outcome for when email failed (#7825) --- .../Orchard.Email/Activities/EmailActivity.cs | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Email/Activities/EmailActivity.cs b/src/Orchard.Web/Modules/Orchard.Email/Activities/EmailActivity.cs index f78e5b718..2ef62a268 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Activities/EmailActivity.cs +++ b/src/Orchard.Web/Modules/Orchard.Email/Activities/EmailActivity.cs @@ -3,6 +3,7 @@ using Orchard.Email.Services; using Orchard.Environment.Extensions; using Orchard.Events; using Orchard.Localization; +using Orchard.Logging; using Orchard.Messaging.Services; using Orchard.Workflows.Models; using Orchard.Workflows.Services; @@ -16,6 +17,7 @@ namespace Orchard.Email.Activities { public class EmailActivity : Task { private readonly IMessageService _messageService; private readonly IJobsQueueService _jobsQueueService; + public ILogger Logger { get; set; } public EmailActivity( IMessageService messageService, @@ -23,13 +25,14 @@ namespace Orchard.Email.Activities { ) { _messageService = messageService; _jobsQueueService = jobsQueueService; + Logger = NullLogger.Instance; T = NullLocalizer.Instance; } public Localizer T { get; set; } public override IEnumerable GetPossibleOutcomes(WorkflowContext workflowContext, ActivityContext activityContext) { - return new[] { T("Done") }; + return new[] { T("Done"), T("Failed") }; } public override string Form { @@ -69,17 +72,23 @@ namespace Orchard.Email.Activities { {"NotifyReadEmail",notifyReadEmail } }; - var queued = activityContext.GetState("Queued"); - - if (!queued) { - _messageService.Send(SmtpMessageChannel.MessageType, parameters); + if (string.IsNullOrWhiteSpace(recipients)) { + Logger.Error("Email message doesn't have any recipient for Workflow {0}", workflowContext.Record.WorkflowDefinitionRecord.Name); + yield return T("Failed"); } else { - var priority = activityContext.GetState("Priority"); - _jobsQueueService.Enqueue("IMessageService.Send", new { type = SmtpMessageChannel.MessageType, parameters = parameters }, priority); - } + var queued = activityContext.GetState("Queued"); - yield return T("Done"); + if (!queued) { + _messageService.Send(SmtpMessageChannel.MessageType, parameters); + } + else { + var priority = activityContext.GetState("Priority"); + _jobsQueueService.Enqueue("IMessageService.Send", new { type = SmtpMessageChannel.MessageType, parameters = parameters }, priority); + } + + yield return T("Done"); + } } } } \ No newline at end of file