33using Hangfire ;
44using Hangfire . Common ;
55using Hangfire . Server ;
6- using Microsoft . Extensions . Configuration ;
76using Microsoft . Extensions . Logging ;
87using Microsoft . Extensions . Options ;
9- using Scv . Api . Helpers ;
108using Scv . Api . Infrastructure . Options ;
119using Scv . Api . Services ;
10+ using Scv . Db . Models ;
1211
1312namespace 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 {
0 commit comments