diff --git a/app/helpers/emailContentGenerator.js b/app/helpers/emailContentGenerator.js index 2236d02..5f915eb 100644 --- a/app/helpers/emailContentGenerator.js +++ b/app/helpers/emailContentGenerator.js @@ -7,7 +7,7 @@ const generateEmailFooter = searchRequestId => { return `
Ako želite prestati dobijati obavještenja za ovu pretragu, odjavite ovdje
Ako želite pogledati ili promijeniti uslove za ovu pretragu, pogledajte ovdje

- Vaš,
Javimi tim
`; + Vaš,
Kivi tim
`; }; const generateRealEstateLinks = realEstates => { @@ -82,7 +82,32 @@ const generateNewSearchRequestEmail = (searchRequest, matchingRealEstates) => { ${emailFooter}`; }; +const generateEmailSubject = (numberOfRealEstates, singleRealEstateTitle) => { + if (numberOfRealEstates === 1) { + return `Kivi: ${singleRealEstateTitle}`; + } + + const leastSignificantDigit = numberOfRealEstates % 10; + const numberWithoutLastDigit = Math.floor(numberOfRealEstates / 10); + const secondLeastSignificantDigit = numberWithoutLastDigit % 10; + + if (leastSignificantDigit === 1 && secondLeastSignificantDigit !== 1) { + return `Kivi : ${numberOfRealEstates} nova nekretnina`; + } + + if ( + leastSignificantDigit >= 2 && + leastSignificantDigit <= 4 && + secondLeastSignificantDigit !== 1 + ) { + return `Kivi: ${numberOfRealEstates} nove nekretnine`; + } + + return `Kivi: ${numberOfRealEstates} novih nekretnina`; +}; + module.exports = { generateNotificationEmail, - generateNewSearchRequestEmail + generateNewSearchRequestEmail, + generateEmailSubject }; diff --git a/app/services/notificationService.js b/app/services/notificationService.js index c81dbcc..7a6c2d5 100644 --- a/app/services/notificationService.js +++ b/app/services/notificationService.js @@ -5,7 +5,8 @@ const { } = require("../services/searchMatchService"); const { generateNotificationEmail, - generateNewSearchRequestEmail + generateNewSearchRequestEmail, + generateEmailSubject } = require("../helpers/emailContentGenerator"); const { sendEmail } = require("../services/emailService"); @@ -25,7 +26,7 @@ const notifyForNewSearchRequest = async searchRequest => { matchingRealEstates ); const { email } = searchRequest; - await sendEmail(email, "Market Alert", emailContent); + await sendEmail(email, "Kivi - novi zahtjev za pretragu", emailContent); }; const notifyMatches = async matches => { @@ -36,11 +37,20 @@ const notifyMatches = async matches => { const { searchRequest } = matches[id]; const { email } = searchRequest; const allMatchingRealEstates = matches[id].realEstates || []; - const emailContent = generateNotificationEmail(allMatchingRealEstates, id); + if (allMatchingRealEstates.length > 0) { + const emailContent = generateNotificationEmail( + allMatchingRealEstates, + id + ); + const emailSubject = generateEmailSubject( + allMatchingRealEstates.length, + allMatchingRealEstates[0].title + ); - const sendEmailPromise = sendEmail(email, "Nove nekretnine", emailContent); - asyncSendEmailActions.push(sendEmailPromise); - sendEmailPromise.catch(err => console.log("[Email Sending Failed]", err)); + const sendEmailPromise = sendEmail(email, emailSubject, emailContent); + asyncSendEmailActions.push(sendEmailPromise); + sendEmailPromise.catch(err => console.log("[Email Sending Failed]", err)); + } } await Promise.all(asyncSendEmailActions); diff --git a/test/searchTest.js b/test/searchTest.js index ecb705a..3758e1e 100644 --- a/test/searchTest.js +++ b/test/searchTest.js @@ -4,21 +4,8 @@ const { } = require("../app/services/notificationService"); (async () => { - const realEstate1 = await getRealEstateById(53069); //B.Luka, 149.000 KM, 67m2 - const realEstate2 = await getRealEstateById(53180); //B.Luka, 70.000 KM, 24m2 + const realEstate1 = await getRealEstateById(83985); + const realEstate2 = await getRealEstateById(83984); - const realEstate3 = await getRealEstateById(53067); //Grbavica, 109.500 KM, 51m2 - const realEstate4 = await getRealEstateById(53077); //alipašino, 66.000 KM, 32.58 m2 - - const realEstate5 = await getRealEstateById(53080); //Tuzla, - KM, 47,1 m2 - const realEstate6 = await getRealEstateById(53646); //Tuzla, 73.500 KM, 53m2 - - notifyForNewRealEstates([ - realEstate1, - realEstate2, - realEstate3, - realEstate4, - realEstate5, - realEstate6 - ]); + notifyForNewRealEstates([realEstate1]); })();