131 lines
3.1 KiB
JavaScript
131 lines
3.1 KiB
JavaScript
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=pregled`
|
|
},
|
|
{
|
|
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) {
|
|
return null;
|
|
}
|
|
|
|
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);
|
|
|
|
res.render("queryReview", {
|
|
nextStep,
|
|
queryReviewData,
|
|
title,
|
|
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
|
|
});
|
|
return;
|
|
}
|
|
|
|
if (!isValidEmail(emailInput)) {
|
|
const error = "Greška ! Unesite validan email";
|
|
res.render("queryReview", {
|
|
error,
|
|
title,
|
|
queryReviewData
|
|
});
|
|
return;
|
|
}
|
|
|
|
searchRequest.email = emailInput;
|
|
searchRequest.subscribed = true;
|
|
await searchRequest.save();
|
|
|
|
await notifyForNewSearchRequest(searchRequest);
|
|
|
|
res.redirect(nextStep);
|
|
};
|
|
|
|
module.exports = {
|
|
getQueryReview,
|
|
postQueryReview
|
|
};
|