const { currentSearchRequest } = require("../helpers/url"); const { isValidEmail } = require("../helpers/email"); const { notifyForNewSearchRequest } = require("../services/notificationService"); const { AD_CATEGORY } = require("../common/enums"); const getQueryReviewData = searchRequest => { const { id, realEstateType, sizeMin, sizeMax, gardenSizeMin, gardenSizeMax, priceMin, priceMax } = searchRequest.dataValues; const realEstateTypeObject = AD_CATEGORY[realEstateType]; const enableGardenSizeEdit = realEstateTypeObject ? realEstateTypeObject.hasGardenSize : false; const realEstateTypeTitle = realEstateTypeObject ? realEstateTypeObject.title : "-"; const locationTitle = "Location description - PLACEHOLDER"; const sizeTitle = `${sizeMin} - ${sizeMax} m2`; const gardenSizeTitle = enableGardenSizeEdit ? `${gardenSizeMin} - ${gardenSizeMax} m2` : "-"; const priceTitle = `${priceMin} - ${priceMax} KM`; return [ { id: "realEstateType", title: realEstateTypeTitle, url: `/vrstanekretnine/${id}?nextStep=filteri` }, // { // id: "location", // title: locationTitle, // url: `/lokacija/${id}?nextStep=pregled` // }, { id: "size", title: sizeTitle, url: `/filteri/${id}?nextStep=pregled` }, { id: "gardenSize", title: gardenSizeTitle, url: enableGardenSizeEdit ? `/filteri/${id}?nextStep=pregled` : "" }, { id: "price", title: priceTitle, url: `/filteri/${id}?nextStep=pregled` } ]; }; const getQueryReview = async (req, res) => { const searchRequest = await currentSearchRequest(req); if (!searchRequest || !searchRequest.dataValues) { res.render("notFound", { title: " " }); return; } const title = "Da li je ovo to što ste tražili ?"; const nextStep = req.query.nextStep; const error = req.query.error; const queryReviewData = getQueryReviewData(searchRequest); const email = searchRequest.email; res.render("queryReview", { nextStep, queryReviewData, title, email, error }); }; const postQueryReview = async (req, res) => { const searchRequest = await currentSearchRequest(req); if (!searchRequest || !searchRequest.dataValues) { return null; } const nextStep = req.query.nextStep || "/ponovo"; const emailInput = req.body.email; const emailConfirmInput = req.body.confirmEmail; const title = "Da li je ovo to što ste tražili ?"; const queryReviewData = getQueryReviewData(searchRequest); if (emailInput !== emailConfirmInput) { const error = "Greška ! Unešeni emailovi nisu isti"; res.render("queryReview", { error, title, queryReviewData, email: "" }); return; } if (!isValidEmail(emailInput)) { const error = "Greška ! Unesite validan email"; res.render("queryReview", { error, title, queryReviewData, email: "" }); return; } searchRequest.email = emailInput; searchRequest.subscribed = true; await searchRequest.save(); await notifyForNewSearchRequest(searchRequest); res.redirect(nextStep); }; module.exports = { getQueryReview, postQueryReview };