Skip to content

Commit d9d7dd7

Browse files
Add template for job failure email.
1 parent 7894de1 commit d9d7dd7

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

api/Jobs/JobFailureEmailFilter.cs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
using Hangfire;
44
using Hangfire.Common;
55
using Hangfire.Server;
6-
using Microsoft.Extensions.Configuration;
76
using Microsoft.Extensions.Logging;
87
using Microsoft.Extensions.Options;
9-
using Scv.Api.Helpers;
108
using Scv.Api.Infrastructure.Options;
119
using Scv.Api.Services;
10+
using Scv.Db.Models;
1211

1312
namespace Scv.Api.Jobs;
1413

@@ -39,8 +38,7 @@ public void OnPerformed(PerformedContext context)
3938
return;
4039
}
4140

42-
var emailService = Resolve<IEmailService>(context);
43-
var configuration = Resolve<IConfiguration>(context);
41+
var emailTemplateService = Resolve<IEmailTemplateService>(context);
4442
var options = Resolve<IOptions<JobsFailureEmailOptions>>(context).Value;
4543

4644
var recipients = options.Recipients?.Where(r => !string.IsNullOrWhiteSpace(r)).ToArray() ?? [];
@@ -57,14 +55,23 @@ public void OnPerformed(PerformedContext context)
5755
var args = context.BackgroundJob?.Job?.Args ?? [];
5856
var argsText = string.Join(", ", args.Select(a => a?.ToString() ?? "null"));
5957
var reason = context.Exception.Message ?? "Unknown error";
60-
var body = $"<p>Background job failed.</p><p>Job: {jobType}</p><p>Arguments: {argsText}</p><p>Reason: {reason}</p>";
61-
var mailbox = configuration.GetNonEmptyValue("AZURE:SERVICE_ACCOUNT");
58+
var templateData = new
59+
{
60+
subject,
61+
job_type = jobType,
62+
job_id = jobId,
63+
args = argsText,
64+
reason,
65+
occurred_at = DateTime.UtcNow.ToString("u")
66+
};
6267

6368
foreach (var recipient in recipients)
6469
{
6570
try
6671
{
67-
emailService.SendEmailAsync(mailbox, recipient, subject, body).GetAwaiter().GetResult();
72+
emailTemplateService.SendEmailTemplateAsync(EmailTemplate.JOB_FAILURE, recipient, templateData)
73+
.GetAwaiter()
74+
.GetResult();
6875
}
6976
catch (Exception ex)
7077
{

db/Models/EmailTemplate.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ namespace Scv.Db.Models;
99
public class EmailTemplate : EntityBase
1010
{
1111
public const string ORDER_RECEIVED = "Order Received";
12+
public const string JOB_FAILURE = "Job Failure";
1213

1314
public static readonly List<EmailTemplate> ALL_EMAIL_TEMPLATES =
1415
[
@@ -27,6 +28,17 @@ public class EmailTemplate : EntityBase
2728
Regards,<br />
2829
JASPER Support Team"
2930
},
31+
new EmailTemplate
32+
{
33+
TemplateName = JOB_FAILURE,
34+
Subject = @"{{ subject }}",
35+
Body = @"<p>Background job failed.</p>
36+
<p>Job: {{ job_type }}</p>
37+
<p>Job Id: {{ job_id }}</p>
38+
<p>Arguments: {{ args }}</p>
39+
<p>Reason: {{ reason }}</p>
40+
<p>Occurred At (UTC): {{ occurred_at }}</p>"
41+
},
3042
];
3143

3244
public string TemplateName { get; set; }

0 commit comments

Comments
 (0)