"use strict"; const { MAX_REAL_ESTATES_IN_EMAIL, APP_URL } = require("../config/appConfig"); const { AD_CATEGORY, AD_TYPE, EMAIL_FREQUENCY } = require("../common/enums"); const generateEmailFooter = (searchRequestId, emailFrequencyTitle) => { return `
Trenutno ste prijavljeni da obavještenja o novim nekretninama primate ${emailFrequencyTitle.toLowerCase()} .
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 emailFrequencyTitle = dailyNotification ? EMAIL_FREQUENCY.DAILY.title : EMAIL_FREQUENCY.ASAP.title; const realEstateLinks = generateRealEstateLinks(realEstatesToShow); const moreRealEstates = `
    Kompletan spisak nekretnina (${noAllRealEstates}) možete pogledati na listi nekretnina
    `; const emailFooter = generateEmailFooter(searchRequestId, emailFrequencyTitle); 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]; let adTypeTitle = ""; switch (searchRequest.adType) { case AD_TYPE.AD_TYPE_SALE.stringId: adTypeTitle = AD_TYPE.AD_TYPE_SALE.title; break; case AD_TYPE.AD_TYPE_RENT.stringId: adTypeTitle = AD_TYPE.AD_TYPE_RENT.title; break; default: adTypeTitle = "-"; break; } let emailFrequencyTitle; switch (searchRequest.emailFrequency) { case EMAIL_FREQUENCY.ASAP.stringId: emailFrequencyTitle = EMAIL_FREQUENCY.ASAP.title; break; case EMAIL_FREQUENCY.DAILY.stringId: emailFrequencyTitle = EMAIL_FREQUENCY.DAILY.title; break; } 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, emailFrequencyTitle); return `

    Zdravo

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

    Tip nekretnine: ${realEstateType.title}
    Vrsta oglasa: ${adTypeTitle}
    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 };