add query review page
This commit is contained in:
@@ -11,9 +11,10 @@ const getPrice = (req,res) => {
|
|||||||
|
|
||||||
const postPrice = async (req, res) => {
|
const postPrice = async (req, res) => {
|
||||||
const request = await currentRERequest(req);
|
const request = await currentRERequest(req);
|
||||||
|
const nextStep = req.query.nextStep || `/pregled/${request.uniqueId}`;
|
||||||
request.price = req.body.price;
|
request.price = req.body.price;
|
||||||
await request.save();
|
await request.save();
|
||||||
res.send("Result is " + JSON.stringify(request));
|
res.redirect(nextStep);
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|||||||
72
app/controllers/queryReview.js
Normal file
72
app/controllers/queryReview.js
Normal file
@@ -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
|
||||||
|
};
|
||||||
@@ -876,16 +876,37 @@ const getRegions = () => {
|
|||||||
return regions.map( (g) => ({ name: g.name, id: g.id, olxid: g.olxid }) );
|
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) => {
|
const getMunicipalitiesForRegion = (regionId) => {
|
||||||
for (geo of regions) {
|
const region = getRegion(regionId);
|
||||||
if(geo.id === regionId) {
|
return (region && region.municipalities) ? region.municipalities : null;
|
||||||
return geo.municipalities;
|
};
|
||||||
}
|
|
||||||
}
|
const getMunicipalityName = (regionId, municipalityId) => {
|
||||||
return null;
|
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 = {
|
module.exports = {
|
||||||
getRegions,
|
getRegions,
|
||||||
getMunicipalitiesForRegion
|
getRegionName,
|
||||||
|
getMunicipalitiesForRegion,
|
||||||
|
getMunicipalityName,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -31,9 +31,18 @@ const prices = [
|
|||||||
{ title: "preko 250 000 KM", id: "moreThan250kKM" }
|
{ 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 = {
|
module.exports = {
|
||||||
realEstateTypes,
|
realEstateTypes,
|
||||||
sizes,
|
sizes,
|
||||||
gardenSizes,
|
gardenSizes,
|
||||||
prices
|
prices,
|
||||||
|
getEnumTypeTitle,
|
||||||
};
|
};
|
||||||
|
|||||||
36
app/views/queryReview.ejs
Normal file
36
app/views/queryReview.ejs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<!--suppress HtmlUnknownAnchorTarget -->
|
||||||
|
<div class="row center-align">
|
||||||
|
<h2>Da li je ovo to što ste tražili ?</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form method="POST" id="form-queryreview">
|
||||||
|
<div class="row center-align">
|
||||||
|
<ul class="collection with-header">
|
||||||
|
<% for(const stepData of queryData) { %>
|
||||||
|
<li class="collection-item" >
|
||||||
|
<div id="<%= stepData.id %>" ><%= stepData.title || '-' %>
|
||||||
|
<a href="<%= stepData.url %>" class="secondary-content">
|
||||||
|
<i class="material-icons">edit</i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<% } %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s6 push-s3">
|
||||||
|
<a id="submit" href="#" class="welcome-center-button waves-effect waves-light btn">
|
||||||
|
To je to
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready( () => {
|
||||||
|
$("#submit").click( () => {
|
||||||
|
$("#form-queryreview").submit();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
4
index.js
4
index.js
@@ -5,6 +5,7 @@ const { getMunicipality, postMunicipality } = require('./app/controllers/municip
|
|||||||
const { getSize, postSize } = require('./app/controllers/sizes');
|
const { getSize, postSize } = require('./app/controllers/sizes');
|
||||||
const { getGardenSize, postGardenSize } = require('./app/controllers/gardenSizes');
|
const { getGardenSize, postGardenSize } = require('./app/controllers/gardenSizes');
|
||||||
const { getPrice, postPrice } = require('./app/controllers/prices');
|
const { getPrice, postPrice } = require('./app/controllers/prices');
|
||||||
|
const { getQueryReview, postQueryReview } = require('./app/controllers/queryReview');
|
||||||
|
|
||||||
let express = require("express");
|
let express = require("express");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
@@ -133,6 +134,9 @@ app.post('/okucnica/:request_id', postGardenSize);
|
|||||||
app.get('/cijena/:request_id', getPrice);
|
app.get('/cijena/:request_id', getPrice);
|
||||||
app.post('/cijena/:request_id', postPrice);
|
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'));
|
app.use('/assets', express.static('./app/public'));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user