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 };