@@ -20,6 +20,7 @@ import {
20
20
WebhookLogRepository ,
21
21
WebhookDestinationRepository ,
22
22
FailedWebhookRetryRequestsRepository ,
23
+ EnvironmentRepository ,
23
24
} from '@impler/dal' ;
24
25
25
26
import { BaseConsumer } from './base.consumer' ;
@@ -40,6 +41,7 @@ export class SendWebhookDataConsumer extends BaseConsumer {
40
41
private emailService : EmailService = getEmailServiceClass ( ) ;
41
42
private failedWebhookRetryRequestsRepository : FailedWebhookRetryRequestsRepository =
42
43
new FailedWebhookRetryRequestsRepository ( ) ;
44
+ private environmentRepository : EnvironmentRepository = new EnvironmentRepository ( ) ;
43
45
44
46
async message ( message : { content : string } ) {
45
47
const data = JSON . parse ( message . content ) as SendWebhookData ;
@@ -91,9 +93,9 @@ export class SendWebhookDataConsumer extends BaseConsumer {
91
93
92
94
await this . makeResponseEntry ( {
93
95
data : response ,
96
+ projectId : cachedData . projectId ,
94
97
importName : cachedData . name ,
95
98
url : cachedData . callbackUrl ,
96
- userEmail : cachedData . email ,
97
99
retryInterval : cachedData . retryInterval ,
98
100
retryCount : cachedData . retryCount ,
99
101
allData,
@@ -207,6 +209,7 @@ export class SendWebhookDataConsumer extends BaseConsumer {
207
209
208
210
return {
209
211
_templateId : uploadata . _templateId ,
212
+ projectId : templateData . _projectId ,
210
213
callbackUrl : webhookDestination ?. callbackUrl ,
211
214
chunkSize : webhookDestination ?. chunkSize ,
212
215
name : templateData . name ,
@@ -230,22 +233,26 @@ export class SendWebhookDataConsumer extends BaseConsumer {
230
233
private async makeResponseEntry ( {
231
234
data,
232
235
importName,
236
+ projectId,
233
237
url,
234
238
allData,
235
- userEmail,
236
239
retryInterval,
237
240
retryCount,
238
241
} : {
239
242
data : Partial < WebhookLogEntity > ;
240
243
importName : string ;
244
+ projectId : string ;
241
245
url : string ;
242
- userEmail : string ;
243
246
retryCount ?: number ;
244
247
retryInterval ?: number ;
245
248
allData : Record < string , any > ;
246
249
} ) {
247
250
const webhookLog = await this . webhookLogRepository . create ( data ) ;
248
251
if ( data . status === StatusEnum . FAILED ) {
252
+ const environment = await this . environmentRepository . getProjectTeamMembers ( projectId ) ;
253
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
254
+ // @ts -ignore
255
+ const teamMemberEmails = environment . map ( ( teamMember ) => teamMember . _userId . email ) ;
249
256
const emailContents = this . emailService . getEmailContent ( {
250
257
type : 'ERROR_SENDING_WEBHOOK_DATA' ,
251
258
data : {
@@ -256,13 +263,14 @@ export class SendWebhookDataConsumer extends BaseConsumer {
256
263
importId : data . _uploadId ,
257
264
} ,
258
265
} ) ;
259
-
260
- await this . emailService . sendEmail ( {
261
- to : userEmail ,
262
- subject : `${ EMAIL_SUBJECT . ERROR_SENDING_WEBHOOK_DATA } ${ importName } ` ,
263
- html : emailContents ,
264
- from : process . env . ALERT_EMAIL_FROM ,
265
- senderName : process . env . EMAIL_FROM_NAME ,
266
+ teamMemberEmails . forEach ( async ( email ) => {
267
+ await this . emailService . sendEmail ( {
268
+ to : email ,
269
+ subject : `${ EMAIL_SUBJECT . ERROR_SENDING_WEBHOOK_DATA } ${ importName } ` ,
270
+ html : emailContents ,
271
+ from : process . env . ALERT_EMAIL_FROM ,
272
+ senderName : process . env . EMAIL_FROM_NAME ,
273
+ } ) ;
266
274
} ) ;
267
275
268
276
if ( retryCount && retryInterval ) {
0 commit comments