diff --git a/.gitignore b/.gitignore index c2658d7..713d500 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ node_modules/ +.env diff --git a/app/controllers/gardenSizes.js b/app/controllers/gardenSizes.js index 23b7be9..5ba8ab5 100644 --- a/app/controllers/gardenSizes.js +++ b/app/controllers/gardenSizes.js @@ -2,6 +2,8 @@ const { currentRERequest } = require('../helpers/url'); const { getRealEstateTypeEnum } = require('../helpers/enums'); const getGardenSize = (req,res) => { + + const unit = " m2" const rangeFrom = { min : 10, max : 3000, @@ -15,7 +17,8 @@ const getGardenSize = (req,res) => { value : 100, step : 10 } - res.render('gardenSize', { rangeFrom, rangeTo }); + + res.render('gardenSize', { rangeFrom, rangeTo, unit }); }; const postGardenSize = async (req, res) => { diff --git a/app/controllers/prices.js b/app/controllers/prices.js index b6a1270..1c027ca 100644 --- a/app/controllers/prices.js +++ b/app/controllers/prices.js @@ -1,6 +1,8 @@ const { currentRERequest } = require('../helpers/url'); const getPrice = (req,res) => { + + const unit = " KM" const rangeFrom = { min : 1000, max : 250000, @@ -16,7 +18,7 @@ const getPrice = (req,res) => { } - res.render('price', {rangeFrom, rangeTo }); + res.render('price', {rangeFrom, rangeTo, unit }); }; const postPrice = async (req, res) => { diff --git a/app/controllers/querySubmit.js b/app/controllers/querySubmit.js index 27d1771..f73fa1f 100644 --- a/app/controllers/querySubmit.js +++ b/app/controllers/querySubmit.js @@ -1,5 +1,6 @@ const { currentRERequest } = require('../helpers/url'); const { isValidEmail } = require('../helpers/email'); +const { sendTemplatedEmail} = require('../helpers/awsEmail'); const getQuerySubmit = async (req, res) => { const nextStep = req.query.nextStep; @@ -38,7 +39,9 @@ const postQuerySubmit = async (req, res) => { } request.email = req.body.email; + request.subscribed = true; await request.save(); + sendTemplatedEmail(req.body.email, request); res.redirect(nextStep); }; diff --git a/app/controllers/sizes.js b/app/controllers/sizes.js index 63325e0..597064d 100644 --- a/app/controllers/sizes.js +++ b/app/controllers/sizes.js @@ -2,6 +2,8 @@ const { currentRERequest } = require('../helpers/url'); const { sizes, getRealEstateTypeEnum } = require('../helpers/enums'); const getSize = (req,res) => { + + const unit = " m2" const rangeFrom = { min : 10, max : 250, @@ -16,7 +18,7 @@ const getSize = (req,res) => { step : 10 } - res.render('size', { rangeFrom, rangeTo }); + res.render('size', { rangeFrom, rangeTo, unit }); }; const postSize = async (req, res) => { diff --git a/app/controllers/unsubscribe.js b/app/controllers/unsubscribe.js new file mode 100644 index 0000000..423f379 --- /dev/null +++ b/app/controllers/unsubscribe.js @@ -0,0 +1,15 @@ + +const { currentRERequest } = require('../helpers/url'); + +const getUnsubscribe = async (req, res) => { + const request = await currentRERequest(req); + request.subscribed = false; + await request.save(); + + res.render('unsubscribe', { nextStep: '/vrstanekretnine' }); +}; + + +module.exports = { + getUnsubscribe +}; \ No newline at end of file diff --git a/app/helpers/awsEmail.js b/app/helpers/awsEmail.js new file mode 100644 index 0000000..f0f01e6 --- /dev/null +++ b/app/helpers/awsEmail.js @@ -0,0 +1,96 @@ + +const dotenv = require('dotenv'); +dotenv.config(); +const { getRealEstateTypeEnum } = require('./enums'); +const { getRegionName, getMunicipalityName } = require('./codes'); +const AWS = require('aws-sdk'); +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)}` + } + }, + Source: process.env.SOURCE_EMAIL, /* required */ + ReplyToAddresses: [ + process.env.SOURCE_EMAIL, + ], + }; + + const sendEmailPromise = new AWS.SES({ apiVersion: '2010-12-01' }).sendEmail(params).promise(); + await sendEmailPromise; +} + +const getEmailHTML = (realestateRequest) => { + const realEstateType = getRealEstateTypeEnum(realestateRequest.realEstateType); + const gardenSize = realEstateType.hasGardenSize ? `