rez_core 2.2.119 → 2.2.120
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/notification/controller/otp.controller.d.ts +1 -4
- package/dist/module/notification/controller/otp.controller.js +14 -1
- package/dist/module/notification/controller/otp.controller.js.map +1 -1
- package/dist/module/notification/notification.module.js +2 -0
- package/dist/module/notification/notification.module.js.map +1 -1
- package/dist/module/notification/service/email.service.d.ts +5 -6
- package/dist/module/notification/service/email.service.js +46 -15
- package/dist/module/notification/service/email.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/module/notification/controller/otp.controller.ts +15 -1
- package/src/module/notification/notification.module.ts +2 -0
- package/src/module/notification/service/email.service.ts +60 -13
- package/.vscode/extensions.json +0 -5
|
@@ -38,7 +38,20 @@ let OtpController = class OtpController {
|
|
|
38
38
|
return await this.otpService.verifyOtp(body);
|
|
39
39
|
}
|
|
40
40
|
async sendMail(body) {
|
|
41
|
-
return await this.emailService.sendEmailWithDynamicTemplate(body.to, body.subject, body.message, body.templateCode, body.payload
|
|
41
|
+
return await this.emailService.sendEmailWithDynamicTemplate(body.to, body.subject, body.message, body.templateCode, body.payload, {
|
|
42
|
+
title: 'Project Kickoff Meeting',
|
|
43
|
+
description: 'Discuss goals and deliverables',
|
|
44
|
+
startsAt: '2025-08-30T10:00:00+05:30',
|
|
45
|
+
durationMinutes: 60,
|
|
46
|
+
meetingUrl: 'https://meet.google.com/xyz-1234-abc',
|
|
47
|
+
location: 'Google Meet',
|
|
48
|
+
organizerName: 'Darshil',
|
|
49
|
+
organizerEmail: 'sample@sample',
|
|
50
|
+
attendees: [
|
|
51
|
+
{ name: 'John Doe', email: 'john@example.com' },
|
|
52
|
+
{ name: 'Jane Smith', email: 'jane@example.com' },
|
|
53
|
+
],
|
|
54
|
+
});
|
|
42
55
|
}
|
|
43
56
|
};
|
|
44
57
|
exports.OtpController = OtpController;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otp.controller.js","sourceRoot":"","sources":["../../../../src/module/notification/controller/otp.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CASwB;AACxB,wDAAoD;AACpD,2CAA+C;AAC/C,4DAAwD;AAGjD,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YACmB,UAAsB,EACtB,YAA0B,EACnC,aAA4B;QAFnB,eAAU,GAAV,UAAU,CAAY;QACtB,iBAAY,GAAZ,YAAY,CAAc;QACnC,kBAAa,GAAb,aAAa,CAAe;QAGtC,cAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;QACxD,cAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;IAHrD,CAAC;IAOE,AAAN,KAAK,CAAC,WAAW,CAAS,OAAY;QACpC,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACpC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE9B,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,4BAAmB,CAAC,gCAAgC,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CACtC,UAAU,EACV,OAAO,EACP,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EACxB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CACzB,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IAIK,AAAN,KAAK,CAAC,SAAS,CACL,IAAyD;QAEjE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAIK,AAAN,KAAK,CAAC,QAAQ,CAEZ,IAMC;QAGD,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CACzD,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"otp.controller.js","sourceRoot":"","sources":["../../../../src/module/notification/controller/otp.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CASwB;AACxB,wDAAoD;AACpD,2CAA+C;AAC/C,4DAAwD;AAGjD,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YACmB,UAAsB,EACtB,YAA0B,EACnC,aAA4B;QAFnB,eAAU,GAAV,UAAU,CAAY;QACtB,iBAAY,GAAZ,YAAY,CAAc;QACnC,kBAAa,GAAb,aAAa,CAAe;QAGtC,cAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;QACxD,cAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;IAHrD,CAAC;IAOE,AAAN,KAAK,CAAC,WAAW,CAAS,OAAY;QACpC,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACpC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE9B,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,4BAAmB,CAAC,gCAAgC,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CACtC,UAAU,EACV,OAAO,EACP,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EACxB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CACzB,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IAIK,AAAN,KAAK,CAAC,SAAS,CACL,IAAyD;QAEjE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAIK,AAAN,KAAK,CAAC,QAAQ,CAEZ,IAMC;QAGD,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CACzD,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,EACZ;YACE,KAAK,EAAE,yBAAyB;YAChC,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,2BAA2B;YACrC,eAAe,EAAE,EAAE;YACnB,UAAU,EAAE,sCAAsC;YAClD,QAAQ,EAAE,aAAa;YACvB,aAAa,EAAE,SAAS;YACxB,cAAc,EAAE,eAAe;YAC/B,SAAS,EAAE;gBACT,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE;gBAC/C,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE;aAClD;SACF,CACF,CAAC;IACJ,CAAC;CACF,CAAA;AAvEY,sCAAa;AAYlB;IAFL,IAAA,aAAI,EAAC,UAAU,CAAC;IAChB,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACL,WAAA,IAAA,aAAI,GAAE,CAAA;;;;gDAcxB;AAIK;IAFL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IAErB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;8CAGR;AAIK;IAFL,IAAA,aAAI,EAAC,WAAW,CAAC;IACjB,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IAErB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;6CA+BR;wBAtEU,aAAa;IADzB,IAAA,mBAAU,EAAC,KAAK,CAAC;qCAGe,wBAAU;QACR,4BAAY;QACpB,sBAAa;GAJ3B,aAAa,CAuEzB"}
|
|
@@ -20,6 +20,7 @@ const path_1 = require("path");
|
|
|
20
20
|
const config_1 = require("@nestjs/config");
|
|
21
21
|
const auth_module_1 = require("../auth/auth.module");
|
|
22
22
|
const user_module_1 = require("../user/user.module");
|
|
23
|
+
const ics_module_1 = require("../ics/ics.module");
|
|
23
24
|
let NotificationModule = class NotificationModule {
|
|
24
25
|
};
|
|
25
26
|
exports.NotificationModule = NotificationModule;
|
|
@@ -54,6 +55,7 @@ exports.NotificationModule = NotificationModule = __decorate([
|
|
|
54
55
|
}),
|
|
55
56
|
auth_module_1.AuthModule,
|
|
56
57
|
user_module_1.UserModule,
|
|
58
|
+
ics_module_1.IcsMeetingModule,
|
|
57
59
|
],
|
|
58
60
|
providers: [otp_service_1.OtpService, otp_repository_1.OtpRepository, email_service_1.EmailService],
|
|
59
61
|
exports: [otp_service_1.OtpService, email_service_1.EmailService],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.module.js","sourceRoot":"","sources":["../../../src/module/notification/notification.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,uDAAmD;AACnD,gEAA4D;AAC5D,6CAAgD;AAChD,oDAA0C;AAC1C,gEAA4D;AAC5D,mDAAsD;AACtD,gGAA4F;AAC5F,2DAAuD;AACvD,+BAA4B;AAC5B,2CAA6D;AAC7D,qDAAiD;AACjD,qDAAiD;
|
|
1
|
+
{"version":3,"file":"notification.module.js","sourceRoot":"","sources":["../../../src/module/notification/notification.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,uDAAmD;AACnD,gEAA4D;AAC5D,6CAAgD;AAChD,oDAA0C;AAC1C,gEAA4D;AAC5D,mDAAsD;AACtD,gGAA4F;AAC5F,2DAAuD;AACvD,+BAA4B;AAC5B,2CAA6D;AAC7D,qDAAiD;AACjD,qDAAiD;AACjD,kDAAqD;AAsC9C,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IApC9B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC,CAAC,gBAAG,CAAC,CAAC;YAC/B,qBAAY,CAAC,YAAY,CAAC;gBACxB,OAAO,EAAE,CAAC,qBAAY,CAAC;gBACvB,MAAM,EAAE,CAAC,sBAAa,CAAC;gBACvB,UAAU,EAAE,CAAC,aAA4B,EAAE,EAAE,CAAC,CAAC;oBAC7C,SAAS,EAAE;wBACT,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,GAAG;wBACT,MAAM,EAAE,IAAI;wBACZ,IAAI,EAAE;4BACJ,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;4BACrC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC;yBAC1C;qBACF;oBACD,QAAQ,EAAE;wBACR,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG;qBACnD;oBACD,QAAQ,EAAE;wBACR,GAAG,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;wBAC7C,OAAO,EAAE,IAAI,sCAAiB,EAAE;wBAChC,OAAO,EAAE;4BACP,MAAM,EAAE,IAAI;yBACb;qBACF;iBACF,CAAC;aACH,CAAC;YACF,wBAAU;YACV,wBAAU;YACV,6BAAgB;SACjB;QACD,SAAS,EAAE,CAAC,wBAAU,EAAE,8BAAa,EAAE,4BAAY,CAAC;QACpD,OAAO,EAAE,CAAC,wBAAU,EAAE,4BAAY,CAAC;QACnC,WAAW,EAAE,CAAC,8BAAa,CAAC;KAC7B,CAAC;GACW,kBAAkB,CAAG"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { MailerService } from '@nestjs-modules/mailer';
|
|
2
2
|
import { DataSource } from 'typeorm';
|
|
3
|
+
import { IcsMeetingService } from 'src/module/ics/service/ics.service';
|
|
3
4
|
export declare class EmailService {
|
|
4
5
|
private readonly mailerService;
|
|
5
6
|
private readonly datasource;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
message: string;
|
|
11
|
-
} | undefined>;
|
|
7
|
+
private readonly icsService;
|
|
8
|
+
constructor(mailerService: MailerService, datasource: DataSource, icsService: IcsMeetingService);
|
|
9
|
+
sendEmail(email: string, subject: string, context?: any, icsPayload?: any): Promise<void>;
|
|
10
|
+
sendEmailWithDynamicTemplate(email: string, subject: string, templateCode: string, message?: string, context?: any, icsPayload?: any): Promise<void>;
|
|
12
11
|
}
|
|
@@ -14,40 +14,57 @@ const common_1 = require("@nestjs/common");
|
|
|
14
14
|
const mailer_1 = require("@nestjs-modules/mailer");
|
|
15
15
|
const Handlebars = require("handlebars");
|
|
16
16
|
const typeorm_1 = require("typeorm");
|
|
17
|
+
const ics_service_1 = require("../../ics/service/ics.service");
|
|
17
18
|
let EmailService = class EmailService {
|
|
18
|
-
constructor(mailerService, datasource) {
|
|
19
|
+
constructor(mailerService, datasource, icsService) {
|
|
19
20
|
this.mailerService = mailerService;
|
|
20
21
|
this.datasource = datasource;
|
|
22
|
+
this.icsService = icsService;
|
|
21
23
|
}
|
|
22
|
-
async sendEmail(email, subject, context) {
|
|
24
|
+
async sendEmail(email, subject, context, icsPayload) {
|
|
23
25
|
const template = await this.datasource
|
|
24
26
|
.getRepository('cr_wf_comm_template')
|
|
25
27
|
.findOne({ where: { code: 'OTP_TEMPLATE' } });
|
|
26
|
-
if (!template)
|
|
28
|
+
if (!template)
|
|
27
29
|
return;
|
|
28
|
-
}
|
|
29
30
|
const compiled = Handlebars.compile(template.rich_text || '');
|
|
30
31
|
const htmlContent = compiled(context);
|
|
31
|
-
|
|
32
|
+
let attachments = [];
|
|
33
|
+
if (icsPayload) {
|
|
34
|
+
const icsBase64 = await this.icsService.generateIcs(icsPayload);
|
|
35
|
+
if (icsBase64) {
|
|
36
|
+
attachments.push({
|
|
37
|
+
filename: 'invite.ics',
|
|
38
|
+
content: icsBase64,
|
|
39
|
+
encoding: 'base64',
|
|
40
|
+
contentType: 'text/calendar; charset="utf-8"; method=REQUEST',
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const result = await this.mailerService
|
|
32
45
|
.sendMail({
|
|
33
46
|
to: email,
|
|
34
|
-
subject
|
|
47
|
+
subject,
|
|
35
48
|
html: htmlContent,
|
|
49
|
+
attachments,
|
|
36
50
|
})
|
|
37
|
-
.then(() => {
|
|
38
|
-
.
|
|
51
|
+
.then(() => {
|
|
52
|
+
console.log(`Email sent to ${email}`);
|
|
53
|
+
})
|
|
54
|
+
.catch((err) => {
|
|
55
|
+
console.error(`Failed to send email to ${email}`, err);
|
|
56
|
+
});
|
|
57
|
+
console.log(result);
|
|
58
|
+
return;
|
|
39
59
|
}
|
|
40
|
-
async sendEmailWithDynamicTemplate(email, subject, templateCode, message, context) {
|
|
60
|
+
async sendEmailWithDynamicTemplate(email, subject, templateCode, message, context, icsPayload) {
|
|
41
61
|
const template = await this.datasource
|
|
42
62
|
.getRepository('cr_wf_comm_template')
|
|
43
63
|
.findOne({ where: { code: templateCode } });
|
|
44
64
|
if (!template) {
|
|
45
|
-
|
|
46
|
-
success: false,
|
|
47
|
-
message: `Template with code ${templateCode} not found`,
|
|
48
|
-
};
|
|
65
|
+
console.log(`Template with code ${templateCode} not found`);
|
|
49
66
|
}
|
|
50
|
-
const templateString = template
|
|
67
|
+
const templateString = template?.rich_text || '';
|
|
51
68
|
let compiled;
|
|
52
69
|
if (message) {
|
|
53
70
|
compiled = Handlebars.compile(message);
|
|
@@ -56,10 +73,23 @@ let EmailService = class EmailService {
|
|
|
56
73
|
compiled = Handlebars.compile(templateString);
|
|
57
74
|
}
|
|
58
75
|
const htmlContent = compiled(context);
|
|
76
|
+
let attachments = [];
|
|
77
|
+
if (icsPayload) {
|
|
78
|
+
const icsBase64 = await this.icsService.generateIcs(icsPayload);
|
|
79
|
+
if (icsBase64) {
|
|
80
|
+
attachments.push({
|
|
81
|
+
filename: 'invite.ics',
|
|
82
|
+
content: icsBase64,
|
|
83
|
+
encoding: 'base64',
|
|
84
|
+
contentType: 'text/calendar; charset="utf-8"; method=REQUEST',
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
59
88
|
await this.mailerService.sendMail({
|
|
60
89
|
to: email,
|
|
61
90
|
subject: subject,
|
|
62
91
|
html: htmlContent,
|
|
92
|
+
attachments,
|
|
63
93
|
});
|
|
64
94
|
}
|
|
65
95
|
};
|
|
@@ -67,6 +97,7 @@ exports.EmailService = EmailService;
|
|
|
67
97
|
exports.EmailService = EmailService = __decorate([
|
|
68
98
|
(0, common_1.Injectable)(),
|
|
69
99
|
__metadata("design:paramtypes", [mailer_1.MailerService,
|
|
70
|
-
typeorm_1.DataSource
|
|
100
|
+
typeorm_1.DataSource,
|
|
101
|
+
ics_service_1.IcsMeetingService])
|
|
71
102
|
], EmailService);
|
|
72
103
|
//# sourceMappingURL=email.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../../../src/module/notification/service/email.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,mDAAuD;AACvD,yCAAyC;AACzC,qCAAqC;
|
|
1
|
+
{"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../../../src/module/notification/service/email.service.ts"],"names":[],"mappings":"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"}
|