Bulk emali subject

This commit is contained in:
Nedim Uka
2019-07-03 15:13:59 +02:00
parent b79a274f96
commit a807cb5bf2
2 changed files with 47 additions and 57 deletions

View File

@@ -40,3 +40,4 @@ this will create and run postgres image and then execute migrations
- AWS SES credentials are handled with env vratiables
- Notification emails are sent in batches of 50, by using SES templates
- Make sure that you are using different templates for different envirorments

View File

@@ -39,7 +39,7 @@ const sendTemplatedEmail = async (email, request) => {
},
Subject: {
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 */
@@ -103,74 +103,61 @@ const sendBulkEmail = async (marketAlerts) => {
let RERequestUuids = marketAlerts.map(marketAlert => marketAlert.request);
// console.log(RERequestUuids)
RERequestUuids = Array.from(new Set(RERequestUuids));
// console.log(RERequestUuids)
RERequestUuids = RERequestUuids.map(marketAlert => {
return { uniqueId: marketAlert }
});
// RERequestUuids = Array.from(new Set(RERequestUuids));
// console.log(RERequestUuids)
// const RERequests = await
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 = [];
RERequest.forEach(RERequest => {
var formatedRequest = {};
formatedRequest[RERequest.uniqueId] =
requestDataValues[RERequest.uniqueId] = {
realEstateType: RERequest.realEstateType,
region: RERequest.region,
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
}
});
formatedRequest[RERequest.uniqueId] =
requestDataValues[RERequest.uniqueId] = {
realEstateType: RERequest.realEstateType,
region: RERequest.region,
municipality: RERequest.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) {
// {{realestateType}}, {{region}}, {{municipality}}
const marketAlert = groupedRERequests[request];
console.log("RequestlertEmail");
console.log(request.email);
console.log(request);
let repData = `{ "marketAlertUrl":[${toAWSArray(marketAlert)}], "realestateType":"${request.realEstateType}", "region":"${request.region}", "municipality":"${request.municipality}" }`
let extractedData = toAWSArray(marketAlert.marketAlertArray);
const realEstateType = getRealEstateTypeEnum(marketAlert.requestObject.realEstateType).title;
const region = getRegionName(marketAlert.requestObject.region);
const municipality = getMunicipalityName(marketAlert.requestObject.region, marketAlert.requestObject.municipality);
let repData = `{ "marketAlertUrl":[${extractedData}], "realestateType":"${realEstateType}", "region":"${region}", "municipality":"${municipality}" }`
destinations.push({
Destination: {
ToAddresses: [
request.email
marketAlert.requestObject.email
]
},
ReplacementTemplateData: repData
@@ -178,7 +165,7 @@ const sendBulkEmail = async (marketAlerts) => {
}
console.log("AWS EMAIL : Bulk email replacement data:");
// console.log(destinations);
console.log(destinations);
var params = {
Destinations:
@@ -201,19 +188,17 @@ const sendBulkEmail = async (marketAlerts) => {
} catch (e) {
console.log("Could not send bulk email", e)
}
}
const toAWSArray = (urlArray) => {
console.log(urlArray);
let arrayString = ""
urlArray.forEach(element => {
const formatetdTitle = element.title.replace(/"/g, "");
arrayString = arrayString + `{"url":"${element.url.trim()}" , "title":"${formatetdTitle}"},`
});
return arrayString.slice(0, -1);
}
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 = {
sendTemplatedEmail,
sendBulkEmail,