Files
old-web/app/controllers/queryReview.js

133 lines
3.1 KiB
JavaScript
Raw Normal View History

const { currentSearchRequest } = require("../helpers/url");
2019-10-08 20:42:43 +02:00
const { isValidEmail } = require("../helpers/email");
const {
notifyForNewSearchRequest
} = require("../services/notificationService");
const { AD_CATEGORY } = require("../common/enums");
2019-05-19 12:29:55 +02:00
2019-10-08 20:42:43 +02:00
const getQueryReviewData = searchRequest => {
2019-09-05 11:14:54 +02:00
const {
id,
2019-09-05 11:14:54 +02:00
realEstateType,
sizeMin,
sizeMax,
gardenSizeMin,
gardenSizeMax,
priceMin,
priceMax
} = searchRequest.dataValues;
2019-05-19 12:29:55 +02:00
const realEstateTypeObject = AD_CATEGORY[realEstateType];
2019-09-05 11:14:54 +02:00
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`;
2019-10-08 20:42:43 +02:00
return [
2019-05-19 12:29:55 +02:00
{
2019-09-05 11:14:54 +02:00
id: "realEstateType",
2019-05-19 12:29:55 +02:00
title: realEstateTypeTitle,
url: `/vrstanekretnine/${id}?nextStep=pregled`
2019-05-19 12:29:55 +02:00
},
{
id: "location",
title: locationTitle,
url: `/lokacija/${id}?nextStep=pregled`
2019-05-19 12:29:55 +02:00
},
{
2019-09-05 11:14:54 +02:00
id: "size",
2019-05-19 12:29:55 +02:00
title: sizeTitle,
2019-10-11 15:37:47 +02:00
url: `/filteri/${id}?nextStep=pregled`
2019-05-19 12:29:55 +02:00
},
{
2019-09-05 11:14:54 +02:00
id: "gardenSize",
2019-05-19 12:29:55 +02:00
title: gardenSizeTitle,
2019-10-11 15:37:47 +02:00
url: enableGardenSizeEdit ? `/filteri/${id}?nextStep=pregled` : ""
2019-05-19 12:29:55 +02:00
},
{
2019-09-05 11:14:54 +02:00
id: "price",
2019-05-19 12:29:55 +02:00
title: priceTitle,
2019-10-11 15:37:47 +02:00
url: `/filteri/${id}?nextStep=pregled`
2019-05-19 12:29:55 +02:00
}
];
2019-10-08 20:42:43 +02:00
};
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);
const email = searchRequest.email;
2019-05-19 12:29:55 +02:00
2019-09-05 11:14:54 +02:00
res.render("queryReview", {
2019-05-19 12:29:55 +02:00
nextStep,
queryReviewData,
2019-10-08 20:42:43 +02:00
title,
email,
2019-10-08 20:42:43 +02:00
error
2019-05-19 12:29:55 +02:00
});
};
const postQueryReview = async (req, res) => {
const searchRequest = await currentSearchRequest(req);
2019-10-08 20:42:43 +02:00
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);
2019-05-19 13:34:44 +02:00
res.redirect(nextStep);
2019-05-19 12:29:55 +02:00
};
module.exports = {
getQueryReview,
postQueryReview
};