add query review page

This commit is contained in:
Bilal Catic
2019-05-19 12:29:55 +02:00
parent 2c415bbd79
commit 70ddc1f734
6 changed files with 152 additions and 9 deletions

View File

@@ -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 = {

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

View File

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

View File

@@ -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
View 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>

View File

@@ -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'));