move all filters to one page
This commit is contained in:
83
app/controllers/realEstateFilters.js
Normal file
83
app/controllers/realEstateFilters.js
Normal file
@@ -0,0 +1,83 @@
|
||||
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
|
||||
};
|
||||
Reference in New Issue
Block a user