diff --git a/app/controllers/prices.js b/app/controllers/prices.js index 1d8fcb9..58127bf 100644 --- a/app/controllers/prices.js +++ b/app/controllers/prices.js @@ -11,9 +11,10 @@ const getPrice = (req,res) => { const postPrice = async (req, res) => { const request = await currentRERequest(req); + const nextStep = req.query.nextStep || `/pregled/${request.uniqueId}`; request.price = req.body.price; await request.save(); - res.send("Result is " + JSON.stringify(request)); + res.redirect(nextStep); }; module.exports = { diff --git a/app/controllers/queryReview.js b/app/controllers/queryReview.js new file mode 100644 index 0000000..71d234e --- /dev/null +++ b/app/controllers/queryReview.js @@ -0,0 +1,72 @@ +const { currentRERequest } = require('../helpers/url'); +const { getRegionName, getMunicipalityName } = require('../helpers/codes'); +const { realEstateTypes, sizes, gardenSizes, prices, getEnumTypeTitle } = require('../helpers/enums'); + +const getQueryReview = async (req,res) => { + const request = await currentRERequest(req); + const nextStep = req.query.nextStep; + + if (!request || !request.dataValues) { + return null; + } + + const { realEstateType, region, municipality, size, gardenSize, price } = request.dataValues; + + const realEstateTypeTitle = realEstateType ? getEnumTypeTitle(realEstateTypes, realEstateType) : null; + const regionName = region ? getRegionName(region) : null; + const municipalityName = (region && municipality) ? getMunicipalityName(region, municipality) : null; + const sizeTitle = size ? getEnumTypeTitle(sizes, size) : null; + const gardenSizeTitle = gardenSize ? getEnumTypeTitle(gardenSizes, gardenSize) : null; + const priceTitle = price ? getEnumTypeTitle(prices, price) : null; + + const uniqueId = request.dataValues.uniqueId ? request.dataValues.uniqueId : ''; + + const queryData = [ + { + id: 'realEstateType', + title: realEstateTypeTitle, + url: `/vrstanekretnine/${uniqueId}`, + }, + { + id: 'region', + title: regionName, + url: `/region/${uniqueId}`, + }, + { + id: 'municipality', + title: municipalityName, + url: `/mjesto/${uniqueId}`, + }, + { + id: 'size', + title: sizeTitle, + url: `/povrsina/${uniqueId}`, + }, + { + id: 'gardenSize', + title: gardenSizeTitle, + url: `/okucnica/${uniqueId}`, + }, + { + id: 'price', + title: priceTitle, + url: `/cijena/${uniqueId}` + } + ]; + + res.render('queryReview', { + nextStep, + queryData, + }); +}; + +const postQueryReview = async (req, res) => { + const request = await currentRERequest(req); + await request.save(); + res.send("Result is " + JSON.stringify(request)); +}; + +module.exports = { + getQueryReview, + postQueryReview +}; diff --git a/app/helpers/codes.js b/app/helpers/codes.js index 53272d0..5ec86cd 100644 --- a/app/helpers/codes.js +++ b/app/helpers/codes.js @@ -876,16 +876,37 @@ const getRegions = () => { return regions.map( (g) => ({ name: g.name, id: g.id, olxid: g.olxid }) ); }; +const getRegion = (regionId) => { + return regions.find(region => region.id === regionId); +}; + +const getRegionName = (regionId) => { + const region = getRegion(regionId); + return (region && region.name) ? region.name : null; +}; + const getMunicipalitiesForRegion = (regionId) => { - for (geo of regions) { - if(geo.id === regionId) { - return geo.municipalities; - } - } - return null; + const region = getRegion(regionId); + return (region && region.municipalities) ? region.municipalities : null; +}; + +const getMunicipalityName = (regionId, municipalityId) => { + const region = getRegion(regionId); + if (!region){ + return null; + } + + const municipality = region.municipalities.find(municipality => municipality.id === municipalityId); + if (!municipality) { + return null; + } + + return municipality.name; }; module.exports = { getRegions, - getMunicipalitiesForRegion + getRegionName, + getMunicipalitiesForRegion, + getMunicipalityName, }; diff --git a/app/helpers/enums.js b/app/helpers/enums.js index b4d5da2..738e222 100644 --- a/app/helpers/enums.js +++ b/app/helpers/enums.js @@ -31,9 +31,18 @@ const prices = [ { title: "preko 250 000 KM", id: "moreThan250kKM" } ]; +const getEnumTypeTitle = (enumType, enumId) => { + const enumObject = enumType.find(enumValue => enumValue.id === enumId); + if (!enumObject){ + return null; + } + return enumObject.title; +}; + module.exports = { realEstateTypes, sizes, gardenSizes, - prices + prices, + getEnumTypeTitle, }; diff --git a/app/views/queryReview.ejs b/app/views/queryReview.ejs new file mode 100644 index 0000000..b81c9ff --- /dev/null +++ b/app/views/queryReview.ejs @@ -0,0 +1,36 @@ + +
+

Da li je ovo to što ste tražili ?

+
+ +
+
+ +
+
+ +
+
+ + + diff --git a/index.js b/index.js index bbeb5e4..82bf4df 100644 --- a/index.js +++ b/index.js @@ -5,6 +5,7 @@ const { getMunicipality, postMunicipality } = require('./app/controllers/municip const { getSize, postSize } = require('./app/controllers/sizes'); const { getGardenSize, postGardenSize } = require('./app/controllers/gardenSizes'); const { getPrice, postPrice } = require('./app/controllers/prices'); +const { getQueryReview, postQueryReview } = require('./app/controllers/queryReview'); let express = require("express"); const path = require("path"); @@ -133,6 +134,9 @@ app.post('/okucnica/:request_id', postGardenSize); app.get('/cijena/:request_id', getPrice); app.post('/cijena/:request_id', postPrice); +app.get('/pregled/:request_id', getQueryReview); +app.post('/pregled/:request_id', postQueryReview); + app.use('/assets', express.static('./app/public'));