84 lines
2.2 KiB
JavaScript
84 lines
2.2 KiB
JavaScript
const { currentSearchRequest } = require("../helpers/url");
|
|
const { AD_CATEGORY } = require("../common/enums");
|
|
|
|
const getFilters = async (req, res) => {
|
|
const searchRequest = await currentSearchRequest(req);
|
|
const title = "Filteri za pretraživanje";
|
|
|
|
const {
|
|
realEstateType,
|
|
priceMin,
|
|
priceMax,
|
|
sizeMin,
|
|
sizeMax,
|
|
gardenSizeMin,
|
|
gardenSizeMax
|
|
} = searchRequest;
|
|
const category = AD_CATEGORY[realEstateType] || AD_CATEGORY.FLAT;
|
|
|
|
const {
|
|
hasGardenSize,
|
|
priceSliderOptions,
|
|
sizeSliderOptions,
|
|
gardenSizeSliderOptions
|
|
} = category;
|
|
|
|
if (priceMin && priceMax) {
|
|
priceSliderOptions.start = [priceMin, priceMax];
|
|
}
|
|
|
|
if (sizeMin && sizeMax) {
|
|
sizeSliderOptions.start = [sizeMin, sizeMax];
|
|
}
|
|
|
|
if (gardenSizeSliderOptions && gardenSizeMin && gardenSizeMax) {
|
|
gardenSizeSliderOptions.start = [gardenSizeMin, gardenSizeMax];
|
|
}
|
|
|
|
res.render("realEstateFilters", {
|
|
title,
|
|
hasGardenSize,
|
|
priceSliderOptions: JSON.stringify(priceSliderOptions),
|
|
sizeSliderOptions: JSON.stringify(sizeSliderOptions),
|
|
gardenSizeSliderOptions: JSON.stringify(gardenSizeSliderOptions)
|
|
});
|
|
};
|
|
|
|
const postFilters = async (req, res) => {
|
|
const searchRequest = await currentSearchRequest(req);
|
|
|
|
const nextStepPage = req.query.nextStep || "pregled";
|
|
const nextStepUrl = `/${nextStepPage}/${searchRequest.id}`;
|
|
|
|
const priceMin = parseInt(req.body.priceFilterMin) || 0;
|
|
const priceMax = parseInt(req.body.priceFilterMax) || 0;
|
|
const sizeMin = parseInt(req.body.sizeFilterMin) || 0;
|
|
const sizeMax = parseInt(req.body.sizeFilterMax) || 0;
|
|
|
|
//TODO: Filter validation
|
|
|
|
searchRequest.priceMin = priceMin;
|
|
searchRequest.priceMax = priceMax;
|
|
searchRequest.sizeMin = sizeMin;
|
|
searchRequest.sizeMax = sizeMax;
|
|
|
|
if (req.body.gardenSizeFilterMin && req.body.gardenSizeFilterMax) {
|
|
const gardenSizeMin = parseInt(req.body.gardenSizeFilterMin);
|
|
const gardenSizeMax = parseInt(req.body.gardenSizeFilterMax);
|
|
|
|
//TODO: Filter validation
|
|
|
|
searchRequest.gardenSizeMin = gardenSizeMin;
|
|
searchRequest.gardenSizeMax = gardenSizeMax;
|
|
}
|
|
|
|
await searchRequest.save();
|
|
|
|
res.redirect(nextStepUrl);
|
|
};
|
|
|
|
module.exports = {
|
|
getFilters,
|
|
postFilters
|
|
};
|