From 17492eb52ce0db163344a067bbfd2a065ba06510 Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Sat, 27 Apr 2019 07:08:36 +0200 Subject: [PATCH] City is now saved --- app/controllers/grad.js | 41 +++++++++++++++++++ app/controllers/vrsta_nekretnine.js | 8 +++- app/helpers/url.js | 14 +++++++ ...7043621-add_city_to_real_estate_request.js | 18 ++++++++ app/models/realestaterequest.js | 3 +- app/views/grad.ejs | 25 +++++++++++ index.js | 11 ++++- 7 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 app/helpers/url.js create mode 100644 app/migrations/20190427043621-add_city_to_real_estate_request.js create mode 100644 app/views/grad.ejs diff --git a/app/controllers/grad.js b/app/controllers/grad.js index e69de29..74f9226 100644 --- a/app/controllers/grad.js +++ b/app/controllers/grad.js @@ -0,0 +1,41 @@ +const db = require('../models/index'); +const { currentRERequest } = require('../helpers/url'); + +const gradovi = [ + {"ime":" Sarajevo","id":"sarajevo"}, + {"ime":" Unsko-sanski","id":"unskosanski"}, + {"ime":" Posavski","id":"posavski"}, + {"ime":" Tuzlanski","id":"tuzlanski"}, + {"ime":" Zeničko-dobojski","id":"zenickodobojski"}, + {"ime":" Bosansko-podrinjski","id":"bosanskopodrinjski"}, + {"ime":" Srednjobosanski","id":"srednjobosanski"}, + {"ime":" Hercegovačko-neretvanski","id":"hercegovackoneretvanski"}, + {"ime":" Zapadno-hercegovački","id":"zapadnohercegovacki"}, + {"ime":" Livanjski","id":"livanjski"}, + {"ime":" Banjalučka","id":"banjalučka"}, + {"ime":" Dobojsko-Bijeljinska","id":"dobojskobijeljinska"}, + {"ime":" Sarajevsko-Zvornička","id":"sarajevskozvornicka"}, + {"ime":" Trebinjsko-Fočanska","id":"trebinjskofocanska"}, + {"ime":"Distrikt Brčko","id":"distriktbrcko"}, +]; + + +const getGrad = (req,res) => { + const nextStep = req.query.nextStep || '/'; + res.render('grad', { + nextStep, + gradovi + }); +} + +const postGrad = async (req, res) => { + let request = await currentRERequest(req); + request.city = req.body.grad; + await request.save(); + res.send("Result is " + JSON.stringify(request)); +} + +module.exports = { + getGrad, + postGrad +}; diff --git a/app/controllers/vrsta_nekretnine.js b/app/controllers/vrsta_nekretnine.js index 7b26f43..1bc6ab8 100644 --- a/app/controllers/vrsta_nekretnine.js +++ b/app/controllers/vrsta_nekretnine.js @@ -8,17 +8,21 @@ const vrsteNekretnina = [ const getVrstaNekretnine = (req,res) => { + const nextStep = req.query.nextStep; res.render('vrsta_nekretnine', { - nextStep: '/', + nextStep, vrste: vrsteNekretnina }); } const postVrstaNekretnine = (req, res) => { + let nextStep = req.query.nextStep; + db.RealEstateRequest.create({ realEstateType: req.body.vrsta }).then( (result) => { - res.send("Result is " + JSON.stringify(result)); + nextStep = nextStep || `/grad/${result.uniqueId}`; + res.redirect(nextStep); }).catch( (e) => { res.send(e); }); diff --git a/app/helpers/url.js b/app/helpers/url.js new file mode 100644 index 0000000..7cde84a --- /dev/null +++ b/app/helpers/url.js @@ -0,0 +1,14 @@ +const db = require('../models/index'); + +const currentRERequest = async (req) => { + const uniqueId = req.params['request_id']; + if(!uniqueId) return null; + + const request = await db.RealEstateRequest.findOne({ where: {uniqueId} }); + console.log("Request ", request); + return request; +} + +module.exports = { + currentRERequest +} diff --git a/app/migrations/20190427043621-add_city_to_real_estate_request.js b/app/migrations/20190427043621-add_city_to_real_estate_request.js new file mode 100644 index 0000000..be6f6a8 --- /dev/null +++ b/app/migrations/20190427043621-add_city_to_real_estate_request.js @@ -0,0 +1,18 @@ +'use strict'; + +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.addColumn( + 'RealEstateRequests', + 'city', + Sequelize.STRING + ); + }, + + down: (queryInterface, Sequelize) => { + return queryInterface.removeColumn( + 'RealEstateRequests', + 'city' + ); + } +}; diff --git a/app/models/realestaterequest.js b/app/models/realestaterequest.js index 1db1612..24c3660 100644 --- a/app/models/realestaterequest.js +++ b/app/models/realestaterequest.js @@ -10,7 +10,8 @@ module.exports = (sequelize, DataTypes) => { type: DataTypes.ENUM, values: ['kuca','stan','vikendica','plac','poslovni_prostor','apartman','garaza'] }, - email: DataTypes.STRING + email: DataTypes.STRING, + city: DataTypes.STRING, }, {}); RealEstateRequest.associate = function(models) { // associations can be defined here diff --git a/app/views/grad.ejs b/app/views/grad.ejs new file mode 100644 index 0000000..ee28d77 --- /dev/null +++ b/app/views/grad.ejs @@ -0,0 +1,25 @@ +
+

U kojoj regiji tražite nekretninu?

+
+ +
+
+
    + <% for(const grad of gradovi) { %> +
  • <%= grad.ime %>send
  • + <% } %> +
+ +
+
+ + + diff --git a/index.js b/index.js index bd98e59..a6d5443 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ const dobrodosli = require('./app/controllers/dobrodosli').getDobrodosli; -const getVrstaNekretnine = require('./app/controllers/vrsta_nekretnine').getVrstaNekretnine; -const postVrstaNekretnine = require('./app/controllers/vrsta_nekretnine').postVrstaNekretnine; +const { getVrstaNekretnine, postVrstaNekretnine} = require('./app/controllers/vrsta_nekretnine'); +const { getGrad, postGrad } = require('./app/controllers/grad'); let express = require("express"); const path = require("path"); @@ -108,8 +108,15 @@ app.post("/api/payforalert", function(request, response) { }); app.get('/', dobrodosli); +app.get('/vrstanekretnine/:request_id', getVrstaNekretnine); app.get('/vrstanekretnine', getVrstaNekretnine); + +app.post('/vrstanekretnine/:request_id', postVrstaNekretnine); app.post('/vrstanekretnine', postVrstaNekretnine); + +app.get('/grad/:request_id', getGrad); +app.post('/grad/:request_id', postGrad); + app.use('/assets', express.static('./app/public')) app.listen(port, () => console.log(`Example app listening on port ${port}!`));