Bulk emali subject
This commit is contained in:
@@ -40,3 +40,4 @@ this will create and run postgres image and then execute migrations
|
|||||||
|
|
||||||
- AWS SES credentials are handled with env vratiables
|
- AWS SES credentials are handled with env vratiables
|
||||||
- Notification emails are sent in batches of 50, by using SES templates
|
- Notification emails are sent in batches of 50, by using SES templates
|
||||||
|
- Make sure that you are using different templates for different envirorments
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ const sendTemplatedEmail = async (email, request) => {
|
|||||||
},
|
},
|
||||||
Subject: {
|
Subject: {
|
||||||
Charset: 'UTF-8',
|
Charset: 'UTF-8',
|
||||||
Data: `Javimi Potvrda: ${request.realEstateType} ${getRegionName(request.region)}, ${getMunicipalityName(request.region, request.municipality)}`
|
Data: `Javimi Potvrda: ${getSubject(request.realEstateType, request.region, request.municipality)}`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Source: process.env.SOURCE_EMAIL, /* required */
|
Source: process.env.SOURCE_EMAIL, /* required */
|
||||||
@@ -103,74 +103,61 @@ const sendBulkEmail = async (marketAlerts) => {
|
|||||||
|
|
||||||
|
|
||||||
let RERequestUuids = marketAlerts.map(marketAlert => marketAlert.request);
|
let RERequestUuids = marketAlerts.map(marketAlert => marketAlert.request);
|
||||||
// console.log(RERequestUuids)
|
|
||||||
RERequestUuids = Array.from(new Set(RERequestUuids));
|
RERequestUuids = Array.from(new Set(RERequestUuids));
|
||||||
// console.log(RERequestUuids)
|
|
||||||
RERequestUuids = RERequestUuids.map(marketAlert => {
|
RERequestUuids = RERequestUuids.map(marketAlert => {
|
||||||
return { uniqueId: marketAlert }
|
return { uniqueId: marketAlert }
|
||||||
});
|
});
|
||||||
// RERequestUuids = Array.from(new Set(RERequestUuids));
|
|
||||||
// console.log(RERequestUuids)
|
|
||||||
// const RERequests = await
|
|
||||||
const RERequest = await allRERequestByUiid(RERequestUuids);
|
const RERequest = await allRERequestByUiid(RERequestUuids);
|
||||||
// const requestDataValues = RERequest.map(RERequest => {
|
|
||||||
// var formatedRequest = {};
|
|
||||||
// formatedRequest[RERequest.uniqueId] = {
|
|
||||||
// realEstateType: RERequest.realEstateType,
|
|
||||||
// region: RERequest.region,
|
|
||||||
// municipality: RERequest.municipality
|
|
||||||
// };
|
|
||||||
// return formatedRequest;
|
|
||||||
// })
|
|
||||||
const requestDataValues = [];
|
const requestDataValues = [];
|
||||||
|
|
||||||
RERequest.forEach(RERequest => {
|
RERequest.forEach(RERequest => {
|
||||||
var formatedRequest = {};
|
var formatedRequest = {};
|
||||||
formatedRequest[RERequest.uniqueId] =
|
formatedRequest[RERequest.uniqueId] =
|
||||||
requestDataValues[RERequest.uniqueId] = {
|
requestDataValues[RERequest.uniqueId] = {
|
||||||
realEstateType: RERequest.realEstateType,
|
realEstateType: RERequest.realEstateType,
|
||||||
region: RERequest.region,
|
region: RERequest.region,
|
||||||
municipality: RERequest.municipality
|
municipality: RERequest.municipality
|
||||||
};
|
};
|
||||||
});
|
|
||||||
// console.log(requestDataValues);
|
|
||||||
|
|
||||||
|
|
||||||
marketAlerts.forEach(marketAlert => {
|
|
||||||
// console.log(marketAlert);
|
|
||||||
// const RERequest = await currentRERequest(marketAlert.request);
|
|
||||||
if (!groupedRERequests[marketAlert.request]) {
|
|
||||||
groupedRERequests[marketAlert.request] = [];
|
|
||||||
}
|
|
||||||
// console.log(requestDataValues[marketAlert.request]);
|
|
||||||
console.log("MarketAlertEmail");
|
|
||||||
console.log(marketAlert.email);
|
|
||||||
|
|
||||||
groupedRERequests[marketAlert.request].push({
|
|
||||||
|
|
||||||
url: marketAlert.url,
|
|
||||||
title: marketAlert.title,
|
|
||||||
email: marketAlert.email,
|
|
||||||
requestData: {
|
|
||||||
realEstateType: requestDataValues[marketAlert.request].realEstateType,
|
|
||||||
region: requestDataValues[marketAlert.request].region,
|
|
||||||
municipality: requestDataValues[marketAlert.request].municipality
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
marketAlerts.forEach(marketAlert => {
|
||||||
|
|
||||||
|
const requestObject = {
|
||||||
|
email: marketAlert.email,
|
||||||
|
realEstateType: requestDataValues[marketAlert.request].realEstateType,
|
||||||
|
municipality: requestDataValues[marketAlert.request].municipality,
|
||||||
|
region: requestDataValues[marketAlert.request].region,
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!groupedRERequests[marketAlert.request]) {
|
||||||
|
groupedRERequests[marketAlert.request] = {
|
||||||
|
requestObject: requestObject,
|
||||||
|
marketAlertArray: []
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
groupedRERequests[marketAlert.request].marketAlertArray.push({
|
||||||
|
url: marketAlert.url,
|
||||||
|
title: marketAlert.title,
|
||||||
|
});
|
||||||
|
});
|
||||||
for (request in groupedRERequests) {
|
for (request in groupedRERequests) {
|
||||||
// {{realestateType}}, {{region}}, {{municipality}}
|
|
||||||
|
|
||||||
const marketAlert = groupedRERequests[request];
|
const marketAlert = groupedRERequests[request];
|
||||||
console.log("RequestlertEmail");
|
let extractedData = toAWSArray(marketAlert.marketAlertArray);
|
||||||
console.log(request.email);
|
const realEstateType = getRealEstateTypeEnum(marketAlert.requestObject.realEstateType).title;
|
||||||
console.log(request);
|
const region = getRegionName(marketAlert.requestObject.region);
|
||||||
let repData = `{ "marketAlertUrl":[${toAWSArray(marketAlert)}], "realestateType":"${request.realEstateType}", "region":"${request.region}", "municipality":"${request.municipality}" }`
|
const municipality = getMunicipalityName(marketAlert.requestObject.region, marketAlert.requestObject.municipality);
|
||||||
|
|
||||||
|
let repData = `{ "marketAlertUrl":[${extractedData}], "realestateType":"${realEstateType}", "region":"${region}", "municipality":"${municipality}" }`
|
||||||
|
|
||||||
destinations.push({
|
destinations.push({
|
||||||
Destination: {
|
Destination: {
|
||||||
ToAddresses: [
|
ToAddresses: [
|
||||||
request.email
|
marketAlert.requestObject.email
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
ReplacementTemplateData: repData
|
ReplacementTemplateData: repData
|
||||||
@@ -178,7 +165,7 @@ const sendBulkEmail = async (marketAlerts) => {
|
|||||||
|
|
||||||
}
|
}
|
||||||
console.log("AWS EMAIL : Bulk email replacement data:");
|
console.log("AWS EMAIL : Bulk email replacement data:");
|
||||||
// console.log(destinations);
|
console.log(destinations);
|
||||||
|
|
||||||
var params = {
|
var params = {
|
||||||
Destinations:
|
Destinations:
|
||||||
@@ -201,19 +188,17 @@ const sendBulkEmail = async (marketAlerts) => {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log("Could not send bulk email", e)
|
console.log("Could not send bulk email", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const toAWSArray = (urlArray) => {
|
const toAWSArray = (urlArray) => {
|
||||||
console.log(urlArray);
|
|
||||||
let arrayString = ""
|
let arrayString = ""
|
||||||
urlArray.forEach(element => {
|
urlArray.forEach(element => {
|
||||||
const formatetdTitle = element.title.replace(/"/g, "");
|
const formatetdTitle = element.title.replace(/"/g, "");
|
||||||
arrayString = arrayString + `{"url":"${element.url.trim()}" , "title":"${formatetdTitle}"},`
|
arrayString = arrayString + `{"url":"${element.url.trim()}" , "title":"${formatetdTitle}"},`
|
||||||
});
|
});
|
||||||
|
|
||||||
return arrayString.slice(0, -1);
|
return arrayString.slice(0, -1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const getNotificationEmailHtml = () => {
|
const getNotificationEmailHtml = () => {
|
||||||
@@ -250,6 +235,10 @@ const createMarketAlertEmailTemplate = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getSubject = (realEstateType, region, municipality) => {
|
||||||
|
return `${getRealEstateTypeEnum(realEstateType).title} ${getRegionName(region)}, ${getMunicipalityName(region, municipality)}`
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
sendTemplatedEmail,
|
sendTemplatedEmail,
|
||||||
sendBulkEmail,
|
sendBulkEmail,
|
||||||
|
|||||||
Reference in New Issue
Block a user