@platform-x/hep-notification-client 1.3.1 → 1.3.2
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/README.md +7 -7
- package/dist/jest-setup.js +28 -0
- package/dist/jest-setup.js.map +1 -0
- package/dist/src/common/controllers/common_controller.js +72 -0
- package/dist/src/common/controllers/common_controller.js.map +1 -0
- package/dist/src/common/controllers/index.js +29 -0
- package/dist/src/common/controllers/index.js.map +1 -0
- package/dist/src/common/middleware/commonMiddleware.js +141 -0
- package/dist/src/common/middleware/commonMiddleware.js.map +1 -0
- package/dist/src/common/service/requestService.js +79 -1
- package/dist/src/common/service/requestService.js.map +1 -0
- package/dist/src/common/service/twilioService.js +3 -11
- package/dist/src/common/service/twilioService.js.map +1 -0
- package/dist/src/common/util/commonUtil.js +119 -1
- package/dist/src/common/util/commonUtil.js.map +1 -0
- package/dist/src/common/util/constants.js +18 -0
- package/dist/src/common/util/constants.js.map +1 -0
- package/dist/src/common/util/errorHandler.js +4 -6
- package/dist/src/common/util/errorHandler.js.map +1 -0
- package/dist/src/common/util/httpCodes.js +26 -0
- package/dist/src/common/util/httpCodes.js.map +1 -0
- package/dist/src/common/util/logger.js +1 -1
- package/dist/src/common/util/logger.js.map +1 -0
- package/dist/src/common/util/requestTracer.js +18 -1
- package/dist/src/common/util/requestTracer.js.map +1 -0
- package/dist/src/common/util/solrConnector.js +85 -226
- package/dist/src/common/util/solrConnector.js.map +1 -0
- package/dist/src/config/index.js +49 -4
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/platform-x/app.js +35 -0
- package/dist/src/platform-x/app.js.map +1 -0
- package/dist/src/platform-x/constants/index.js +2 -14
- package/dist/src/platform-x/constants/index.js.map +1 -0
- package/dist/src/platform-x/constants/style.js +98 -98
- package/dist/src/platform-x/constants/style.js.map +1 -0
- package/dist/src/platform-x/controllers/cronController.js +399 -0
- package/dist/src/platform-x/controllers/cronController.js.map +1 -0
- package/dist/src/platform-x/controllers/fileUploadController.js +76 -0
- package/dist/src/platform-x/controllers/fileUploadController.js.map +1 -0
- package/dist/src/platform-x/controllers/graphRESTControllers.js +183 -0
- package/dist/src/platform-x/controllers/graphRESTControllers.js.map +1 -0
- package/dist/src/platform-x/controllers/index.js +30 -0
- package/dist/src/platform-x/controllers/index.js.map +1 -0
- package/dist/src/platform-x/controllers/siteDomainController.js +74 -0
- package/dist/src/platform-x/controllers/siteDomainController.js.map +1 -0
- package/dist/src/platform-x/dataSource/emailDataSource.js.map +1 -0
- package/dist/src/platform-x/database/connection.js +3 -6
- package/dist/src/platform-x/database/connection.js.map +1 -0
- package/dist/src/platform-x/database/dao/formBuilder.dao.js +1 -1
- package/dist/src/platform-x/database/dao/formBuilder.dao.js.map +1 -0
- package/dist/src/platform-x/database/dao/siteDomain.dao.js +73 -0
- package/dist/src/platform-x/database/dao/siteDomain.dao.js.map +1 -0
- package/dist/src/platform-x/database/index.js.map +1 -0
- package/dist/src/platform-x/database/interfaces/site_domain.interface.js +3 -0
- package/dist/src/platform-x/database/interfaces/site_domain.interface.js.map +1 -0
- package/dist/src/platform-x/database/models/formBuilder.model.js.map +1 -0
- package/dist/src/platform-x/database/models/site_domains.model.js +51 -0
- package/dist/src/platform-x/database/models/site_domains.model.js.map +1 -0
- package/dist/src/platform-x/routes/index.js +19 -0
- package/dist/src/platform-x/routes/index.js.map +1 -0
- package/dist/src/platform-x/services/cron.services.js +117 -0
- package/dist/src/platform-x/services/cron.services.js.map +1 -0
- package/dist/src/platform-x/util/emailHandler.js +53 -137
- package/dist/src/platform-x/util/emailHandler.js.map +1 -0
- package/dist/src/platform-x/util/emailTemplate.js +63 -60
- package/dist/src/platform-x/util/emailTemplate.js.map +1 -0
- package/dist/src/platform-x/util/solr-data-source/SolrHttpDataSource.js +31 -45
- package/dist/src/platform-x/util/solr-data-source/SolrHttpDataSource.js.map +1 -0
- package/dist/src/server.js +38 -0
- package/dist/src/server.js.map +1 -0
- package/dist/swagger.json +247 -0
- package/dist/test/controllers/common_controller.spec.js +79 -0
- package/dist/test/controllers/common_controller.spec.js.map +1 -0
- package/dist/test/middleware/commonMiddleware.spec.js +88 -0
- package/dist/test/middleware/commonMiddleware.spec.js.map +1 -0
- package/dist/test/platform-x/controllers/graphRESTControllers.spec.js +195 -0
- package/dist/test/platform-x/controllers/graphRESTControllers.spec.js.map +1 -0
- package/dist/test/platform-x/datasource/emailDataSource.spec.js +81 -0
- package/dist/test/platform-x/datasource/emailDataSource.spec.js.map +1 -0
- package/dist/test/platform-x/util/emailHandler.spec.js +474 -0
- package/dist/test/platform-x/util/emailHandler.spec.js.map +1 -0
- package/dist/test/platform-x/util/solr-data-source/SolrHttpDataSource.spec.js +80 -0
- package/dist/test/platform-x/util/solr-data-source/SolrHttpDataSource.spec.js.map +1 -0
- package/dist/test/services/requestService.spec.js +108 -0
- package/dist/test/services/requestService.spec.js.map +1 -0
- package/dist/test/services/requestServiceGet.spec.js +43 -0
- package/dist/test/services/requestServiceGet.spec.js.map +1 -0
- package/dist/test/src/common/service/twilioService.spec.js +65 -0
- package/dist/test/src/common/service/twilioService.spec.js.map +1 -0
- package/dist/test/util/commonUtil.spec.js +110 -0
- package/dist/test/util/commonUtil.spec.js.map +1 -0
- package/dist/test/util/logger.spec.js +51 -0
- package/dist/test/util/logger.spec.js.map +1 -0
- package/dist/test/util/requestTracer.spec.js +64 -0
- package/dist/test/util/requestTracer.spec.js.map +1 -0
- package/dist/test/util/solrconnector.spec.js +145 -0
- package/dist/test/util/solrconnector.spec.js.map +1 -0
- package/package.json +66 -66
- package/postman_collection/HEP_Environment.postman_environment.json +44 -44
- package/postman_collection/hep-notification.postman_collection.json +55 -55
- package/reports/output.jtl +1 -1
- package/reports/scripts/jmeter_sendgrid.js +34 -34
- package/reports/scripts/newman_sendgrid.js +40 -40
- package/reports/scripts/sendgrid.js +40 -40
- package/reports/scripts/trivy_sendgrid.js +40 -40
- package/src/common/service/requestService.ts +87 -0
- package/src/common/service/secretKeyManager.services.ts +37 -0
- package/src/common/service/twilioService.ts +58 -0
- package/src/common/util/commonUtil.ts +39 -0
- package/src/common/util/errorHandler.ts +120 -0
- package/src/common/util/logger.ts +215 -0
- package/src/common/util/requestTracer.ts +10 -0
- package/src/common/util/solrConnector.ts +319 -0
- package/src/config/index.ts +35 -0
- package/src/index.ts +34 -0
- package/src/platform-x/constants/index.ts +20 -0
- package/src/platform-x/constants/style.ts +99 -0
- package/src/platform-x/dataSource/emailDataSource.ts +34 -0
- package/src/platform-x/database/connection.ts +47 -0
- package/src/platform-x/database/dao/formBuilder.dao.ts +33 -0
- package/src/platform-x/database/index.ts +7 -0
- package/src/platform-x/database/models/formBuilder.model.ts +23 -0
- package/src/platform-x/util/emailHandler.ts +580 -0
- package/src/platform-x/util/emailTemplate.ts +66 -0
- package/src/platform-x/util/solr-data-source/SolrHttpDataSource.ts +97 -0
- package/{dist → src}/templates/orderPlaced.ejs +172 -172
- package/{dist → src}/templates/orderPlaced.html +189 -189
- package/tsconfig.json +73 -0
- package/dist/src/common/service/requestService.d.ts +0 -26
- package/dist/src/common/service/secretKeyManager.services.d.ts +0 -7
- package/dist/src/common/service/secretKeyManager.services.js +0 -58
- package/dist/src/common/service/twilioService.d.ts +0 -19
- package/dist/src/common/util/commonUtil.d.ts +0 -22
- package/dist/src/common/util/errorHandler.d.ts +0 -44
- package/dist/src/common/util/logger.d.ts +0 -68
- package/dist/src/common/util/requestTracer.d.ts +0 -2
- package/dist/src/common/util/solrConnector.d.ts +0 -47
- package/dist/src/config/index.d.ts +0 -30
- package/dist/src/index.d.ts +0 -5
- package/dist/src/index.js +0 -21
- package/dist/src/platform-x/constants/index.d.ts +0 -18
- package/dist/src/platform-x/constants/style.d.ts +0 -1
- package/dist/src/platform-x/dataSource/emailDataSource.d.ts +0 -5
- package/dist/src/platform-x/database/connection.d.ts +0 -8
- package/dist/src/platform-x/database/dao/formBuilder.dao.d.ts +0 -9
- package/dist/src/platform-x/database/index.d.ts +0 -7
- package/dist/src/platform-x/database/models/formBuilder.model.d.ts +0 -34
- package/dist/src/platform-x/util/emailHandler.d.ts +0 -62
- package/dist/src/platform-x/util/emailTemplate.d.ts +0 -4
- package/dist/src/platform-x/util/solr-data-source/SolrHttpDataSource.d.ts +0 -29
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const express_1 = require("express");
|
|
4
|
+
const index_1 = require("../controllers/index");
|
|
5
|
+
const router = (0, express_1.Router)();
|
|
6
|
+
router.post('/api/v1/web/en/notifications/send-email/publishunpublishemail', index_1.GraphApiController.publishUnpublish());
|
|
7
|
+
router.post('/api/v1/web/en/notifications/send-email/email', index_1.GraphApiController.sendEmail());
|
|
8
|
+
router.post('/api/v1/web/en/notifications/send-email/placeorderemail', index_1.GraphApiController.sendEmailforPlaceOrder());
|
|
9
|
+
router.post('/api/v1/web/en/notifications/sms', index_1.GraphApiController.sendSMS);
|
|
10
|
+
router.get('/api/v1/web/en/notifications/send-email/application-remainder', index_1.CronApiController.applicationProcessRemainder());
|
|
11
|
+
router.get('/api/v1/web/en/notifications/send-email/application-notification', index_1.CronApiController.applicationSubmittedMailTriggerWithExcel);
|
|
12
|
+
router.get('/api/v1/web/en/notifications/send-email/contact-notification', index_1.CronApiController.contactusSubmittedMailTriggerWithExcel);
|
|
13
|
+
router.get('/api/v1/web/en/notifications/send-email/news-notification', index_1.CronApiController.NewlatterMailTriggerWithExcel);
|
|
14
|
+
router.get('/api/v1/web/en/notifications/send-email/form-deadline-remainder', index_1.CronApiController.formDeadlineRemainder());
|
|
15
|
+
router.get('/api/v1/web/en/notifications/send-email/application-submit-remainder', index_1.CronApiController.applicationSubmitRemainder());
|
|
16
|
+
router.get('/api/v1/web/en/notifications/site-domains/:sitename', index_1.SiteDomainController.getBySiteName());
|
|
17
|
+
router.put('/api/v1/web/en/notifications/site-domains/:sitename', index_1.SiteDomainController.updateBySiteName());
|
|
18
|
+
exports.default = router;
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform-x/routes/index.ts"],"names":[],"mappings":";;AAAA,qCAAiC;AACjC,gDAAmG;AAEnG,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB,MAAM,CAAC,IAAI,CACT,+DAA+D,EAC/D,0BAAkB,CAAC,gBAAgB,EAAE,CACtC,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,+CAA+C,EAC/C,0BAAkB,CAAC,SAAS,EAAE,CAC/B,CAAC;AACF,MAAM,CAAC,IAAI,CACT,yDAAyD,EACzD,0BAAkB,CAAC,sBAAsB,EAAE,CAC5C,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,kCAAkC,EAClC,0BAAkB,CAAC,OAAO,CAC3B,CAAC;AAEF,MAAM,CAAC,GAAG,CAAC,+DAA+D,EAAE,yBAAiB,CAAC,2BAA2B,EAAE,CAAC,CAAC;AAC7H,MAAM,CAAC,GAAG,CAAC,kEAAkE,EAAE,yBAAiB,CAAC,wCAAwC,CAAC,CAAC;AAC3I,MAAM,CAAC,GAAG,CAAC,8DAA8D,EAAE,yBAAiB,CAAC,sCAAsC,CAAC,CAAC;AACrI,MAAM,CAAC,GAAG,CAAC,2DAA2D,EAAE,yBAAiB,CAAC,6BAA6B,CAAC,CAAC;AACzH,MAAM,CAAC,GAAG,CAAC,iEAAiE,EAAE,yBAAiB,CAAC,qBAAqB,EAAE,CAAC,CAAC;AACzH,MAAM,CAAC,GAAG,CAAC,sEAAsE,EAAE,yBAAiB,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAEnI,MAAM,CAAC,GAAG,CAAC,qDAAqD,EAAE,4BAAoB,CAAC,aAAa,EAAE,CAAC,CAAC;AACxG,MAAM,CAAC,GAAG,CAAC,qDAAqD,EAAE,4BAAoB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAG3G,kBAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.CronService = void 0;
|
|
16
|
+
const moment_1 = __importDefault(require("moment"));
|
|
17
|
+
const logger_1 = require("../../common/util/logger");
|
|
18
|
+
const emailHandler_1 = require("../util/emailHandler");
|
|
19
|
+
const config_1 = __importDefault(require("../../config"));
|
|
20
|
+
class CronService {
|
|
21
|
+
/**
|
|
22
|
+
* Method to send remainder mail to the user for application submit
|
|
23
|
+
*/
|
|
24
|
+
applicationProcessRemainder(userDetails, email_type, deadline_date, host_url, is_cff) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
try {
|
|
27
|
+
logger_1.Logger.info('CronService: Reached applicationProcessRemainder', 'applicationProcessRemainder');
|
|
28
|
+
const { userName, userEmail, applicationId } = userDetails;
|
|
29
|
+
let emailTriggerRequest = Object.assign({}, userName && { userName }, deadline_date && { deadline_date }, applicationId && { applicationId }, host_url && { host_url });
|
|
30
|
+
let recipientsData = [{
|
|
31
|
+
name: userName,
|
|
32
|
+
email: userEmail,
|
|
33
|
+
}];
|
|
34
|
+
is_cff = is_cff ? is_cff : false;
|
|
35
|
+
let emailReq = {
|
|
36
|
+
replacement_variables: emailTriggerRequest,
|
|
37
|
+
recipients: recipientsData,
|
|
38
|
+
email_type,
|
|
39
|
+
isCFF: is_cff,
|
|
40
|
+
};
|
|
41
|
+
logger_1.Logger.info('Email Request', emailReq);
|
|
42
|
+
const emailhandler = new emailHandler_1.EmailHandler();
|
|
43
|
+
return yield emailhandler.sendPersonalizeEmailRequest(emailReq);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
logger_1.Logger.error('CronService: Error in applicationProcessRemainder', 'applicationProcessRemainder', error);
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Method to send remainder mail to the user as weekly and last hrs as per deadline
|
|
53
|
+
*/
|
|
54
|
+
applicationSubmitRemainder(data) {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
try {
|
|
57
|
+
logger_1.Logger.info('CronService: Reached applicationSubmitRemainder', 'applicationSubmitRemainder');
|
|
58
|
+
let { createdAt, deadline_date } = data;
|
|
59
|
+
const created_at = (0, moment_1.default)(createdAt);
|
|
60
|
+
const deadline = (0, moment_1.default)(deadline_date);
|
|
61
|
+
if ((0, moment_1.default)().isSameOrAfter(deadline)) {
|
|
62
|
+
logger_1.Logger.info('CronService: Reached deadline passed', 'applicationSubmitRemainder');
|
|
63
|
+
return; // Stop processing this entry if deadline passed
|
|
64
|
+
}
|
|
65
|
+
yield this.weeklyAndLstWeekRemainder({ created_at, deadline, data });
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
logger_1.Logger.error('CronService: Error in applicationSubmitRemainder', 'applicationSubmitRemainder', error);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Method to send check the required email trigger condition and send email
|
|
75
|
+
*/
|
|
76
|
+
weeklyAndLstWeekRemainder(reqData) {
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
try {
|
|
79
|
+
logger_1.Logger.info('CronService: Reached applicationSubmitRemainder', 'applicationSubmitRemainder');
|
|
80
|
+
let { created_at, deadline, data } = reqData;
|
|
81
|
+
let { user_email, user_name, language, application_url = '', application_id = '' } = data;
|
|
82
|
+
let days = config_1.default === null || config_1.default === void 0 ? void 0 : config_1.default.CFF_WEEKLY_DAYS;
|
|
83
|
+
const lastWeekStart = deadline === null || deadline === void 0 ? void 0 : deadline.clone().subtract(days, 'days');
|
|
84
|
+
if ((0, moment_1.default)().isBefore(lastWeekStart)) {
|
|
85
|
+
// Weeks 1-5: Reminder every 7 days from createdAt
|
|
86
|
+
logger_1.Logger.info('CronService: Reached Weekly remainder', 'applicationSubmitRemainder');
|
|
87
|
+
const daysSinceCreated = (0, moment_1.default)().diff(created_at, 'days');
|
|
88
|
+
if (daysSinceCreated >= days && daysSinceCreated % days === 0) {
|
|
89
|
+
logger_1.Logger.info('CronService: Reached Weekly remainder send email', 'applicationSubmitRemainder');
|
|
90
|
+
yield this.applicationProcessRemainder({ userEmail: user_email, userName: user_name, language, applicationId: application_id }, "Application-Submit-Remainder" /* EmailTemplates.Appication_Submit_Ramainder */, deadline === null || deadline === void 0 ? void 0 : deadline.format('MMMM Do, YYYY'), application_url, true);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// 💡 Last week: every 48 hours based on deadline
|
|
95
|
+
logger_1.Logger.info('CronService: Reached last week before deadline remainder', 'applicationSubmitRemainder');
|
|
96
|
+
const hoursSinceLastWeek = (0, moment_1.default)().diff(lastWeekStart, 'hours'); // Calculate how many hours have passed since the last week started.
|
|
97
|
+
if (hoursSinceLastWeek >= 0) {
|
|
98
|
+
let hours = config_1.default === null || config_1.default === void 0 ? void 0 : config_1.default.CFF_LAST_WEEK_HOURS;
|
|
99
|
+
logger_1.Logger.info(`CronService: hours since lastweek beforedeadline "${hoursSinceLastWeek}" `, 'applicationSubmitRemainder');
|
|
100
|
+
const intervalsPassed = Math.floor(hoursSinceLastWeek / hours);
|
|
101
|
+
const nextTriggerTime = lastWeekStart.clone().add(intervalsPassed * hours, 'hours');
|
|
102
|
+
if ((0, moment_1.default)().isSame(nextTriggerTime, 'hour')) {
|
|
103
|
+
logger_1.Logger.info('CronService: Reached last week before deadline remainder send email', 'applicationSubmitRemainder');
|
|
104
|
+
yield this.applicationProcessRemainder({ userEmail: user_email, userName: user_name, language, applicationId: application_id }, "Application-Submit-Remainder" /* EmailTemplates.Appication_Submit_Ramainder */, deadline === null || deadline === void 0 ? void 0 : deadline.format('MMMM Do, YYYY'), application_url, true);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
logger_1.Logger.error('CronService: Error in applicationSubmitRemainder', 'applicationSubmitRemainder', error);
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.CronService = CronService;
|
|
117
|
+
//# sourceMappingURL=cron.services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.services.js","sourceRoot":"","sources":["../../../../src/platform-x/services/cron.services.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,23 +15,13 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) ||
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
35
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -46,26 +36,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
46
36
|
};
|
|
47
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
38
|
exports.EmailHandler = void 0;
|
|
39
|
+
const logger_1 = require("../../common/util/logger");
|
|
49
40
|
const emailDataSource_1 = require("../dataSource/emailDataSource");
|
|
41
|
+
const node_html_parser_1 = require("node-html-parser");
|
|
50
42
|
const style_1 = require("../constants/style");
|
|
51
43
|
const config_1 = __importDefault(require("../../config"));
|
|
52
44
|
const constants_1 = require("../constants");
|
|
53
45
|
const lodash_1 = require("lodash");
|
|
54
46
|
const emailTemplate_1 = require("./emailTemplate");
|
|
55
|
-
const HTMLParser = require('node-html-parser');
|
|
56
47
|
const moment = require('moment-timezone');
|
|
57
48
|
const sgMail = require('@sendgrid/mail');
|
|
58
49
|
const sgHelpers = require('@sendgrid/helpers');
|
|
59
50
|
const ejs = __importStar(require("ejs"));
|
|
60
|
-
|
|
51
|
+
const dompurify_1 = __importDefault(require("dompurify")); // Include DOMPurify for sanitization
|
|
61
52
|
const formBuilder_dao_1 = __importDefault(require("../database/dao/formBuilder.dao"));
|
|
62
|
-
const dompurify_1 = __importDefault(require("dompurify"));
|
|
63
|
-
const jsdom_1 = require("jsdom");
|
|
64
|
-
const logger_1 = require("../../common/util/logger");
|
|
65
|
-
const path_1 = __importDefault(require("path"));
|
|
66
|
-
const __1 = require("../..");
|
|
67
|
-
const window = new jsdom_1.JSDOM('').window;
|
|
68
|
-
const DOMPurify = (0, dompurify_1.default)(window);
|
|
69
53
|
// NOSONAR-NEXT-LINE
|
|
70
54
|
class EmailHandler {
|
|
71
55
|
constructor() { } // NOSONAR
|
|
@@ -77,24 +61,14 @@ class EmailHandler {
|
|
|
77
61
|
sendEmail(emailConfig) {
|
|
78
62
|
return __awaiter(this, void 0, void 0, function* () {
|
|
79
63
|
logger_1.Logger.info('EmailHandler: Reached sendEmail method', 'sendEmail');
|
|
80
|
-
|
|
81
|
-
sgMail.setApiKey(secrets === null || secrets === void 0 ? void 0 : secrets[constants_1.DynamicValues === null || constants_1.DynamicValues === void 0 ? void 0 : constants_1.DynamicValues.SENDGRID_API_KEY]);
|
|
82
|
-
// Build personalization object
|
|
83
|
-
const personalization = {
|
|
84
|
-
to: [{ email: emailConfig.email }],
|
|
85
|
-
};
|
|
86
|
-
// Add CC emails if provided
|
|
87
|
-
if (emailConfig.cc) {
|
|
88
|
-
const ccEmails = Array.isArray(emailConfig.cc) ? emailConfig.cc : [emailConfig.cc];
|
|
89
|
-
personalization.cc = ccEmails.map((email) => ({ email }));
|
|
90
|
-
logger_1.Logger.info(`Adding CC emails to non-personalized email: ${ccEmails.join(', ')}`, 'sendEmail');
|
|
91
|
-
}
|
|
92
|
-
// Add BCC if provided
|
|
93
|
-
if (emailConfig.bcc) {
|
|
94
|
-
personalization.bcc = [{ email: emailConfig.bcc }];
|
|
95
|
-
}
|
|
64
|
+
sgMail.setApiKey(config_1.default.SENDGRID_API_KEY);
|
|
96
65
|
const msg = {
|
|
97
|
-
personalizations: [
|
|
66
|
+
personalizations: [
|
|
67
|
+
{
|
|
68
|
+
to: [{ email: emailConfig.email }],
|
|
69
|
+
// cc: emailCC,
|
|
70
|
+
},
|
|
71
|
+
],
|
|
98
72
|
from: { email: config_1.default.EMAIL_FROM },
|
|
99
73
|
html: emailConfig.emailTemplate,
|
|
100
74
|
subject: emailConfig.subject,
|
|
@@ -116,8 +90,8 @@ class EmailHandler {
|
|
|
116
90
|
});
|
|
117
91
|
}
|
|
118
92
|
prepareEmailRequest(reqBody, emailType) {
|
|
93
|
+
var _a;
|
|
119
94
|
return __awaiter(this, void 0, void 0, function* () {
|
|
120
|
-
var _a, _b;
|
|
121
95
|
logger_1.Logger.info('Reached prepareEmailRequest', 'prepareEmailRequest');
|
|
122
96
|
try {
|
|
123
97
|
let dataSource = new emailDataSource_1.EmailDataSource();
|
|
@@ -128,13 +102,13 @@ class EmailHandler {
|
|
|
128
102
|
let curentTimeZone = start
|
|
129
103
|
.tz(reqBody.timezoneOffset)
|
|
130
104
|
.format('Do MMMM YYYY, h:mm a');
|
|
131
|
-
const root =
|
|
105
|
+
const root = (0, node_html_parser_1.parse)((_a = response[0]) === null || _a === void 0 ? void 0 : _a.hclplatformx_Body);
|
|
132
106
|
root.querySelector('#1_dynamic_text').textContent = ` ${reqBody.userName}`;
|
|
133
|
-
root.querySelector('#2_dynamic_text').textContent =
|
|
134
|
-
root.querySelector('#3_dynamic_text').textContent =
|
|
135
|
-
root.querySelector('#dynamic_contentType').textContent =
|
|
136
|
-
root.querySelector('#dynamic_event').textContent =
|
|
137
|
-
if (
|
|
107
|
+
root.querySelector('#2_dynamic_text').textContent = dompurify_1.default.sanitize(`<b> ${reqBody.pageTitle} </b>`);
|
|
108
|
+
root.querySelector('#3_dynamic_text').textContent = dompurify_1.default.sanitize(`<b>${curentTimeZone}</b>`);
|
|
109
|
+
root.querySelector('#dynamic_contentType').textContent = dompurify_1.default.sanitize(`<b>${reqBody.contentType}</b>`);
|
|
110
|
+
root.querySelector('#dynamic_event').textContent = dompurify_1.default.sanitize(`<b>${reqBody.event[0] + reqBody.event.slice(1)}</b>`);
|
|
111
|
+
if (reqBody.event.toLowerCase() === 'published') {
|
|
138
112
|
root
|
|
139
113
|
.querySelector('.dynamic_links_btn')
|
|
140
114
|
.setAttribute('href', reqBody.publishPageUrl);
|
|
@@ -143,11 +117,11 @@ class EmailHandler {
|
|
|
143
117
|
root.querySelector('#viewButton').setAttribute('style', 'display:none');
|
|
144
118
|
}
|
|
145
119
|
const append = root.querySelector('head');
|
|
146
|
-
append.insertAdjacentHTML('beforeend',
|
|
120
|
+
append.insertAdjacentHTML('beforeend', dompurify_1.default.sanitize(style_1.style));
|
|
147
121
|
let emailConfiguration = {
|
|
148
122
|
email: reqBody.emailTo,
|
|
149
123
|
emailTemplate: root.toString(),
|
|
150
|
-
subject:
|
|
124
|
+
subject: dompurify_1.default.sanitize(response[0].hclplatformx_Subject.replace('{{pageType}}', reqBody.contentType[0] + reqBody.contentType.slice(1))
|
|
151
125
|
.replace('{{publishOrUnpublish}}', reqBody.event[0] + reqBody.event.slice(1))),
|
|
152
126
|
};
|
|
153
127
|
logger_1.Logger.debug('Reached prepareEmailRequest - emailConfiguration', 'prepareEmailRequest', emailConfiguration);
|
|
@@ -168,8 +142,8 @@ class EmailHandler {
|
|
|
168
142
|
* @returns
|
|
169
143
|
*/
|
|
170
144
|
prepareSendEmailRequest(reqBody, emailType) {
|
|
145
|
+
var _a, _b, _c, _d;
|
|
171
146
|
return __awaiter(this, void 0, void 0, function* () {
|
|
172
|
-
var _a, _b, _c, _d;
|
|
173
147
|
logger_1.Logger.info('Reached prepareSendEmailRequest in emailHandler', 'prepareSendEmailRequest');
|
|
174
148
|
try {
|
|
175
149
|
let dataSource = new emailDataSource_1.EmailDataSource();
|
|
@@ -183,7 +157,7 @@ class EmailHandler {
|
|
|
183
157
|
}
|
|
184
158
|
}
|
|
185
159
|
}
|
|
186
|
-
const root =
|
|
160
|
+
const root = (0, node_html_parser_1.parse)((_c = templateData[0]) === null || _c === void 0 ? void 0 : _c.hclplatformx_Body);
|
|
187
161
|
let emailConfiguration = {
|
|
188
162
|
email: (_d = reqBody.replacement_variables) === null || _d === void 0 ? void 0 : _d.EMAIL,
|
|
189
163
|
emailTemplate: root ? root.toString() : '',
|
|
@@ -209,7 +183,7 @@ class EmailHandler {
|
|
|
209
183
|
return __awaiter(this, void 0, void 0, function* () {
|
|
210
184
|
logger_1.Logger.info('Reached pushEmails in emailHandler', 'pushEmails');
|
|
211
185
|
return yield this.sendEmail(emailConfiguration).then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
212
|
-
if (
|
|
186
|
+
if (response.statusCode === '202') {
|
|
213
187
|
response.msg =
|
|
214
188
|
'Thanks for getting in touch with us. We shall contact you soon.';
|
|
215
189
|
return response;
|
|
@@ -226,16 +200,14 @@ class EmailHandler {
|
|
|
226
200
|
* @param emailConfig
|
|
227
201
|
* @returns
|
|
228
202
|
*/
|
|
229
|
-
sendEmailWithPersonalizations(emailConfig,
|
|
203
|
+
sendEmailWithPersonalizations(emailConfig, isCFF) {
|
|
230
204
|
return __awaiter(this, void 0, void 0, function* () {
|
|
231
205
|
logger_1.Logger.info(`EmailHandler: Reached sendEmailWithPersonalizations method with emailConfig: ${JSON.stringify(emailConfig)}`, 'sendEmailWithPersonalizations');
|
|
232
|
-
logger_1.Logger.info(`EMAIL_FROM-------> ${email_from}`, 'sendEmailWithPersonalizations');
|
|
233
206
|
const Mail = sgHelpers.classes.Mail;
|
|
234
|
-
|
|
207
|
+
let email_from = isCFF ? config_1.default === null || config_1.default === void 0 ? void 0 : config_1.default.CFF_MAIL_FROM : config_1.default === null || config_1.default === void 0 ? void 0 : config_1.default.EMAIL_FROM;
|
|
235
208
|
logger_1.Logger.info('sendEmailWithPersonalizations : Email From:', JSON.stringify(email_from));
|
|
236
209
|
const Personalization = sgHelpers.classes.Personalization;
|
|
237
|
-
|
|
238
|
-
sgMail.setApiKey(secrets === null || secrets === void 0 ? void 0 : secrets[constants_1.DynamicValues === null || constants_1.DynamicValues === void 0 ? void 0 : constants_1.DynamicValues.SENDGRID_API_KEY]);
|
|
210
|
+
sgMail.setApiKey(config_1.default.SENDGRID_API_KEY);
|
|
239
211
|
const mail = new Mail();
|
|
240
212
|
mail.setFrom(email_from);
|
|
241
213
|
mail.setSubject(emailConfig.subject);
|
|
@@ -244,19 +216,10 @@ class EmailHandler {
|
|
|
244
216
|
// Set personalizations as per the emailConfig
|
|
245
217
|
if ((emailConfig === null || emailConfig === void 0 ? void 0 : emailConfig.personalizations) &&
|
|
246
218
|
(emailConfig === null || emailConfig === void 0 ? void 0 : emailConfig.personalizations.to.length)) {
|
|
247
|
-
const { to
|
|
248
|
-
|
|
249
|
-
to.forEach((toData, index) => {
|
|
219
|
+
const { to } = emailConfig === null || emailConfig === void 0 ? void 0 : emailConfig.personalizations;
|
|
220
|
+
to === null || to === void 0 ? void 0 : to.forEach((toData) => {
|
|
250
221
|
const personalization = new Personalization();
|
|
251
222
|
personalization.addTo(toData.to);
|
|
252
|
-
// Add CC emails to EACH personalization (CC gets email for each TO recipient)
|
|
253
|
-
if (cc && cc.length > 0) {
|
|
254
|
-
cc.forEach((ccData) => {
|
|
255
|
-
personalization.addCc(ccData.to);
|
|
256
|
-
logger_1.Logger.info(`Adding CC email ${ccData.to} to personalization ${index + 1} for TO: ${toData.to}`, 'sendEmailWithPersonalizations');
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
// Add unique substitutions for each TO recipient
|
|
260
223
|
if (toData === null || toData === void 0 ? void 0 : toData.substitutions) {
|
|
261
224
|
for (const key in toData === null || toData === void 0 ? void 0 : toData.substitutions) {
|
|
262
225
|
if (key) {
|
|
@@ -265,13 +228,11 @@ class EmailHandler {
|
|
|
265
228
|
}
|
|
266
229
|
}
|
|
267
230
|
mail.addPersonalization(personalization);
|
|
268
|
-
logger_1.Logger.info(`Personalization ${index + 1} created for TO: ${toData.to} with ${(cc === null || cc === void 0 ? void 0 : cc.length) || 0} CC recipients`, 'sendEmailWithPersonalizations');
|
|
269
231
|
});
|
|
270
|
-
// Handle attachments
|
|
271
232
|
if ((emailConfig === null || emailConfig === void 0 ? void 0 : emailConfig.attachments) && Array.isArray(emailConfig.attachments)) {
|
|
272
233
|
emailConfig.attachments.forEach((attachment) => {
|
|
273
234
|
mail.addAttachment({
|
|
274
|
-
content: attachment.base64,
|
|
235
|
+
content: attachment.base64,
|
|
275
236
|
filename: attachment.filename,
|
|
276
237
|
type: attachment.type || 'application/octet-stream',
|
|
277
238
|
disposition: 'attachment',
|
|
@@ -281,17 +242,9 @@ class EmailHandler {
|
|
|
281
242
|
}
|
|
282
243
|
}
|
|
283
244
|
else {
|
|
284
|
-
// set to email for non personalized email
|
|
245
|
+
// set to email for non personalized email
|
|
285
246
|
const personalization = new Personalization();
|
|
286
247
|
personalization.addTo(emailConfig.email);
|
|
287
|
-
// Add CC emails if provided in non-personalized mode
|
|
288
|
-
if (emailConfig.cc) {
|
|
289
|
-
const ccEmails = Array.isArray(emailConfig.cc) ? emailConfig.cc : [emailConfig.cc];
|
|
290
|
-
ccEmails.forEach((ccEmail) => {
|
|
291
|
-
personalization.addCc(ccEmail);
|
|
292
|
-
logger_1.Logger.info(`Adding CC email to non-personalized email: ${ccEmail}`, 'sendEmailWithPersonalizations');
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
248
|
logger_1.Logger.info('sendEmailWithPersonalizations : Email personalizations:', JSON.stringify(personalization));
|
|
296
249
|
mail.addPersonalization(personalization);
|
|
297
250
|
}
|
|
@@ -309,39 +262,17 @@ class EmailHandler {
|
|
|
309
262
|
});
|
|
310
263
|
});
|
|
311
264
|
}
|
|
312
|
-
/**
|
|
313
|
-
* Utility method to prepare CC emails in standardized format
|
|
314
|
-
* @param ccEmails - Can be string, array of strings, or Recipients array
|
|
315
|
-
* @returns Array of email strings
|
|
316
|
-
*/
|
|
317
|
-
prepareCCEmails(ccEmails) {
|
|
318
|
-
if (!ccEmails)
|
|
319
|
-
return [];
|
|
320
|
-
if (typeof ccEmails === 'string') {
|
|
321
|
-
return [ccEmails];
|
|
322
|
-
}
|
|
323
|
-
if (Array.isArray(ccEmails)) {
|
|
324
|
-
return ccEmails.map((cc) => {
|
|
325
|
-
if (typeof cc === 'string')
|
|
326
|
-
return cc;
|
|
327
|
-
if (cc.email)
|
|
328
|
-
return cc.email; // Recipients object
|
|
329
|
-
return cc.to || cc; // ToWithSubstitutions object
|
|
330
|
-
}).filter(email => email && typeof email === 'string');
|
|
331
|
-
}
|
|
332
|
-
return [];
|
|
333
|
-
}
|
|
334
265
|
/**
|
|
335
266
|
* prepare personalize email request to send email through sendgrid
|
|
336
267
|
* @param reqBody
|
|
337
268
|
* @returns
|
|
338
269
|
*/
|
|
339
270
|
sendPersonalizeEmailRequest(reqBody) {
|
|
271
|
+
var _a, _b;
|
|
340
272
|
return __awaiter(this, void 0, void 0, function* () {
|
|
341
|
-
var _a, _b;
|
|
342
273
|
try {
|
|
343
|
-
let { email_type, replacement_variables, recipients,
|
|
344
|
-
logger_1.Logger.info(`EmailHandler: reached in sendPersonalizeEmailRequest with emailType: ${email_type}
|
|
274
|
+
let { email_type, replacement_variables, recipients, isCFF = false } = reqBody;
|
|
275
|
+
logger_1.Logger.info(`EmailHandler: reached in sendPersonalizeEmailRequest with emailType: ${email_type}`, 'sendPersonalizeEmailRequest');
|
|
345
276
|
// disable SOLR because of connectivity issue
|
|
346
277
|
logger_1.Logger.debug('Reached sendPersonalizeEmailRequest in emailHandler', 'sendPersonalizeEmailRequest');
|
|
347
278
|
let templateData = yield this.fetchEmailTemplateData(reqBody);
|
|
@@ -359,20 +290,9 @@ class EmailHandler {
|
|
|
359
290
|
recipientsData = {
|
|
360
291
|
to,
|
|
361
292
|
};
|
|
362
|
-
// Add CC recipients if they exist
|
|
363
|
-
if (cc_recipients && (0, lodash_1.isArray)(cc_recipients)) {
|
|
364
|
-
const cc = [];
|
|
365
|
-
cc_recipients.forEach((ccRecipient) => {
|
|
366
|
-
cc.push({
|
|
367
|
-
to: ccRecipient === null || ccRecipient === void 0 ? void 0 : ccRecipient.email,
|
|
368
|
-
});
|
|
369
|
-
});
|
|
370
|
-
recipientsData.cc = cc;
|
|
371
|
-
}
|
|
372
293
|
}
|
|
373
294
|
if (templateData && ((_a = Object.keys(templateData)) === null || _a === void 0 ? void 0 : _a.length) !== 0) {
|
|
374
|
-
const root =
|
|
375
|
-
isCFF = (templateData === null || templateData === void 0 ? void 0 : templateData.email_from) && (templateData === null || templateData === void 0 ? void 0 : templateData.email_from) !== '' ? templateData === null || templateData === void 0 ? void 0 : templateData.email_from : isCFF;
|
|
295
|
+
const root = (0, node_html_parser_1.parse)(templateData === null || templateData === void 0 ? void 0 : templateData.body);
|
|
376
296
|
const emailConfiguration = {
|
|
377
297
|
email: (_b = reqBody.replacement_variables) === null || _b === void 0 ? void 0 : _b.EMAIL,
|
|
378
298
|
emailTemplate: root ? root.toString() : '',
|
|
@@ -380,13 +300,12 @@ class EmailHandler {
|
|
|
380
300
|
personalizations: recipientsData,
|
|
381
301
|
attachments: reqBody === null || reqBody === void 0 ? void 0 : reqBody.attachments,
|
|
382
302
|
};
|
|
383
|
-
|
|
303
|
+
let is_cff = (isCFF && isCFF === true) ? true : false;
|
|
384
304
|
logger_1.Logger.info(`sendPersonalizeEmailRequest -${JSON.stringify(emailConfiguration)}`, 'sendPersonalizeEmailRequest');
|
|
385
|
-
return yield this.sendEmailWithPersonalizations(emailConfiguration,
|
|
305
|
+
return yield this.sendEmailWithPersonalizations(emailConfiguration, is_cff).then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
386
306
|
if (response.statusCode === 202) {
|
|
387
307
|
response.msg =
|
|
388
308
|
'Thanks for getting in touch with us. We shall contact you soon.';
|
|
389
|
-
console.log('>>>>>>>>>>>>>>>>>>>>>>>>>.RES', response);
|
|
390
309
|
return response;
|
|
391
310
|
}
|
|
392
311
|
else {
|
|
@@ -411,15 +330,15 @@ class EmailHandler {
|
|
|
411
330
|
const start = moment.tz(reqBody.dateTime, 'UTC'); // original timezone
|
|
412
331
|
start.tz(reqBody.timezoneOffset).format('Do MMMM YYYY, h:mm a');
|
|
413
332
|
let str = yield emailTemplate_1.EmailTemplateHandler.prepareEmailTemplate(reqBody);
|
|
414
|
-
let root =
|
|
333
|
+
let root = (0, node_html_parser_1.parse)(str);
|
|
415
334
|
root.querySelector('#1_dynamic_text').textContent = `${reqBody.userName}`;
|
|
416
|
-
root.querySelector('#2_dynamic_text').textContent =
|
|
417
|
-
root.querySelector('#3_dynamic_text').textContent =
|
|
418
|
-
root.querySelector('#4_dynamic_text').textContent =
|
|
419
|
-
root.querySelector('#5_dynamic_text').textContent =
|
|
420
|
-
root.querySelector('#6_dynamic_text').textContent =
|
|
335
|
+
root.querySelector('#2_dynamic_text').textContent = dompurify_1.default.sanitize(`<b> ${reqBody.total_price} </b>`);
|
|
336
|
+
root.querySelector('#3_dynamic_text').textContent = dompurify_1.default.sanitize(`<b>${reqBody.currency_code}</b>`);
|
|
337
|
+
root.querySelector('#4_dynamic_text').textContent = dompurify_1.default.sanitize(`<b>${reqBody.shipping_address.streetName} ${reqBody.shipping_address.city} ${reqBody.shipping_address.state} ${reqBody.shipping_address.country}${reqBody.shipping_address.postalCode} </b>`);
|
|
338
|
+
root.querySelector('#5_dynamic_text').textContent = dompurify_1.default.sanitize(`<b>${reqBody.total_tax}</b>`);
|
|
339
|
+
root.querySelector('#6_dynamic_text').textContent = dompurify_1.default.sanitize(`<b>${reqBody.orderNumber}</b>`);
|
|
421
340
|
const apeend = root.querySelector('head');
|
|
422
|
-
apeend.insertAdjacentHTML('beforeend',
|
|
341
|
+
apeend.insertAdjacentHTML('beforeend', dompurify_1.default.sanitize(style_1.style));
|
|
423
342
|
let emailConfiguration = {
|
|
424
343
|
email: reqBody.emailTo,
|
|
425
344
|
emailTemplate: root.toString(),
|
|
@@ -443,8 +362,7 @@ class EmailHandler {
|
|
|
443
362
|
const start = moment.tz(reqBody.dateTime, 'UTC'); // original timezone
|
|
444
363
|
let curentTimeZone = start;
|
|
445
364
|
curentTimeZone.tz(reqBody.timezoneOffset).format('Do MMMM YYYY, h:mm a');
|
|
446
|
-
|
|
447
|
-
console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>.', emailTemplate);
|
|
365
|
+
let emailTemplate = 'templates/orderPlaced.ejs';
|
|
448
366
|
let billingStr = '';
|
|
449
367
|
billingStr +=
|
|
450
368
|
Object.keys(reqBody.billing_address).length !== 0
|
|
@@ -493,8 +411,8 @@ class EmailHandler {
|
|
|
493
411
|
});
|
|
494
412
|
}
|
|
495
413
|
fetchEmailTemplateData(reqBody) {
|
|
414
|
+
var _a, _b, _c, _d;
|
|
496
415
|
return __awaiter(this, void 0, void 0, function* () {
|
|
497
|
-
var _a, _b, _c, _d, _e, _f;
|
|
498
416
|
try {
|
|
499
417
|
logger_1.Logger.info('EmailHandler: Reached fetchEmailTemplateData', 'fetchEmailTemplateData');
|
|
500
418
|
let { email_type } = reqBody;
|
|
@@ -505,14 +423,12 @@ class EmailHandler {
|
|
|
505
423
|
if ((templateSolrRes === null || templateSolrRes === void 0 ? void 0 : templateSolrRes.length) > 0) {
|
|
506
424
|
templateData.body = ((_a = templateSolrRes === null || templateSolrRes === void 0 ? void 0 : templateSolrRes[0]) === null || _a === void 0 ? void 0 : _a.hclplatformx_Body) || '';
|
|
507
425
|
templateData.subject = ((_b = templateSolrRes === null || templateSolrRes === void 0 ? void 0 : templateSolrRes[0]) === null || _b === void 0 ? void 0 : _b.hclplatformx_Subject) || '';
|
|
508
|
-
templateData.email_from = ((_c = templateSolrRes === null || templateSolrRes === void 0 ? void 0 : templateSolrRes[0]) === null || _c === void 0 ? void 0 : _c.hclplatformx_To) || '';
|
|
509
426
|
}
|
|
510
427
|
}
|
|
511
428
|
else {
|
|
512
429
|
let templateRes = yield new formBuilder_dao_1.default().fetch('email_templates', { name: email_type });
|
|
513
|
-
templateData.body = (
|
|
514
|
-
templateData.subject = (
|
|
515
|
-
templateData.email_from = ((_f = templateRes === null || templateRes === void 0 ? void 0 : templateRes[0]) === null || _f === void 0 ? void 0 : _f.to) || '';
|
|
430
|
+
templateData.body = (_c = templateRes === null || templateRes === void 0 ? void 0 : templateRes[0]) === null || _c === void 0 ? void 0 : _c.body;
|
|
431
|
+
templateData.subject = (_d = templateRes === null || templateRes === void 0 ? void 0 : templateRes[0]) === null || _d === void 0 ? void 0 : _d.subject;
|
|
516
432
|
}
|
|
517
433
|
return templateData;
|
|
518
434
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emailHandler.js","sourceRoot":"","sources":["../../../../src/platform-x/util/emailHandler.ts"],"names":[],"mappings":"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"}
|