From b3baffe1746f400fc18882cd65ef2a24f911fb62 Mon Sep 17 00:00:00 2001 From: Nedim Uka Date: Thu, 27 Jun 2019 17:29:57 +0200 Subject: [PATCH] Send notification email --- app/helpers/awsEmail.js | 101 ++++++++++++++++++++++++++-- app/services/crawlerService.js | 1 - app/services/notificationService.js | 9 ++- 3 files changed, 101 insertions(+), 10 deletions(-) diff --git a/app/helpers/awsEmail.js b/app/helpers/awsEmail.js index f0f01e6..0519c16 100644 --- a/app/helpers/awsEmail.js +++ b/app/helpers/awsEmail.js @@ -1,9 +1,10 @@ -const dotenv = require('dotenv'); -dotenv.config(); +const dotenv = require('dotenv').config(); const { getRealEstateTypeEnum } = require('./enums'); const { getRegionName, getMunicipalityName } = require('./codes'); -const AWS = require('aws-sdk'); +var AWS = require('aws-sdk'); +const TEMPLATE_NAME = "MarketAlertTemplate" + AWS.config.update({ region: process.env.AMAZON_REGION, credentials: @@ -77,13 +78,13 @@ Javimi tim. const getEmaiTextVersion = (realestateRequest) => { const realEstateType = getRealEstateTypeEnum(realestateRequest.realEstateType); - const gardenSize = realEstateType.hasGardenSize ? "Kvadratura okućnice od " + realestateRequest.gardenSizeMin + " do " + realestateRequest.gardenSizeMax : "" + const gardenSize = realEstateType.hasGardenSize ? "Kvadratura okućnice od " + realestateRequest.gardenSizeMin + " do " + realestateRequest.gardenSizeMax : "" const text = "Zdravo, \n Naručio/la si da ti javimo ako se nekretnina pojavi u oglasima \n Ovo je tražena nekretnina: \n , Tip nekretnine: " + realestateRequest.realEstateType + "\n Područje" + getRegionName(realestateRequest.region) + "\n Mjesto " + getMunicipalityName(realestateRequest.region, realestateRequest.municipality) + "\n Kvadratura nekretnine Od " + realestateRequest.sizeMin + " do " + realestateRequest.sizeMaX + + gardenSize - "\n Cijena od " + realestateRequest.priceMin + " do " + realestateRequest.priceMax + + "\n Cijena od " + realestateRequest.priceMin + " do " + realestateRequest.priceMax + "\n Ako želis prestati dobijati obavještenja za ovu pretragu klikni" + process.env.APP_URL + "/odjava/" + realestateRequest.uniqueId + "\n Ako želiš promijeniti uslove pretrage klikni " + process.env.APP_URL + "/odpregled/" + realestateRequest.uniqueId + "\n Tvoj,\n Javimi tim" @@ -91,6 +92,94 @@ const getEmaiTextVersion = (realestateRequest) => { return text; } +const sendBulkEmail = async (marketAlerts) => { + + try { + // Create the promise and SES service object + // const templatePromise = new AWS.SES({ apiVersion: '2010-12-01' }).getTemplate({ TemplateName: TEMPLATE_NAME }).promise(); + // const template = await templatePromise; + // console.log(template); + + destinations = [] + + marketAlerts.forEach(marketAlert => { + destinations.push({ + Destination: { + ToAddresses: [ + marketAlert.email + ] + }, + ReplacementTemplateData: `{ "marketAlertUrl":"${marketAlert.url}", "favoriteanimal":"yak" }` + }) + + }); + + + // Create sendBulkTemplatedEmail params + var params = { + Destinations: /* required */ + // { + // Destination: { /* required */ + // CcAddresses: [ + // 'EMAIL_ADDRESS', + // /* more items */ + // ], + // ToAddresses: [ + // 'EMAIL_ADDRESS', + // 'EMAIL_ADDRESS' + // /* more items */ + // ] + // }, + // ReplacementTemplateData: '{ \"REPLACEMENT_TAG_NAME\":\"REPLACEMENT_VALUE\" }' + // }, + // ], + destinations, + Source: process.env.SOURCE_EMAIL, /* required */ + Template: TEMPLATE_NAME, /* required */ + DefaultTemplateData: '{ \"REPLACEMENT_TAG_NAME\":\"REPLACEMENT_VALUE\" }', + ReplyToAddresses: [ + process.env.SOURCE_EMAIL, + ] + }; + + + + + // Create the promise and SES service object + const sendPromise =new AWS.SES({ apiVersion: '2010-12-01' }).sendBulkTemplatedEmail(params).promise(); + + await sendPromise; + + + } catch (e) { + console.log("Could not send bulk email", e) + } + +} + +const createMarketAlertEmailTemplate = async () => { + const marketAlertTemplate = { + Template: { + TemplateName: "MarketAlertTemplate", + SubjectPart: "Greetings", + TextPart: "Dear ,\r\nYour favorite animal is {{marketAlertUrl}}.", + HtmlPart: "

Hello

Your favorite animal is {{marketAlertUrl}}.

" + } + } + + try { + const templatePromise = new AWS.SES({ apiVersion: '2010-12-01' }).createTemplate(marketAlertTemplate).promise(); + await templatePromise + + } catch (e) { + console.log("Could not create MarketAlertEmailTemplate", e); + } +} + + + module.exports = { - sendTemplatedEmail + sendTemplatedEmail, + sendBulkEmail, + createMarketAlertEmailTemplate }; diff --git a/app/services/crawlerService.js b/app/services/crawlerService.js index 1b75a24..756e9bf 100644 --- a/app/services/crawlerService.js +++ b/app/services/crawlerService.js @@ -62,4 +62,3 @@ async function crawlAll() { }; crawlAll(); - diff --git a/app/services/notificationService.js b/app/services/notificationService.js index 2e4e6c0..fb342f4 100644 --- a/app/services/notificationService.js +++ b/app/services/notificationService.js @@ -2,18 +2,21 @@ const Promise = require("bluebird"); const db = require("../models/index"); const { allMarketAlerts } = require('../helpers/db/dbHelper'); +const { createMarketAlertEmailTemplate, sendBulkEmail } = require('../helpers/awsEmail'); async function processNotifications() { try { const marketAlerts = await allMarketAlerts(false); - console.log(marketAlerts); + // await createMarketAlertEmailTemplate(); + await sendBulkEmail(marketAlerts); + // console.log(marketAlerts); + process.exit(); } catch (e) { console.log("NOTIFICATION SERVICE: could not send notifications reason: ", e); } } - -processNotifications(); \ No newline at end of file +processNotifications();