diff --git a/README.md b/README.md index c6609b0..2488e3c 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/app/helpers/awsEmail.js b/app/helpers/awsEmail.js index 4eef45e..ae590c0 100644 --- a/app/helpers/awsEmail.js +++ b/app/helpers/awsEmail.js @@ -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,