add query review page
This commit is contained in:
@@ -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 = {
|
||||
|
||||
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 }) );
|
||||
};
|
||||
|
||||
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,
|
||||
};
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
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 { 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'));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user