rez_core 2.2.118 → 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/meta/controller/attribute-master.controller.js +1 -1
- package/dist/module/meta/controller/attribute-master.controller.js.map +1 -1
- package/dist/module/meta/repository/attribute-master.repository.d.ts +1 -1
- package/dist/module/meta/repository/attribute-master.repository.js +2 -2
- package/dist/module/meta/repository/attribute-master.repository.js.map +1 -1
- package/dist/module/meta/service/attribute-master.service.js +4 -4
- package/dist/module/meta/service/attribute-master.service.js.map +1 -1
- 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/meta/controller/attribute-master.controller.ts +61 -63
- package/src/module/meta/repository/attribute-master.repository.ts +11 -7
- package/src/module/meta/service/attribute-master.service.ts +19 -15
- 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
|
@@ -38,7 +38,7 @@ let AttributeMasterController = class AttributeMasterController {
|
|
|
38
38
|
};
|
|
39
39
|
exports.AttributeMasterController = AttributeMasterController;
|
|
40
40
|
__decorate([
|
|
41
|
-
(0, common_1.Post)(
|
|
41
|
+
(0, common_1.Post)('/create'),
|
|
42
42
|
__param(0, (0, common_1.Body)()),
|
|
43
43
|
__param(1, (0, common_1.Req)()),
|
|
44
44
|
__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute-master.controller.js","sourceRoot":"","sources":["../../../../src/module/meta/controller/attribute-master.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"attribute-master.controller.js","sourceRoot":"","sources":["../../../../src/module/meta/controller/attribute-master.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAQwB;AAExB,kFAA6E;AAC7E,2DAA2D;AAIpD,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,YACmB,sBAA8C;QAA9C,2BAAsB,GAAtB,sBAAsB,CAAwB;IAC9D,CAAC;IAGE,AAAN,KAAK,CAAC,eAAe,CACX,aAAkB,EACnB,GAA4B;QAEnC,IAAI,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,eAAe,CACtD,aAAa,EACb,YAAY,CACb,CAAC;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,eAAe,CACX,aAAkB,EACb,EAAU,EAChB,GAA4B;QAEnC,IAAI,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,eAAe,CACtD,aAAa,EACb,EAAE,EACF,YAAY,CACb,CAAC;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,gBAAgB,CACP,EAAU,EAChB,GAA4B;QAEnC,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAGK,AAAN,KAAK,CAAC,yBAAyB,CACR,UAAkB,EAChC,GAA4B;QAEnC,IAAI,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAChE,UAAU,EACV,YAAY,CACb,CAAC;IACJ,CAAC;CACF,CAAA;AAlDY,8DAAyB;AAM9B;IADL,IAAA,aAAI,EAAC,SAAS,CAAC;IAEb,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;;;gEAOP;AAGK;IADL,IAAA,aAAI,EAAC,YAAY,CAAC;IAEhB,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IACX,WAAA,IAAA,YAAG,GAAE,CAAA;;;;gEAQP;AAGK;IADL,IAAA,YAAG,EAAC,aAAa,CAAC;IAEhB,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IACX,WAAA,IAAA,YAAG,GAAE,CAAA;;;;iEAGP;AAGK;IADL,IAAA,YAAG,EAAC,6BAA6B,CAAC;IAEhC,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;IACnB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;0EAOP;oCAjDU,yBAAyB;IAFrC,IAAA,mBAAU,EAAC,kBAAkB,CAAC;IAC9B,IAAA,kBAAS,EAAC,wBAAY,CAAC;qCAGqB,iDAAsB;GAFtD,yBAAyB,CAkDrC"}
|
|
@@ -14,7 +14,7 @@ export declare class AttributeMasterRepository {
|
|
|
14
14
|
label: string;
|
|
15
15
|
value: number;
|
|
16
16
|
}[]>;
|
|
17
|
-
getTableNameByEntityType(entityType: string): Promise<string | null>;
|
|
17
|
+
getTableNameByEntityType(entityType: string, loggedInUser: UserData): Promise<string | null>;
|
|
18
18
|
checkIfColumnExists(tableName: string, columnName: string): Promise<boolean>;
|
|
19
19
|
addColumnToTable(tableName: string, columnName: string, columnType: string): Promise<void>;
|
|
20
20
|
}
|
|
@@ -62,8 +62,8 @@ let AttributeMasterRepository = class AttributeMasterRepository {
|
|
|
62
62
|
value: item.id,
|
|
63
63
|
}));
|
|
64
64
|
}
|
|
65
|
-
async getTableNameByEntityType(entityType) {
|
|
66
|
-
const result = await this.dataSource.query(`SELECT db_table_name FROM cr_entity_master WHERE mapped_entity_type = ?`, [entityType]);
|
|
65
|
+
async getTableNameByEntityType(entityType, loggedInUser) {
|
|
66
|
+
const result = await this.dataSource.query(`SELECT db_table_name FROM cr_entity_master WHERE mapped_entity_type = ? AND organization_id = ?`, [entityType, loggedInUser.organization_id]);
|
|
67
67
|
return result.length ? result[0].db_table_name : null;
|
|
68
68
|
}
|
|
69
69
|
async checkIfColumnExists(tableName, columnName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute-master.repository.js","sourceRoot":"","sources":["../../../../src/module/meta/repository/attribute-master.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAmD;AACnD,+EAAoE;AACpE,qCAAqD;AAI9C,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,YAEmB,yBAAsD,EACtD,UAAsB;QADtB,8BAAyB,GAAzB,yBAAyB,CAA6B;QACtD,eAAU,GAAV,UAAU,CAAY;IACtC,CAAC;IAGJ,KAAK,CAAC,uEAAuE,CAC3E,cAAsB,EACtB,gBAAwB,EACxB,YAAoB,EACpB,cAAsB;QAEtB,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC;YAClD,KAAK,EAAE;gBACL,gBAAgB,EAAE,cAAc;gBAChC,kBAAkB,EAAE,gBAAgB;gBACpC,aAAa,EAAE,YAAY;gBAC3B,eAAe,EAAE,cAAc;aAChC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gCAAgC,CACpC,UAAkB,EAClB,YAAsB;QAEtB,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;YAC/C,KAAK,EAAE;gBACL,kBAAkB,EAAE,IAAA,YAAE,EAAC,CAAC,UAAU,CAAC,CAAC;gBACpC,eAAe,EAAE,YAAY,CAAC,eAAe;aAC9C;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,aAA8B;QAE9B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,aAA8B,EAC9B,EAAU;QAEV,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"attribute-master.repository.js","sourceRoot":"","sources":["../../../../src/module/meta/repository/attribute-master.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAmD;AACnD,+EAAoE;AACpE,qCAAqD;AAI9C,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,YAEmB,yBAAsD,EACtD,UAAsB;QADtB,8BAAyB,GAAzB,yBAAyB,CAA6B;QACtD,eAAU,GAAV,UAAU,CAAY;IACtC,CAAC;IAGJ,KAAK,CAAC,uEAAuE,CAC3E,cAAsB,EACtB,gBAAwB,EACxB,YAAoB,EACpB,cAAsB;QAEtB,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC;YAClD,KAAK,EAAE;gBACL,gBAAgB,EAAE,cAAc;gBAChC,kBAAkB,EAAE,gBAAgB;gBACpC,aAAa,EAAE,YAAY;gBAC3B,eAAe,EAAE,cAAc;aAChC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gCAAgC,CACpC,UAAkB,EAClB,YAAsB;QAEtB,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;YAC/C,KAAK,EAAE;gBACL,kBAAkB,EAAE,IAAA,YAAE,EAAC,CAAC,UAAU,CAAC,CAAC;gBACpC,eAAe,EAAE,YAAY,CAAC,eAAe;aAC9C;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,aAA8B;QAE9B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,aAA8B,EAC9B,EAAU;QAEV,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,EAAU;QAC/B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,yBAAyB,CAC7B,UAAkB,EAClB,YAAsB;QAEtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;YACrD,KAAK,EAAE;gBACL,kBAAkB,EAAE,UAAU;gBAC9B,eAAe,EAAE,YAAY,CAAC,eAAe;aAC9C;SACF,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzB,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,KAAK,EAAE,IAAI,CAAC,EAAE;SACf,CAAC,CAAC,CAAC;IACN,CAAC;IAGD,KAAK,CAAC,wBAAwB,CAC5B,UAAkB,EAClB,YAAsB;QAEtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CACxC,iGAAiG,EACjG,CAAC,UAAU,EAAE,YAAY,CAAC,eAAe,CAAC,CAC3C,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,SAAiB,EACjB,UAAkB;QAElB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CACxC,uBAAuB,SAAS,WAAW,EAC3C,CAAC,UAAU,CAAC,CACb,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,SAAiB,EACjB,UAAkB,EAClB,UAAkB;QAElB,MAAM,UAAU,GAAG,iBAAiB,SAAS,mBAAmB,UAAU,MAAM,UAAU,OAAO,CAAC;QAClG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AAtGY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,yCAAe,CAAC,CAAA;qCACU,oBAAU;QACzB,oBAAU;GAJ9B,yBAAyB,CAsGrC"}
|
|
@@ -24,13 +24,13 @@ let AttributeMasterService = class AttributeMasterService {
|
|
|
24
24
|
attributeData.level_type = loggedInUser.level_type;
|
|
25
25
|
attributeData.level_id = loggedInUser.level_id;
|
|
26
26
|
const createdAttr = await this.attributeMasterRepository.createAttribute(attributeData);
|
|
27
|
-
const tableName = await this.attributeMasterRepository.getTableNameByEntityType(attributeData.mapped_entity_type);
|
|
27
|
+
const tableName = await this.attributeMasterRepository.getTableNameByEntityType(attributeData.mapped_entity_type, loggedInUser);
|
|
28
28
|
if (!tableName) {
|
|
29
29
|
throw new Error(`No table found for entity type ${attributeData.mapped_entity_type}`);
|
|
30
30
|
}
|
|
31
31
|
let columnType;
|
|
32
|
-
switch (attributeData.
|
|
33
|
-
case '
|
|
32
|
+
switch (attributeData.element_type) {
|
|
33
|
+
case 'text':
|
|
34
34
|
columnType = 'VARCHAR(255)';
|
|
35
35
|
break;
|
|
36
36
|
case 'number':
|
|
@@ -43,7 +43,7 @@ let AttributeMasterService = class AttributeMasterService {
|
|
|
43
43
|
columnType = 'TINYINT(1)';
|
|
44
44
|
break;
|
|
45
45
|
default:
|
|
46
|
-
columnType = '
|
|
46
|
+
columnType = 'VARCHAR(255)';
|
|
47
47
|
}
|
|
48
48
|
const columnExists = await this.attributeMasterRepository.checkIfColumnExists(tableName, attributeData.attribute_key);
|
|
49
49
|
if (!columnExists) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute-master.service.js","sourceRoot":"","sources":["../../../../src/module/meta/service/attribute-master.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2FAAsF;AAK/E,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YACmB,yBAAoD;QAApD,8BAAyB,GAAzB,yBAAyB,CAA2B;IACpE,CAAC;IAEJ,KAAK,CAAC,gCAAgC,CACpC,WAAmB,EACnB,YAAsB;QAEtB,OAAO,IAAI,CAAC,yBAAyB,CAAC,gCAAgC,CACpE,WAAW,EACX,YAAY,CACb,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,aAA8B,EAC9B,YAAsB;QAEtB,aAAa,CAAC,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC;QAC7D,aAAa,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;QACnD,aAAa,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;QAG/C,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"attribute-master.service.js","sourceRoot":"","sources":["../../../../src/module/meta/service/attribute-master.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|