"use strict"; const { MAX_REAL_ESTATES_IN_EMAIL, APP_URL } = require("../config/appConfig"); const { AD_CATEGORY } = require("../common/enums"); 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š,
Kivi tim
`; }; const generateRealEstateLinks = realEstates => { let realEstateLinks = ""; for (const realEstate of realEstates) { const { id: realEstateId, title } = realEstate; realEstateLinks += `
  • ${title}
  • `; } return realEstateLinks; }; const generateNotificationEmail = ( realEstates, searchRequestId, noAllRealEstates, dailyNotification = false ) => { const truncateList = realEstates.length > MAX_REAL_ESTATES_IN_EMAIL; const realEstatesToShow = truncateList ? realEstates.slice(0, MAX_REAL_ESTATES_IN_EMAIL) : realEstates; const allRealEstatesLink = `${APP_URL}/nekretnine/${searchRequestId}`; const realEstateLinks = generateRealEstateLinks(realEstatesToShow); const moreRealEstates = `
    Kompletan spisak nekretnina (${noAllRealEstates}) možete pogledati na listi nekretnina
    `; const emailFooter = generateEmailFooter(searchRequestId); const asapMessageBody = realEstates.length > 1 ? "Pronašli smo nekretnine koje odgovaraju Vašoj pretrazi" : "Pronašli smo nekretninu koja odgovara Vašoj pretrazi"; const dailyMessageBody = realEstates.length > 1 ? "U posljednja 24h objavljene su sljedeće nekretnine koje odgovaraju uslovima Vaše pretrage" : "U posljednja 24h objavljena je sljedeća nekretnina koja odgovara uslovima Vaše pretrage"; const messageBody = dailyNotification ? dailyMessageBody : asapMessageBody; return `

    Zdravo

    ${messageBody}

    ${realEstateLinks}
    ${moreRealEstates}

    ${emailFooter}`; }; const generateNewSearchRequestEmail = (searchRequest, matchingRealEstates) => { const realEstateType = AD_CATEGORY[searchRequest.realEstateType]; const { id, gardenSizeMin, gardenSizeMax, sizeMin, sizeMax, priceMin, priceMax } = searchRequest; const realEstateLinks = generateRealEstateLinks(matchingRealEstates); const instantRealEstatesText = `
    U međuvremenu pogledajte neke od nedavno objavljenih nekretnina koje odgovaraju Vašim uslovima pretrage :
    ${realEstateLinks}
    `; const gardenSize = realEstateType.hasGardenSize ? `
    Kvadratura okućnice: Od ${gardenSizeMin} do ${gardenSizeMax} m2
    ` : ``; const emailFooter = generateEmailFooter(id); return `

    Zdravo

    Naručili ste da Vam javimo ako se nekretnina sa navedenim uslovima pojavi u oglasima:

    Tip nekretnine: ${realEstateType.title}
    Kvadratura nekretnine: Od ${sizeMin} do ${sizeMax} m2
    ${gardenSize}
    Cijena: ${priceMin} do ${priceMax} KM
    ${matchingRealEstates.length > 0 ? instantRealEstatesText : ""}
    ${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, generateEmailSubject };