@@ -17,7 +17,7 @@ namespace Hmcr.Domain.Services
1717{
1818 public interface IEmailService
1919 {
20- Task SendStatusEmailAsync ( decimal submissionObjectId ) ;
20+ Task SendStatusEmailAsync ( decimal submissionObjectId , FeedbackMessageUpdateDto feedbackDto = null ) ;
2121 }
2222
2323 public class EmailService : IEmailService
@@ -56,7 +56,7 @@ public EmailService(IConfiguration config, IUserRepository userRepo, ILogger<Ema
5656 _unitOfWork = unitOfWork ;
5757 }
5858
59- public async Task SendStatusEmailAsync ( decimal submissionObjectId )
59+ public async Task SendStatusEmailAsync ( decimal submissionObjectId , FeedbackMessageUpdateDto feedbackMessage = null )
6060 {
6161 var submissionInfo = await _submissionRepo . GetSubmissionInfoForEmailAsync ( submissionObjectId ) ;
6262 submissionInfo . SubmissionDate = DateUtils . ConvertUtcToPacificTime ( submissionInfo . SubmissionDate ) ;
@@ -77,7 +77,7 @@ public async Task SendStatusEmailAsync(decimal submissionObjectId)
7777 var textBody = htmlBody . HtmlToPlainText ( ) ;
7878
7979 var isSent = true ;
80- var isError = false ;
80+ var isError = ! submissionInfo . Success ;
8181 var errorText = "" ;
8282
8383 try
@@ -87,27 +87,46 @@ public async Task SendStatusEmailAsync(decimal submissionObjectId)
8787 catch ( Exception ex )
8888 {
8989 isSent = false ;
90- isError = true ;
9190 errorText = ex . Message ;
9291
92+ _logger . LogError ( $ "Email for the submission { submissionObjectId } failed.") ;
9393 _logger . LogError ( ex . ToString ( ) ) ;
9494 }
9595
96- var feedback = new FeedbackMessageDto
96+ if ( feedbackMessage == null )
9797 {
98- SubmissionObjectId = submissionObjectId ,
99- CommunicationSubject = subject ,
100- CommunicationText = htmlBody ,
101- CommunicationDate = DateTime . UtcNow ,
102- IsSent = isSent ,
103- IsError = isError ,
104- SendErrorText = errorText
105- } ;
98+ var feedback = new FeedbackMessageDto
99+ {
100+ SubmissionObjectId = submissionObjectId ,
101+ CommunicationSubject = subject ,
102+ CommunicationText = htmlBody ,
103+ CommunicationDate = DateTime . UtcNow ,
104+ IsSent = isSent ,
105+ IsError = isError ,
106+ SendErrorText = errorText
107+ } ;
108+
109+ await _feedbackRepo . CreateFeedbackMessageAsync ( feedback ) ;
110+ }
111+ else
112+ {
113+ feedbackMessage . SubmissionObjectId = submissionObjectId ;
114+ feedbackMessage . CommunicationSubject = subject ;
115+ feedbackMessage . CommunicationText = htmlBody ;
116+ feedbackMessage . CommunicationDate = DateTime . UtcNow ;
117+ feedbackMessage . IsSent = isSent ;
118+ feedbackMessage . IsError = isError ;
119+ feedbackMessage . SendErrorText = errorText ;
120+
121+ await _feedbackRepo . UpdateFeedbackMessageAsync ( feedbackMessage ) ;
122+ }
106123
107- await _feedbackRepo . CreateFeedbackMessage ( feedback ) ;
108124 await _unitOfWork . CommitAsync ( ) ;
109125
110- _logger . LogInformation ( "[Hangfire] Finishing submission {submissionObjectId}" , submissionObjectId ) ;
126+ var finished = isSent ? "Finished" : "Failed" ;
127+ var sending = feedbackMessage == null ? "sending" : "resending" ;
128+
129+ _logger . LogInformation ( $ "[Hangfire] { finished } { sending } email for submission { submissionObjectId } ", submissionObjectId ) ;
111130 }
112131
113132 private void SendEmailToUsersInServiceArea ( decimal serviceAreaNumber , string subject , string htmlBody , string textBody )
0 commit comments