2019-06-03 10:34:59 +02:00
2019-06-27 17:29:57 +02:00
const dotenv = require ( 'dotenv' ) . config ( ) ;
2019-06-11 10:26:48 +02:00
const { getRealEstateTypeEnum } = require ( './enums' ) ;
const { getRegionName , getMunicipalityName } = require ( './codes' ) ;
2019-06-27 17:29:57 +02:00
var AWS = require ( 'aws-sdk' ) ;
const TEMPLATE _NAME = "MarketAlertTemplate"
2019-06-03 10:34:59 +02:00
AWS . config . update ( {
region : process . env . AMAZON _REGION ,
credentials :
{
accessKeyId : process . env . AMAZON _ACCES _KEY _ID ,
secretAccessKey : process . env . AMAZON _SECRET _ACCESS _KEY
}
} ) ;
const sendTemplatedEmail = async ( email , request ) => {
const params = {
Destination : { /* required */
CcAddresses : [
] ,
ToAddresses : [
email
]
} ,
Message : { /* required */
Body : { /* required */
Html : {
Charset : "UTF-8" ,
Data : getEmailHTML ( request )
} ,
Text : {
Charset : "UTF-8" ,
Data : getEmaiTextVersion ( request )
}
} ,
Subject : {
Charset : 'UTF-8' ,
Data : ` Javimi Potvrda: ${ request . realEstateType } ${ getRegionName ( request . region ) } , ${ getMunicipalityName ( request . region , request . municipality ) } `
}
} ,
2019-06-11 10:26:48 +02:00
Source : process . env . SOURCE _EMAIL , /* required */
2019-06-03 10:34:59 +02:00
ReplyToAddresses : [
2019-06-11 10:26:48 +02:00
process . env . SOURCE _EMAIL ,
2019-06-03 10:34:59 +02:00
] ,
} ;
const sendEmailPromise = new AWS . SES ( { apiVersion : '2010-12-01' } ) . sendEmail ( params ) . promise ( ) ;
await sendEmailPromise ;
}
const getEmailHTML = ( realestateRequest ) => {
2019-06-11 10:26:48 +02:00
const realEstateType = getRealEstateTypeEnum ( realestateRequest . realEstateType ) ;
const gardenSize = realEstateType . hasGardenSize ? ` <div><strong>Kvadratura okućnice: Od ${ realestateRequest . gardenSizeMin } do ${ realestateRequest . gardenSizeMax } m2 </strong></div> ` : ` `
2019-06-03 10:34:59 +02:00
return ` <h1> Zdravo,
Naručio / la si da ti javimo ako se nekretnina pojavi u oglasima . < / h 1 >
< h2 > Ovo je tražena nekretnina : < / h 2 >
< div >
2019-06-11 10:26:48 +02:00
< div > < strong > Tip nekretnine : $ { realEstateType . title } < / s t r o n g > < / d i v >
< div > < strong > Područje : $ { getRegionName ( realestateRequest . region ) } < / s t r o n g > < / d i v >
< div > < strong > Mjesto : $ { getMunicipalityName ( realestateRequest . region , realestateRequest . municipality ) } < / s t r o n g > < / d i v >
< div > < strong > Kvadratura nekretnine : Od $ { realestateRequest . sizeMin } do $ { realestateRequest . sizeMax } m2 < / s t r o n g > < / d i v >
$ { gardenSize }
< div > < strong > Cijena : $ { realestateRequest . priceMin } do $ { realestateRequest . priceMax } KM < / s t r o n g > < / d i v >
< / d i v >
< div >
2019-06-03 10:34:59 +02:00
< / d i v >
< div > < strong > Ako želis prestati dobijati obavještenja za ovu pretragu klikni $ { process . env . APP _URL } / odjava / $ { realestateRequest . uniqueId } < / s t r o n g > < / d i v >
< div > < strong > Ako želiš promijeniti uslove pretrage klikni $ { process . env . APP _URL } / pregled / $ { realestateRequest . uniqueId } < / s t r o n g > < / d i v >
< h4 > Tvoj ,
Javimi tim .
< / h 4 > `
}
const getEmaiTextVersion = ( realestateRequest ) => {
2019-06-11 10:26:48 +02:00
const realEstateType = getRealEstateTypeEnum ( realestateRequest . realEstateType ) ;
2019-06-27 17:29:57 +02:00
const gardenSize = realEstateType . hasGardenSize ? "Kvadratura okućnice od " + realestateRequest . gardenSizeMin + " do " + realestateRequest . gardenSizeMax : ""
2019-06-11 10:26:48 +02:00
2019-06-03 10:34:59 +02:00
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 +
2019-06-11 10:26:48 +02:00
+ gardenSize
2019-06-27 17:29:57 +02:00
"\n Cijena od " + realestateRequest . priceMin + " do " + realestateRequest . priceMax +
2019-06-03 10:34:59 +02:00
"\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"
return text ;
}
2019-06-27 17:29:57 +02:00
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 : "<h1>Hello </h1><p>Your favorite animal is {{marketAlertUrl}}.</p>"
}
}
try {
const templatePromise = new AWS . SES ( { apiVersion : '2010-12-01' } ) . createTemplate ( marketAlertTemplate ) . promise ( ) ;
await templatePromise
} catch ( e ) {
console . log ( "Could not create MarketAlertEmailTemplate" , e ) ;
}
}
2019-06-03 10:34:59 +02:00
module . exports = {
2019-06-27 17:29:57 +02:00
sendTemplatedEmail ,
sendBulkEmail ,
createMarketAlertEmailTemplate
2019-06-03 10:34:59 +02:00
} ;