diff --git a/app/controllers/gardenSizes.js b/app/controllers/gardenSizes.js
index 11f89ac..83a8fe1 100644
--- a/app/controllers/gardenSizes.js
+++ b/app/controllers/gardenSizes.js
@@ -1,32 +1,31 @@
-const { currentRERequest } = require('../helpers/url');
-const { getRealEstateTypeEnum } = require('../helpers/enums');
+const { currentRERequest } = require("../helpers/url");
+const { getRealEstateTypeEnum } = require("../helpers/enums");
-const getGardenSize = (req,res) => {
+const getGardenSize = (req, res) => {
+ const title = "Koliko okućnice tražite ?";
- const title = "Koliko okućnice tražite ?"
-
- const unit = " m2"
+ const unit = " m2";
const rangeFrom = {
- min : 10,
- max : 3000,
- value : 0,
- step : 10
- }
+ min: 10,
+ max: 3000,
+ value: 0,
+ step: 10
+ };
const rangeTo = {
- min : 10,
- max : 3000,
- value : 100,
- step : 10
- }
+ min: 10,
+ max: 3000,
+ value: 100,
+ step: 10
+ };
- res.render('gardenSize', { rangeFrom, rangeTo, unit, title });
+ res.render("gardenSize", { rangeFrom, rangeTo, unit, title });
};
const postGardenSize = async (req, res) => {
const request = await currentRERequest(req);
- const nextStepPage = req.query.nextStep || 'cijena';
+ const nextStepPage = req.query.nextStep || "cijena";
const nextStepUrl = `/${nextStepPage}/${request.uniqueId}`;
const realEstateType = getRealEstateTypeEnum(request.realEstateType);
diff --git a/app/controllers/goAgain.js b/app/controllers/goAgain.js
index c6b6d81..93d057b 100644
--- a/app/controllers/goAgain.js
+++ b/app/controllers/goAgain.js
@@ -1,6 +1,6 @@
-const getGoAgain = async (req,res) => {
+const getGoAgain = async (req, res) => {
const title = "Želite li pretražiti još jednu nekretninu ?";
- res.render('goAgain', {title});
+ res.render("goAgain", { title });
};
module.exports = {
diff --git a/app/controllers/municipalities.js b/app/controllers/municipalities.js
index 349fd9c..0950a43 100644
--- a/app/controllers/municipalities.js
+++ b/app/controllers/municipalities.js
@@ -1,20 +1,26 @@
-const { currentRERequest } = require('../helpers/url');
-const { getMunicipalitiesForRegion, getMunicipalityName } = require('../helpers/codes');
+const { currentRERequest } = require("../helpers/url");
+const {
+ getMunicipalitiesForRegion,
+ getMunicipalityName
+} = require("../helpers/codes");
const getMunicipality = async (req, res) => {
-
- const title = "U kojem mjestu tražite nekretninu?"
+ const title = "U kojem mjestu tražite nekretninu?";
let request = await currentRERequest(req);
const municipalities = getMunicipalitiesForRegion(request.region);
- res.render('municipality', { municipalities, title });
+ res.render("municipality", { municipalities, title });
};
const postMunicipality = async (req, res) => {
-
const request = await currentRERequest(req);
- const nextStepParam = req.query.nextStep ? "?nextStep=" + req.query.nextStep : "";
- const nextStepUrl = `/${'naselje'}/${request.uniqueId}/${getMunicipalityName(request.region, req.body.municipality)}${nextStepParam}`;
+ const nextStepParam = req.query.nextStep
+ ? "?nextStep=" + req.query.nextStep
+ : "";
+ const nextStepUrl = `/${"naselje"}/${request.uniqueId}/${getMunicipalityName(
+ request.region,
+ req.body.municipality
+ )}${nextStepParam}`;
request.municipality = req.body.municipality;
await request.save();
diff --git a/app/controllers/neighborhoodMap.js b/app/controllers/neighborhoodMap.js
index 1edd926..f3a8e22 100644
--- a/app/controllers/neighborhoodMap.js
+++ b/app/controllers/neighborhoodMap.js
@@ -1,41 +1,37 @@
-const { currentRERequest } = require('../helpers/url');
+const { currentRERequest } = require("../helpers/url");
const getNeighborhood = async (req, res) => {
+ const title = "U kojem naselju tražite nekretninu?";
+ const municipality = req.params.municipality;
+ const nextStep = req.query.nextStep || "/";
- const title = "U kojem naselju tražite nekretninu?"
- const municipality = req.params.municipality
- const nextStep = req.query.nextStep || '/';
-
- res.render('neighborhoodMap', {
- nextStep,
- municipality,
- title
- });
-
+ res.render("neighborhoodMap", {
+ nextStep,
+ municipality,
+ title
+ });
};
const postNeighborhood = async (req, res) => {
- let request = await currentRERequest(req);
- const northWest = [req.body.west, req.body.north];
- const northEast = [req.body.east, req.body.north];
- const southEast = [req.body.east, req.body.south];
- const southWest = [req.body.west, req.body.south];
+ let request = await currentRERequest(req);
+ const northWest = [req.body.west, req.body.north];
+ const northEast = [req.body.east, req.body.north];
+ const southEast = [req.body.east, req.body.south];
+ const southWest = [req.body.west, req.body.south];
- request.bounding_box = {
- type: 'Polygon', coordinates: [
- [northWest, northEast, southEast,
- southWest, northWest]
- ]
- };
- await request.save();
+ request.bounding_box = {
+ type: "Polygon",
+ coordinates: [[northWest, northEast, southEast, southWest, northWest]]
+ };
+ await request.save();
- const nextStepPage = req.query.nextStep || 'povrsina';
- const nextStepUrl = `/${nextStepPage}/${request.uniqueId}`;
+ const nextStepPage = req.query.nextStep || "povrsina";
+ const nextStepUrl = `/${nextStepPage}/${request.uniqueId}`;
- res.redirect(nextStepUrl);
+ res.redirect(nextStepUrl);
};
module.exports = {
- getNeighborhood,
- postNeighborhood
-};
\ No newline at end of file
+ getNeighborhood,
+ postNeighborhood
+};
diff --git a/app/controllers/prices.js b/app/controllers/prices.js
index d4c99fe..2ae5720 100644
--- a/app/controllers/prices.js
+++ b/app/controllers/prices.js
@@ -1,32 +1,30 @@
-const { currentRERequest } = require('../helpers/url');
+const { currentRERequest } = require("../helpers/url");
-const getPrice = (req,res) => {
+const getPrice = (req, res) => {
+ const title = "Koja Vam okvirna cijena odgovara ?";
- const title = "Koja Vam okvirna cijena odgovara ?"
-
- const unit = " KM"
+ const unit = " KM";
const rangeFrom = {
- min : 1000,
- max : 250000,
- value : 0,
- step : 1000
- }
+ min: 1000,
+ max: 250000,
+ value: 0,
+ step: 1000
+ };
const rangeTo = {
- min : 1000,
- max : 250000,
- value : 50000,
- step : 1000
- }
+ min: 1000,
+ max: 250000,
+ value: 50000,
+ step: 1000
+ };
-
- res.render('price', {rangeFrom, rangeTo, unit, title });
+ res.render("price", { rangeFrom, rangeTo, unit, title });
};
const postPrice = async (req, res) => {
const request = await currentRERequest(req);
- const nextStepPage = req.query.nextStep || 'pregled';
+ const nextStepPage = req.query.nextStep || "pregled";
const nextStepUrl = `/${nextStepPage}/${request.uniqueId}`;
request.priceMin = req.body.from;
diff --git a/app/controllers/queryReview.js b/app/controllers/queryReview.js
index 023435c..fd1c40e 100644
--- a/app/controllers/queryReview.js
+++ b/app/controllers/queryReview.js
@@ -1,10 +1,16 @@
-const { currentRERequest } = require('../helpers/url');
-const { getRegionName, getMunicipalityName } = require('../helpers/codes');
-const { realEstateTypes, sizes, gardenSizes, prices, getEnumTypeTitle, getRealEstateTypeEnum } = require('../helpers/enums');
+const { currentRERequest } = require("../helpers/url");
+const { getRegionName, getMunicipalityName } = require("../helpers/codes");
+const {
+ realEstateTypes,
+ sizes,
+ gardenSizes,
+ prices,
+ getEnumTypeTitle,
+ getRealEstateTypeEnum
+} = require("../helpers/enums");
-const getQueryReview = async (req,res) => {
-
- const title = "Da li je ovo to što ste tražili ?"
+const getQueryReview = async (req, res) => {
+ const title = "Da li je ovo to što ste tražili ?";
const request = await currentRERequest(req);
const nextStep = req.query.nextStep;
@@ -12,63 +18,73 @@ const getQueryReview = async (req,res) => {
return null;
}
- const {
- realEstateType,
- region,
- municipality,
- sizeMin,
- sizeMax,
- gardenSizeMin,
- gardenSizeMax,
- priceMin,
- priceMax } = request.dataValues;
+ const {
+ realEstateType,
+ region,
+ municipality,
+ sizeMin,
+ sizeMax,
+ gardenSizeMin,
+ gardenSizeMax,
+ priceMin,
+ priceMax
+ } = request.dataValues;
const realEstateTypeObject = getRealEstateTypeEnum(realEstateType);
- const enableGardenSizeEdit = realEstateTypeObject ? realEstateTypeObject.hasGardenSize : false;
+ const enableGardenSizeEdit = realEstateTypeObject
+ ? realEstateTypeObject.hasGardenSize
+ : false;
- const realEstateTypeTitle = realEstateType ? getEnumTypeTitle(realEstateTypes, realEstateType) : null;
+ const realEstateTypeTitle = realEstateType
+ ? getEnumTypeTitle(realEstateTypes, realEstateType)
+ : null;
const regionName = region ? getRegionName(region) : null;
- const municipalityName = (region && municipality) ? getMunicipalityName(region, municipality) : null;
+ const municipalityName =
+ region && municipality ? getMunicipalityName(region, municipality) : null;
const sizeTitle = sizeMin ? sizeMin + "-" + sizeMax + " m2" : null;
- const gardenSizeTitle = gardenSizeMin ? gardenSizeMin + "-" + gardenSizeMax + " m2" : null;
- const priceTitle = priceMin ? priceMin + "-" + priceMax + " KM" : null;
+ const gardenSizeTitle = gardenSizeMin
+ ? gardenSizeMin + "-" + gardenSizeMax + " m2"
+ : null;
+ const priceTitle = priceMin ? priceMin + "-" + priceMax + " KM" : null;
- const uniqueId = request.dataValues.uniqueId ? request.dataValues.uniqueId : '';
+ const uniqueId = request.dataValues.uniqueId
+ ? request.dataValues.uniqueId
+ : "";
const queryData = [
{
- id: 'realEstateType',
+ id: "realEstateType",
title: realEstateTypeTitle,
- url: `/vrstanekretnine/${uniqueId}?nextStep=pregled`,
+ url: `/vrstanekretnine/${uniqueId}?nextStep=pregled`
},
{
- id: 'region',
+ id: "region",
title: regionName,
- url: `/grad/${uniqueId}?nextStep=mjesto`,
+ url: `/grad/${uniqueId}?nextStep=mjesto`
},
{
- id: 'municipality',
+ id: "municipality",
title: municipalityName,
- url: `/mjesto/${uniqueId}?nextStep=pregled`,
+ url: `/mjesto/${uniqueId}?nextStep=pregled`
},
{
- id: 'size',
+ id: "size",
title: sizeTitle,
- url: `/povrsina/${uniqueId}?nextStep=pregled`,
+ url: `/povrsina/${uniqueId}?nextStep=pregled`
},
{
- id: 'gardenSize',
+ id: "gardenSize",
title: gardenSizeTitle,
- url: enableGardenSizeEdit ? `/okucnica/${uniqueId}?nextStep=pregled` : '',
+ url: enableGardenSizeEdit ? `/okucnica/${uniqueId}?nextStep=pregled` : ""
},
{
- id: 'price',
+ id: "price",
title: priceTitle,
url: `/cijena/${uniqueId}?nextStep=pregled`
}
];
- res.render('queryReview', {
+ res.render("queryReview", {
nextStep,
queryData,
title
diff --git a/app/controllers/querySubmit.js b/app/controllers/querySubmit.js
index 5d111d8..de48eba 100644
--- a/app/controllers/querySubmit.js
+++ b/app/controllers/querySubmit.js
@@ -1,14 +1,13 @@
-const { currentRERequest } = require('../helpers/url');
-const { isValidEmail } = require('../helpers/email');
-const { sendTemplatedEmail} = require('../helpers/awsEmail');
+const { currentRERequest } = require("../helpers/url");
+const { isValidEmail } = require("../helpers/email");
+const { sendTemplatedEmail } = require("../helpers/awsEmail");
const getQuerySubmit = async (req, res) => {
-
- const title = "Upišite vaš e-mail"
+ const title = "Upišite vaš e-mail";
const nextStep = req.query.nextStep;
const error = req.query.error;
- res.render('querySubmit', {
+ res.render("querySubmit", {
nextStep,
error,
title
@@ -17,25 +16,23 @@ const getQuerySubmit = async (req, res) => {
const postQuerySubmit = async (req, res) => {
const request = await currentRERequest(req);
- const nextStep = req.query.nextStep || '/ponovo';
+ const nextStep = req.query.nextStep || "/ponovo";
const emailInput = req.body.email;
const emailConfirmInput = req.body.confirm;
let error = "Greška ! Unesite validan email";
if (!isValidEmail(emailInput) || !isValidEmail(emailConfirmInput)) {
-
error = "Greška ! Unesite validan email";
- res.render('querySubmit', {
+ res.render("querySubmit", {
error
});
return;
}
if (emailInput !== emailConfirmInput) {
-
error = "Greška ! Unešeni emailovi nisu isti";
- res.render('querySubmit', {
+ res.render("querySubmit", {
error
});
return;
@@ -45,7 +42,7 @@ const postQuerySubmit = async (req, res) => {
request.subscribed = true;
await request.save();
sendTemplatedEmail(req.body.email, request);
- res.redirect(nextStep);
+ res.redirect(nextStep);
};
module.exports = {
diff --git a/app/controllers/realEstateTypes.js b/app/controllers/realEstateTypes.js
index 50b1aad..afefa0f 100644
--- a/app/controllers/realEstateTypes.js
+++ b/app/controllers/realEstateTypes.js
@@ -1,42 +1,39 @@
-const db = require('../models/index');
+const db = require("../models/index");
-const { currentRERequest } = require('../helpers/url');
-const { realEstateTypes, getRealEstateTypeEnum } = require('../helpers/enums');
+const { currentRERequest } = require("../helpers/url");
+const { realEstateTypes, getRealEstateTypeEnum } = require("../helpers/enums");
-
-const getRealEstateTypes = (req,res) => {
- const title = "Koju nekretninu tražite?"
- res.render('realEstateType', { realEstateTypes, title });
+const getRealEstateTypes = (req, res) => {
+ const title = "Koju nekretninu tražite?";
+ res.render("realEstateType", { realEstateTypes, title });
};
const postRealEstateTypes = async (req, res) => {
const request = await currentRERequest(req);
- const nextStepPage = req.query.nextStep || 'grad';
+ const nextStepPage = req.query.nextStep || "grad";
if (request && request.uniqueId) {
const nextStepUrl = `/${nextStepPage}/${request.uniqueId}`;
request.realEstateType = req.body.realestatetype;
- if (!getRealEstateTypeEnum(request.realEstateType).hasGardenSize){
+ if (!getRealEstateTypeEnum(request.realEstateType).hasGardenSize) {
request.gardenSize = null;
}
await request.save();
- res.redirect(nextStepUrl)
+ res.redirect(nextStepUrl);
} else {
db.RealEstateRequest.create({
realEstateType: req.body.realestatetype
- }).then( (result) => {
- const nextStepUrl = `/${nextStepPage}/${result.uniqueId}`;
- res.redirect(nextStepUrl);
- }).catch( (e) => {
- res.send(e);
- });
+ })
+ .then(result => {
+ const nextStepUrl = `/${nextStepPage}/${result.uniqueId}`;
+ res.redirect(nextStepUrl);
+ })
+ .catch(e => {
+ res.send(e);
+ });
}
-
-
-
-
};
module.exports = {
diff --git a/app/controllers/realEstates.js b/app/controllers/realEstates.js
index ddb5e40..1533159 100644
--- a/app/controllers/realEstates.js
+++ b/app/controllers/realEstates.js
@@ -1,18 +1,16 @@
+const { allMarketAlertsByRequest } = require("../helpers/db/dbHelper");
-const {allMarketAlertsByRequest} = require('../helpers/db/dbHelper');
+const getRealEstates = async (req, res) => {
+ console.log("Enter get realestates");
+ const request = req.params["request_id"];
+ console.log(req.params["request_id"]);
+ const realEstates = await allMarketAlertsByRequest(request);
+ console.log(realEstates);
-const getRealEstates = async (req,res) => {
- console.log("Enter get realestates");
- const request = req.params['request_id'];
- console.log(req.params['request_id']);
- const realEstates = await allMarketAlertsByRequest(request);
- console.log(realEstates);
+ const title = "Ovo su nekretnine koje smo pronašli za vas";
+ res.render("realEstates", { realEstates, title });
+};
- const title = "Ovo su nekretnine koje smo pronašli za vas"
- res.render('realEstates', {realEstates, title } );
- };
-
- module.exports = {
- getRealEstates
- };
-
\ No newline at end of file
+module.exports = {
+ getRealEstates
+};
diff --git a/app/controllers/regions.js b/app/controllers/regions.js
index b3f0b71..025c539 100644
--- a/app/controllers/regions.js
+++ b/app/controllers/regions.js
@@ -1,25 +1,25 @@
-const { currentRERequest } = require('../helpers/url');
-const { getRegions } = require('../helpers/codes');
+const { currentRERequest } = require("../helpers/url");
+const { getRegions } = require("../helpers/codes");
const regions = getRegions();
-const getRegion = (req,res) => {
- const title = "U kojoj regiji tražite nekretninu?"
- res.render('region', { regions, title });
+const getRegion = (req, res) => {
+ const title = "U kojoj regiji tražite nekretninu?";
+ res.render("region", { regions, title });
};
const postRegion = async (req, res) => {
const request = await currentRERequest(req);
- const nextStepQueryParam = req.query.nextStep ? '?nextStep=pregled' : '';
- const nextStepPage = req.query.nextStep || 'mjesto';
+ const nextStepQueryParam = req.query.nextStep ? "?nextStep=pregled" : "";
+ const nextStepPage = req.query.nextStep || "mjesto";
const nextStepUrl = `/${nextStepPage}/${request.uniqueId}${nextStepQueryParam}`;
request.region = req.body.region;
request.municipality = null;
await request.save();
- res.redirect(nextStepUrl)
+ res.redirect(nextStepUrl);
};
module.exports = {
diff --git a/app/controllers/sizes.js b/app/controllers/sizes.js
index 58ec4a7..b3898c4 100644
--- a/app/controllers/sizes.js
+++ b/app/controllers/sizes.js
@@ -1,25 +1,24 @@
-const { currentRERequest } = require('../helpers/url');
-const { sizes, getRealEstateTypeEnum } = require('../helpers/enums');
+const { currentRERequest } = require("../helpers/url");
+const { sizes, getRealEstateTypeEnum } = require("../helpers/enums");
-const getSize = (req,res) => {
-
- const title = "Od koliko kvadrata tražite nekretninu ?"
- const unit = " m2"
+const getSize = (req, res) => {
+ const title = "Od koliko kvadrata tražite nekretninu ?";
+ const unit = " m2";
const rangeFrom = {
- min : 10,
- max : 250,
- value : 0,
- step : 10
- }
+ min: 10,
+ max: 250,
+ value: 0,
+ step: 10
+ };
const rangeTo = {
- min : 10,
- max : 250,
- value : 50,
- step : 10
- }
+ min: 10,
+ max: 250,
+ value: 50,
+ step: 10
+ };
- res.render('size', { rangeFrom, rangeTo, unit, title });
+ res.render("size", { rangeFrom, rangeTo, unit, title });
};
const postSize = async (req, res) => {
@@ -27,7 +26,8 @@ const postSize = async (req, res) => {
const realEstateType = getRealEstateTypeEnum(request.realEstateType);
- const nextStep = realEstateType && realEstateType.hasGardenSize ? 'okucnica' : 'cijena';
+ const nextStep =
+ realEstateType && realEstateType.hasGardenSize ? "okucnica" : "cijena";
const nextStepPage = req.query.nextStep || nextStep;
const nextStepUrl = `/${nextStepPage}/${request.uniqueId}`;
request.sizeMin = req.body.from;
diff --git a/app/controllers/unsubscribe.js b/app/controllers/unsubscribe.js
index 5e32ddb..0199fa7 100644
--- a/app/controllers/unsubscribe.js
+++ b/app/controllers/unsubscribe.js
@@ -1,17 +1,14 @@
-
-const { currentRERequest } = require('../helpers/url');
+const { currentRERequest } = require("../helpers/url");
const getUnsubscribe = async (req, res) => {
+ const title = "Uspješno ste se odjavili";
+ const request = await currentRERequest(req);
+ request.subscribed = false;
+ await request.save();
- const title = "Uspješno ste se odjavili"
- const request = await currentRERequest(req);
- request.subscribed = false;
- await request.save();
-
- res.render('unsubscribe', { nextStep: '/vrstanekretnine', title });
+ res.render("unsubscribe", { nextStep: "/vrstanekretnine", title });
};
-
module.exports = {
- getUnsubscribe
-};
\ No newline at end of file
+ getUnsubscribe
+};
diff --git a/app/controllers/welcome.js b/app/controllers/welcome.js
index 258b551..fe62105 100644
--- a/app/controllers/welcome.js
+++ b/app/controllers/welcome.js
@@ -1,6 +1,6 @@
-const getWelcome = (req,res) => {
- const title = "Koju nekretninu tražite?"
- res.render('welcome', { nextStep: '/vrstanekretnine', title } );
+const getWelcome = (req, res) => {
+ const title = "Koju nekretninu tražite?";
+ res.render("welcome", { nextStep: "/vrstanekretnine", title });
};
module.exports = {
diff --git a/app/helpers/awsEmail.js b/app/helpers/awsEmail.js
index dac4f48..9ca4bcb 100644
--- a/app/helpers/awsEmail.js
+++ b/app/helpers/awsEmail.js
@@ -57,9 +57,7 @@ const getGreetingsEmailHTML = realestateRequest => {
realestateRequest.realEstateType
);
const gardenSize = realEstateType.hasGardenSize
- ? `
Kvadratura okućnice: Od ${
- realestateRequest.gardenSizeMin
- } do ${realestateRequest.gardenSizeMax} m2
`
+ ? `Kvadratura okućnice: Od ${realestateRequest.gardenSizeMin} do ${realestateRequest.gardenSizeMax} m2
`
: ``;
return ` Zdravo,
diff --git a/app/helpers/codes.js b/app/helpers/codes.js
index bcec456..815c4d6 100644
--- a/app/helpers/codes.js
+++ b/app/helpers/codes.js
@@ -1,928 +1,931 @@
const regions = [
- {
- "name": " Sarajevo",
- "id": "sarajevo",
- "olxid": "9",
- "municipalities": [
- {
- "name": "Hadžići",
- "id": "hadii",
- "olxid": "3817"
- },
- {
- "name": "Ilidža",
- "id": "ilida",
- "olxid": "3879"
- },
- {
- "name": "Ilijaš",
- "id": "ilija",
- "olxid": "3892"
- },
- {
- "name": "Sarajevo - Centar",
- "id": "sarajevocentar",
- "olxid": "3812"
- },
- {
- "name": "Sarajevo-Novi Grad",
- "id": "sarajevonovigrad",
- "olxid": "3969"
- },
- {
- "name": "Sarajevo-Novo Sarajevo",
- "id": "sarajevonovosarajevo",
- "olxid": "5896"
- },
- {
- "name": "Sarajevo-Stari Grad",
- "id": "sarajevostarigrad",
- "olxid": "4048"
- },
- {
- "name": "Trnovo",
- "id": "trnovo",
- "olxid": "4063"
- },
- {
- "name": "Vogošća",
- "id": "vogoa",
- "olxid": "4126"
- }
- ]
- },
- {
- "name": " Unsko-sanski",
- "id": "unskosanski",
- "olxid": "9",
- "municipalities": [
- {
- "name": "Bihać",
- "id": "biha",
- "olxid": "75"
- },
- {
- "name": "Bosanska Krupa",
- "id": "bosanskakrupa",
- "olxid": "373"
- },
- {
- "name": "Bosanski Petrovac",
- "id": "bosanskipetrovac",
- "olxid": "504"
- },
- {
- "name": "Bužim",
- "id": "buim",
- "olxid": "374"
- },
- {
- "name": "Cazin",
- "id": "cazin",
- "olxid": "857"
- },
- {
- "name": "Ključ",
- "id": "klju",
- "olxid": "2362"
- },
- {
- "name": "Sanski Most",
- "id": "sanskimost",
- "olxid": "3738"
- },
- {
- "name": "Velika Kladuša",
- "id": "velikakladua",
- "olxid": "5122"
- }
- ]
- },
- {
- "name": " Posavski",
- "id": "posavski",
- "olxid": "15",
- "municipalities": [
- {
- "name": "Domaljevac",
- "id": "domaljevac",
- "olxid": "6144"
- },
- {
- "name": "Odžak",
- "id": "odak",
- "olxid": "424"
- },
- {
- "name": "Orašje",
- "id": "oraje",
- "olxid": "3252"
- },
- {
- "name": "Šamac",
- "id": "amac",
- "olxid": "540"
- }
- ]
- },
- {
- "name": " Tuzlanski",
- "id": "tuzlanski",
- "olxid": "15",
- "municipalities": [
- {
- "name": "Banovići",
- "id": "banovii",
- "olxid": "2"
- },
- {
- "name": "Doboj-Istok",
- "id": "dobojistok",
- "olxid": "1090"
- },
- {
- "name": "Gradačac",
- "id": "gradaac",
- "olxid": "1854"
- },
- {
- "name": "Gračanica",
- "id": "graanica",
- "olxid": "1826"
- },
- {
- "name": "Kalesija",
- "id": "kalesija",
- "olxid": "2129"
- },
- {
- "name": "Kladanj",
- "id": "kladanj",
- "olxid": "2319"
- },
- {
- "name": "Lukavac",
- "id": "lukavac",
- "olxid": "2840"
- },
- {
- "name": "Sapna",
- "id": "sapna",
- "olxid": "5699"
- },
- {
- "name": "Srebrenik",
- "id": "srebrenik",
- "olxid": "4391"
- },
- {
- "name": "Teočak",
- "id": "teoak",
- "olxid": "5010"
- },
- {
- "name": "Tuzla",
- "id": "tuzla",
- "olxid": "4944"
- },
- {
- "name": "Čelić",
- "id": "eli",
- "olxid": "2801"
- },
- {
- "name": "Živinice",
- "id": "ivinice",
- "olxid": "5774"
- }
- ]
- },
- {
- "name": " Zeničko-dobojski",
- "id": "zenickodobojski",
- "olxid": "15",
- "municipalities": [
- {
- "name": "Breza",
- "id": "breza",
- "olxid": "704"
- },
- {
- "name": "Doboj-Jug",
- "id": "dobojjug",
- "olxid": "1122"
- },
- {
- "name": "Kakanj",
- "id": "kakanj",
- "olxid": "2022"
- },
- {
- "name": "Maglaj",
- "id": "maglaj",
- "olxid": "2941"
- },
- {
- "name": "Olovo",
- "id": "olovo",
- "olxid": "1925"
- },
- {
- "name": "Tešanj",
- "id": "teanj",
- "olxid": "4594"
- },
- {
- "name": "Usora",
- "id": "usora",
- "olxid": "1087"
- },
- {
- "name": "Vareš",
- "id": "vare",
- "olxid": "5037"
- },
- {
- "name": "Visoko",
- "id": "visoko",
- "olxid": "5171"
- },
- {
- "name": "Zavidovići",
- "id": "zavidovii",
- "olxid": "5548"
- },
- {
- "name": "Zenica",
- "id": "zenica",
- "olxid": "4571"
- },
- {
- "name": "Žepče",
- "id": "epe",
- "olxid": "2940"
- }
- ]
- },
- {
- "name": " Bosansko-podrinjski",
- "id": "bosanskopodrinjski",
- "olxid": "15",
- "municipalities": [
- {
- "name": "Foča",
- "id": "foa",
- "olxid": "1289"
- },
- {
- "name": "Goražde",
- "id": "gorade",
- "olxid": "1588"
- },
- {
- "name": "Pale",
- "id": "pale",
- "olxid": "3546"
- }
- ]
- },
- {
- "name": " Srednjobosanski",
- "id": "srednjobosanski",
- "olxid": "6",
- "municipalities": [
- {
- "name": "Bugojno",
- "id": "bugojno",
- "olxid": "732"
- },
- {
- "name": "Busovača",
- "id": "busovaa",
- "olxid": "810"
- },
- {
- "name": "Dobretići",
- "id": "dobretii",
- "olxid": "4151"
- },
- {
- "name": "Donji Vakuf",
- "id": "donjivakuf",
- "olxid": "1160"
- },
- {
- "name": "Fojnica",
- "id": "fojnica",
- "olxid": "1407"
- },
- {
- "name": "Gornji Vakuf - Uskoplje",
- "id": "gornjivakufuskoplje",
- "olxid": "1775"
- },
- {
- "name": "Jajce",
- "id": "jajce",
- "olxid": "1960"
- },
- {
- "name": "Kiseljak",
- "id": "kiseljak",
- "olxid": "2237"
- },
- {
- "name": "Kreševo",
- "id": "kreevo",
- "olxid": "2608"
- },
- {
- "name": "Novi Travnik",
- "id": "novitravnik",
- "olxid": "3477"
- },
- {
- "name": "Travnik",
- "id": "travnik",
- "olxid": "4678"
- },
- {
- "name": "Vitez",
- "id": "vitez",
- "olxid": "5422"
- }
- ]
- },
- {
- "name": " Hercegovačko-neretvanski",
- "id": "hercegovackoneretvanski",
- "olxid": "7",
- "municipalities": [
- {
- "name": "Grad Mostar",
- "id": "gradmostar",
- "olxid": "3017"
- },
- {
- "name": "Jablanica",
- "id": "jablanica",
- "olxid": "1930"
- },
- {
- "name": "Konjic",
- "id": "konjic",
- "olxid": "2169"
- },
- {
- "name": "Neum",
- "id": "neum",
- "olxid": "3111"
- },
- {
- "name": "Prozor",
- "id": "prozor",
- "olxid": "3421"
- },
- {
- "name": "Ravno",
- "id": "ravno",
- "olxid": "4769"
- },
- {
- "name": "Stolac",
- "id": "stolac",
- "olxid": "4439"
- },
- {
- "name": "Čapljina",
- "id": "apljina",
- "olxid": "947"
- },
- {
- "name": "Čitluk",
- "id": "itluk",
- "olxid": "1009"
- }
- ]
- },
- {
- "name": " Zapadno-hercegovački",
- "id": "zapadnohercegovacki",
- "olxid": "8",
- "municipalities": [
- {
- "name": "Grude",
- "id": "grude",
- "olxid": "1892"
- },
- {
- "name": "Ljubuški",
- "id": "ljubuki",
- "olxid": "2905"
- },
- {
- "name": "Posušje",
- "id": "posuje",
- "olxid": "3268"
- },
- {
- "name": "Široki Brijeg",
- "id": "irokibrijeg",
- "olxid": "2708"
- }
- ]
- },
- {
- "name": " Livanjski",
- "id": "livanjski",
- "olxid": "10",
- "municipalities": [
- {
- "name": "Bosansko Grahovo",
- "id": "bosanskograhovo",
- "olxid": "560"
- },
- {
- "name": "Drvar",
- "id": "drvar",
- "olxid": "4640"
- },
- {
- "name": "Glamoč",
- "id": "glamo",
- "olxid": "1533"
- },
- {
- "name": "Kupres",
- "id": "kupres",
- "olxid": "2635"
- },
- {
- "name": "Livno",
- "id": "livno",
- "olxid": "2741"
- },
- {
- "name": "Tomislavgrad",
- "id": "tomislavgrad",
- "olxid": "1228"
- }
- ]
- },
- {
- "name": " Banjalučka",
- "id": "banjalučka",
- "olxid": "14",
- "municipalities": [
- {
- "name": "Banja Luka",
- "id": "banjaluka",
- "olxid": "21"
- },
- {
- "name": "Gradiška",
- "id": "gradika",
- "olxid": "305"
- },
- {
- "name": "Istočni Drvar",
- "id": "istonidrvar",
- "olxid": "4662"
- },
- {
- "name": "Jezero",
- "id": "jezero",
- "olxid": "1965"
- },
- {
- "name": "Kneževo",
- "id": "kneevo",
- "olxid": "4147"
- },
- {
- "name": "Kostajnica",
- "id": "kostajnica",
- "olxid": "6142"
- },
- {
- "name": "Kotor Varoš",
- "id": "kotorvaro",
- "olxid": "2574"
- },
- {
- "name": "Kozarska Dubica",
- "id": "kozarskadubica",
- "olxid": "244"
- },
- {
- "name": "Krupa na uni",
- "id": "krupanauni",
- "olxid": "382"
- },
- {
- "name": "Kupres ",
- "id": "kupres",
- "olxid": "2654"
- },
- {
- "name": "Laktaši",
- "id": "laktai",
- "olxid": "2671"
- },
- {
- "name": "Mrkonjić Grad",
- "id": "mrkonjigrad",
- "olxid": "3073"
- },
- {
- "name": "Novi Grad",
- "id": "novigrad",
- "olxid": "444"
- },
- {
- "name": "Oštra Luka",
- "id": "otraluka",
- "olxid": "3737"
- },
- {
- "name": "Petrovac",
- "id": "petrovac",
- "olxid": "515"
- },
- {
- "name": "Prijedor",
- "id": "prijedor",
- "olxid": "3287"
- },
- {
- "name": "Prnjavor",
- "id": "prnjavor",
- "olxid": "3358"
- },
- {
- "name": "Ribnik",
- "id": "ribnik",
- "olxid": "2365"
- },
- {
- "name": "Srbac",
- "id": "srbac",
- "olxid": "4271"
- },
- {
- "name": "Čelinac",
- "id": "elinac",
- "olxid": "979"
- },
- {
- "name": "Šipovo",
- "id": "ipovo",
- "olxid": "4509"
- }
- ]
- },
- {
- "name": " Dobojsko-Bijeljinska",
- "id": "dobojskobijeljinska",
- "olxid": "15",
- "municipalities": [
- {
- "name": "Bijeljina",
- "id": "bijeljina",
- "olxid": "123"
- },
- {
- "name": "Bosanski Brod",
- "id": "bosanskibrod",
- "olxid": "421"
- },
- {
- "name": "Derventa",
- "id": "derventa",
- "olxid": "1030"
- },
- {
- "name": "Doboj",
- "id": "doboj",
- "olxid": "1088"
- },
- {
- "name": "Donji Žabar",
- "id": "donjiabar",
- "olxid": "3254"
- },
- {
- "name": "Lopare",
- "id": "lopare",
- "olxid": "2800"
- },
- {
- "name": "Lukavac",
- "id": "lukavac",
- "olxid": "6029"
- },
- {
- "name": "Modriča",
- "id": "modria",
- "olxid": "2996"
- },
- {
- "name": "Pelagićevo",
- "id": "pelagievo",
- "olxid": "1856"
- },
- {
- "name": "Petrovo",
- "id": "petrovo",
- "olxid": "1827"
- },
- {
- "name": "Stanari",
- "id": "stanari",
- "olxid": "1148"
- },
- {
- "name": "Teslić",
- "id": "tesli",
- "olxid": "4549"
- },
- {
- "name": "Tešanj",
- "id": "teanj",
- "olxid": "4636"
- },
- {
- "name": "Travnik",
- "id": "travnik",
- "olxid": "4692"
- },
- {
- "name": "Tuzla",
- "id": "tuzla",
- "olxid": "4966"
- },
- {
- "name": "Ugljevik",
- "id": "ugljevik",
- "olxid": "5009"
- },
- {
- "name": "Vukosavlje",
- "id": "vukosavlje",
- "olxid": "3197"
- },
- {
- "name": "Šamac",
- "id": "amac",
- "olxid": "539"
- }
- ]
- },
- {
- "name": " Sarajevsko-Zvornička",
- "id": "sarajevskozvornicka",
- "olxid": "16",
- "municipalities": [
- {
- "name": "Bratunac",
- "id": "bratunac",
- "olxid": "595"
- },
- {
- "name": "Han Pijesak",
- "id": "hanpijesak",
- "olxid": "1904"
- },
- {
- "name": "Ilijaš",
- "id": "ilija",
- "olxid": "3947"
- },
- {
- "name": "Istočni Stari Grad",
- "id": "istonistarigrad",
- "olxid": "4049"
- },
- {
- "name": "Kasindo",
- "id": "kasindo",
- "olxid": "3880"
- },
- {
- "name": "Kladanj",
- "id": "kladanj",
- "olxid": "2325"
- },
- {
- "name": "Lukavica",
- "id": "lukavica",
- "olxid": "3971"
- },
- {
- "name": "Milići",
- "id": "milii",
- "olxid": "6143"
- },
- {
- "name": "Olovo",
- "id": "olovo",
- "olxid": "3221"
- },
- {
- "name": "Osmaci",
- "id": "osmaci",
- "olxid": "2128"
- },
- {
- "name": "Pale",
- "id": "pale",
- "olxid": "3978"
- },
- {
- "name": "Rogatica",
- "id": "rogatica",
- "olxid": "3529"
- },
- {
- "name": "Rudo",
- "id": "rudo",
- "olxid": "3648"
- },
- {
- "name": "Sarajevo-Novi Grad",
- "id": "sarajevonovigrad",
- "olxid": "6069"
- },
- {
- "name": "Sokolac",
- "id": "sokolac",
- "olxid": "4183"
- },
- {
- "name": "Srebrenica",
- "id": "srebrenica",
- "olxid": "4310"
- },
- {
- "name": "Trnovo",
- "id": "trnovo",
- "olxid": "4067"
- },
- {
- "name": "Ustiprača",
- "id": "ustipraa",
- "olxid": "1593"
- },
- {
- "name": "Višegrad",
- "id": "viegrad",
- "olxid": "5259"
- },
- {
- "name": "Vlasenica",
- "id": "vlasenica",
- "olxid": "5456"
- },
- {
- "name": "Zvornik",
- "id": "zvornik",
- "olxid": "5684"
- },
- {
- "name": "Šekovići",
- "id": "ekovii",
- "olxid": "4475"
- },
- {
- "name": "Žepa",
- "id": "epa",
- "olxid": "1906"
- }
- ]
- },
- {
- "name": " Trebinjsko-Fočanska",
- "id": "trebinjskofocanska",
- "olxid": "17",
- "municipalities": [
- {
- "name": "Berkovići",
- "id": "berkovii",
- "olxid": "4441"
- },
- {
- "name": "Bileća",
- "id": "bilea",
- "olxid": "183"
- },
- {
- "name": "Foča",
- "id": "foa",
- "olxid": "1287"
- },
- {
- "name": "Gacko",
- "id": "gacko",
- "olxid": "1462"
- },
- {
- "name": "Istočni Mostar",
- "id": "istonimostar",
- "olxid": "3038"
- },
- {
- "name": "Kalinovik",
- "id": "kalinovik",
- "olxid": "2164"
- },
- {
- "name": "Ljubinje",
- "id": "ljubinje",
- "olxid": "2884"
- },
- {
- "name": "Nevesinje",
- "id": "nevesinje",
- "olxid": "3138"
- },
- {
- "name": "Trebinje",
- "id": "trebinje",
- "olxid": "4766"
- },
- {
- "name": "Čajniče",
- "id": "ajnie",
- "olxid": "911"
- }
- ]
- },
- {
- "name": "Distrikt Brčko",
- "id": "distriktbrcko",
- "olxid": "12",
- "municipalities": [
- {
- "name": "Brčko",
- "id": "brko",
- "olxid": "12"
- }
-
- ]
- }
+ {
+ name: " Sarajevo",
+ id: "sarajevo",
+ olxid: "9",
+ municipalities: [
+ {
+ name: "Hadžići",
+ id: "hadii",
+ olxid: "3817"
+ },
+ {
+ name: "Ilidža",
+ id: "ilida",
+ olxid: "3879"
+ },
+ {
+ name: "Ilijaš",
+ id: "ilija",
+ olxid: "3892"
+ },
+ {
+ name: "Sarajevo - Centar",
+ id: "sarajevocentar",
+ olxid: "3812"
+ },
+ {
+ name: "Sarajevo-Novi Grad",
+ id: "sarajevonovigrad",
+ olxid: "3969"
+ },
+ {
+ name: "Sarajevo-Novo Sarajevo",
+ id: "sarajevonovosarajevo",
+ olxid: "5896"
+ },
+ {
+ name: "Sarajevo-Stari Grad",
+ id: "sarajevostarigrad",
+ olxid: "4048"
+ },
+ {
+ name: "Trnovo",
+ id: "trnovo",
+ olxid: "4063"
+ },
+ {
+ name: "Vogošća",
+ id: "vogoa",
+ olxid: "4126"
+ }
+ ]
+ },
+ {
+ name: " Unsko-sanski",
+ id: "unskosanski",
+ olxid: "9",
+ municipalities: [
+ {
+ name: "Bihać",
+ id: "biha",
+ olxid: "75"
+ },
+ {
+ name: "Bosanska Krupa",
+ id: "bosanskakrupa",
+ olxid: "373"
+ },
+ {
+ name: "Bosanski Petrovac",
+ id: "bosanskipetrovac",
+ olxid: "504"
+ },
+ {
+ name: "Bužim",
+ id: "buim",
+ olxid: "374"
+ },
+ {
+ name: "Cazin",
+ id: "cazin",
+ olxid: "857"
+ },
+ {
+ name: "Ključ",
+ id: "klju",
+ olxid: "2362"
+ },
+ {
+ name: "Sanski Most",
+ id: "sanskimost",
+ olxid: "3738"
+ },
+ {
+ name: "Velika Kladuša",
+ id: "velikakladua",
+ olxid: "5122"
+ }
+ ]
+ },
+ {
+ name: " Posavski",
+ id: "posavski",
+ olxid: "15",
+ municipalities: [
+ {
+ name: "Domaljevac",
+ id: "domaljevac",
+ olxid: "6144"
+ },
+ {
+ name: "Odžak",
+ id: "odak",
+ olxid: "424"
+ },
+ {
+ name: "Orašje",
+ id: "oraje",
+ olxid: "3252"
+ },
+ {
+ name: "Šamac",
+ id: "amac",
+ olxid: "540"
+ }
+ ]
+ },
+ {
+ name: " Tuzlanski",
+ id: "tuzlanski",
+ olxid: "15",
+ municipalities: [
+ {
+ name: "Banovići",
+ id: "banovii",
+ olxid: "2"
+ },
+ {
+ name: "Doboj-Istok",
+ id: "dobojistok",
+ olxid: "1090"
+ },
+ {
+ name: "Gradačac",
+ id: "gradaac",
+ olxid: "1854"
+ },
+ {
+ name: "Gračanica",
+ id: "graanica",
+ olxid: "1826"
+ },
+ {
+ name: "Kalesija",
+ id: "kalesija",
+ olxid: "2129"
+ },
+ {
+ name: "Kladanj",
+ id: "kladanj",
+ olxid: "2319"
+ },
+ {
+ name: "Lukavac",
+ id: "lukavac",
+ olxid: "2840"
+ },
+ {
+ name: "Sapna",
+ id: "sapna",
+ olxid: "5699"
+ },
+ {
+ name: "Srebrenik",
+ id: "srebrenik",
+ olxid: "4391"
+ },
+ {
+ name: "Teočak",
+ id: "teoak",
+ olxid: "5010"
+ },
+ {
+ name: "Tuzla",
+ id: "tuzla",
+ olxid: "4944"
+ },
+ {
+ name: "Čelić",
+ id: "eli",
+ olxid: "2801"
+ },
+ {
+ name: "Živinice",
+ id: "ivinice",
+ olxid: "5774"
+ }
+ ]
+ },
+ {
+ name: " Zeničko-dobojski",
+ id: "zenickodobojski",
+ olxid: "15",
+ municipalities: [
+ {
+ name: "Breza",
+ id: "breza",
+ olxid: "704"
+ },
+ {
+ name: "Doboj-Jug",
+ id: "dobojjug",
+ olxid: "1122"
+ },
+ {
+ name: "Kakanj",
+ id: "kakanj",
+ olxid: "2022"
+ },
+ {
+ name: "Maglaj",
+ id: "maglaj",
+ olxid: "2941"
+ },
+ {
+ name: "Olovo",
+ id: "olovo",
+ olxid: "1925"
+ },
+ {
+ name: "Tešanj",
+ id: "teanj",
+ olxid: "4594"
+ },
+ {
+ name: "Usora",
+ id: "usora",
+ olxid: "1087"
+ },
+ {
+ name: "Vareš",
+ id: "vare",
+ olxid: "5037"
+ },
+ {
+ name: "Visoko",
+ id: "visoko",
+ olxid: "5171"
+ },
+ {
+ name: "Zavidovići",
+ id: "zavidovii",
+ olxid: "5548"
+ },
+ {
+ name: "Zenica",
+ id: "zenica",
+ olxid: "4571"
+ },
+ {
+ name: "Žepče",
+ id: "epe",
+ olxid: "2940"
+ }
+ ]
+ },
+ {
+ name: " Bosansko-podrinjski",
+ id: "bosanskopodrinjski",
+ olxid: "15",
+ municipalities: [
+ {
+ name: "Foča",
+ id: "foa",
+ olxid: "1289"
+ },
+ {
+ name: "Goražde",
+ id: "gorade",
+ olxid: "1588"
+ },
+ {
+ name: "Pale",
+ id: "pale",
+ olxid: "3546"
+ }
+ ]
+ },
+ {
+ name: " Srednjobosanski",
+ id: "srednjobosanski",
+ olxid: "6",
+ municipalities: [
+ {
+ name: "Bugojno",
+ id: "bugojno",
+ olxid: "732"
+ },
+ {
+ name: "Busovača",
+ id: "busovaa",
+ olxid: "810"
+ },
+ {
+ name: "Dobretići",
+ id: "dobretii",
+ olxid: "4151"
+ },
+ {
+ name: "Donji Vakuf",
+ id: "donjivakuf",
+ olxid: "1160"
+ },
+ {
+ name: "Fojnica",
+ id: "fojnica",
+ olxid: "1407"
+ },
+ {
+ name: "Gornji Vakuf - Uskoplje",
+ id: "gornjivakufuskoplje",
+ olxid: "1775"
+ },
+ {
+ name: "Jajce",
+ id: "jajce",
+ olxid: "1960"
+ },
+ {
+ name: "Kiseljak",
+ id: "kiseljak",
+ olxid: "2237"
+ },
+ {
+ name: "Kreševo",
+ id: "kreevo",
+ olxid: "2608"
+ },
+ {
+ name: "Novi Travnik",
+ id: "novitravnik",
+ olxid: "3477"
+ },
+ {
+ name: "Travnik",
+ id: "travnik",
+ olxid: "4678"
+ },
+ {
+ name: "Vitez",
+ id: "vitez",
+ olxid: "5422"
+ }
+ ]
+ },
+ {
+ name: " Hercegovačko-neretvanski",
+ id: "hercegovackoneretvanski",
+ olxid: "7",
+ municipalities: [
+ {
+ name: "Grad Mostar",
+ id: "gradmostar",
+ olxid: "3017"
+ },
+ {
+ name: "Jablanica",
+ id: "jablanica",
+ olxid: "1930"
+ },
+ {
+ name: "Konjic",
+ id: "konjic",
+ olxid: "2169"
+ },
+ {
+ name: "Neum",
+ id: "neum",
+ olxid: "3111"
+ },
+ {
+ name: "Prozor",
+ id: "prozor",
+ olxid: "3421"
+ },
+ {
+ name: "Ravno",
+ id: "ravno",
+ olxid: "4769"
+ },
+ {
+ name: "Stolac",
+ id: "stolac",
+ olxid: "4439"
+ },
+ {
+ name: "Čapljina",
+ id: "apljina",
+ olxid: "947"
+ },
+ {
+ name: "Čitluk",
+ id: "itluk",
+ olxid: "1009"
+ }
+ ]
+ },
+ {
+ name: " Zapadno-hercegovački",
+ id: "zapadnohercegovacki",
+ olxid: "8",
+ municipalities: [
+ {
+ name: "Grude",
+ id: "grude",
+ olxid: "1892"
+ },
+ {
+ name: "Ljubuški",
+ id: "ljubuki",
+ olxid: "2905"
+ },
+ {
+ name: "Posušje",
+ id: "posuje",
+ olxid: "3268"
+ },
+ {
+ name: "Široki Brijeg",
+ id: "irokibrijeg",
+ olxid: "2708"
+ }
+ ]
+ },
+ {
+ name: " Livanjski",
+ id: "livanjski",
+ olxid: "10",
+ municipalities: [
+ {
+ name: "Bosansko Grahovo",
+ id: "bosanskograhovo",
+ olxid: "560"
+ },
+ {
+ name: "Drvar",
+ id: "drvar",
+ olxid: "4640"
+ },
+ {
+ name: "Glamoč",
+ id: "glamo",
+ olxid: "1533"
+ },
+ {
+ name: "Kupres",
+ id: "kupres",
+ olxid: "2635"
+ },
+ {
+ name: "Livno",
+ id: "livno",
+ olxid: "2741"
+ },
+ {
+ name: "Tomislavgrad",
+ id: "tomislavgrad",
+ olxid: "1228"
+ }
+ ]
+ },
+ {
+ name: " Banjalučka",
+ id: "banjalučka",
+ olxid: "14",
+ municipalities: [
+ {
+ name: "Banja Luka",
+ id: "banjaluka",
+ olxid: "21"
+ },
+ {
+ name: "Gradiška",
+ id: "gradika",
+ olxid: "305"
+ },
+ {
+ name: "Istočni Drvar",
+ id: "istonidrvar",
+ olxid: "4662"
+ },
+ {
+ name: "Jezero",
+ id: "jezero",
+ olxid: "1965"
+ },
+ {
+ name: "Kneževo",
+ id: "kneevo",
+ olxid: "4147"
+ },
+ {
+ name: "Kostajnica",
+ id: "kostajnica",
+ olxid: "6142"
+ },
+ {
+ name: "Kotor Varoš",
+ id: "kotorvaro",
+ olxid: "2574"
+ },
+ {
+ name: "Kozarska Dubica",
+ id: "kozarskadubica",
+ olxid: "244"
+ },
+ {
+ name: "Krupa na uni",
+ id: "krupanauni",
+ olxid: "382"
+ },
+ {
+ name: "Kupres ",
+ id: "kupres",
+ olxid: "2654"
+ },
+ {
+ name: "Laktaši",
+ id: "laktai",
+ olxid: "2671"
+ },
+ {
+ name: "Mrkonjić Grad",
+ id: "mrkonjigrad",
+ olxid: "3073"
+ },
+ {
+ name: "Novi Grad",
+ id: "novigrad",
+ olxid: "444"
+ },
+ {
+ name: "Oštra Luka",
+ id: "otraluka",
+ olxid: "3737"
+ },
+ {
+ name: "Petrovac",
+ id: "petrovac",
+ olxid: "515"
+ },
+ {
+ name: "Prijedor",
+ id: "prijedor",
+ olxid: "3287"
+ },
+ {
+ name: "Prnjavor",
+ id: "prnjavor",
+ olxid: "3358"
+ },
+ {
+ name: "Ribnik",
+ id: "ribnik",
+ olxid: "2365"
+ },
+ {
+ name: "Srbac",
+ id: "srbac",
+ olxid: "4271"
+ },
+ {
+ name: "Čelinac",
+ id: "elinac",
+ olxid: "979"
+ },
+ {
+ name: "Šipovo",
+ id: "ipovo",
+ olxid: "4509"
+ }
+ ]
+ },
+ {
+ name: " Dobojsko-Bijeljinska",
+ id: "dobojskobijeljinska",
+ olxid: "15",
+ municipalities: [
+ {
+ name: "Bijeljina",
+ id: "bijeljina",
+ olxid: "123"
+ },
+ {
+ name: "Bosanski Brod",
+ id: "bosanskibrod",
+ olxid: "421"
+ },
+ {
+ name: "Derventa",
+ id: "derventa",
+ olxid: "1030"
+ },
+ {
+ name: "Doboj",
+ id: "doboj",
+ olxid: "1088"
+ },
+ {
+ name: "Donji Žabar",
+ id: "donjiabar",
+ olxid: "3254"
+ },
+ {
+ name: "Lopare",
+ id: "lopare",
+ olxid: "2800"
+ },
+ {
+ name: "Lukavac",
+ id: "lukavac",
+ olxid: "6029"
+ },
+ {
+ name: "Modriča",
+ id: "modria",
+ olxid: "2996"
+ },
+ {
+ name: "Pelagićevo",
+ id: "pelagievo",
+ olxid: "1856"
+ },
+ {
+ name: "Petrovo",
+ id: "petrovo",
+ olxid: "1827"
+ },
+ {
+ name: "Stanari",
+ id: "stanari",
+ olxid: "1148"
+ },
+ {
+ name: "Teslić",
+ id: "tesli",
+ olxid: "4549"
+ },
+ {
+ name: "Tešanj",
+ id: "teanj",
+ olxid: "4636"
+ },
+ {
+ name: "Travnik",
+ id: "travnik",
+ olxid: "4692"
+ },
+ {
+ name: "Tuzla",
+ id: "tuzla",
+ olxid: "4966"
+ },
+ {
+ name: "Ugljevik",
+ id: "ugljevik",
+ olxid: "5009"
+ },
+ {
+ name: "Vukosavlje",
+ id: "vukosavlje",
+ olxid: "3197"
+ },
+ {
+ name: "Šamac",
+ id: "amac",
+ olxid: "539"
+ }
+ ]
+ },
+ {
+ name: " Sarajevsko-Zvornička",
+ id: "sarajevskozvornicka",
+ olxid: "16",
+ municipalities: [
+ {
+ name: "Bratunac",
+ id: "bratunac",
+ olxid: "595"
+ },
+ {
+ name: "Han Pijesak",
+ id: "hanpijesak",
+ olxid: "1904"
+ },
+ {
+ name: "Ilijaš",
+ id: "ilija",
+ olxid: "3947"
+ },
+ {
+ name: "Istočni Stari Grad",
+ id: "istonistarigrad",
+ olxid: "4049"
+ },
+ {
+ name: "Kasindo",
+ id: "kasindo",
+ olxid: "3880"
+ },
+ {
+ name: "Kladanj",
+ id: "kladanj",
+ olxid: "2325"
+ },
+ {
+ name: "Lukavica",
+ id: "lukavica",
+ olxid: "3971"
+ },
+ {
+ name: "Milići",
+ id: "milii",
+ olxid: "6143"
+ },
+ {
+ name: "Olovo",
+ id: "olovo",
+ olxid: "3221"
+ },
+ {
+ name: "Osmaci",
+ id: "osmaci",
+ olxid: "2128"
+ },
+ {
+ name: "Pale",
+ id: "pale",
+ olxid: "3978"
+ },
+ {
+ name: "Rogatica",
+ id: "rogatica",
+ olxid: "3529"
+ },
+ {
+ name: "Rudo",
+ id: "rudo",
+ olxid: "3648"
+ },
+ {
+ name: "Sarajevo-Novi Grad",
+ id: "sarajevonovigrad",
+ olxid: "6069"
+ },
+ {
+ name: "Sokolac",
+ id: "sokolac",
+ olxid: "4183"
+ },
+ {
+ name: "Srebrenica",
+ id: "srebrenica",
+ olxid: "4310"
+ },
+ {
+ name: "Trnovo",
+ id: "trnovo",
+ olxid: "4067"
+ },
+ {
+ name: "Ustiprača",
+ id: "ustipraa",
+ olxid: "1593"
+ },
+ {
+ name: "Višegrad",
+ id: "viegrad",
+ olxid: "5259"
+ },
+ {
+ name: "Vlasenica",
+ id: "vlasenica",
+ olxid: "5456"
+ },
+ {
+ name: "Zvornik",
+ id: "zvornik",
+ olxid: "5684"
+ },
+ {
+ name: "Šekovići",
+ id: "ekovii",
+ olxid: "4475"
+ },
+ {
+ name: "Žepa",
+ id: "epa",
+ olxid: "1906"
+ }
+ ]
+ },
+ {
+ name: " Trebinjsko-Fočanska",
+ id: "trebinjskofocanska",
+ olxid: "17",
+ municipalities: [
+ {
+ name: "Berkovići",
+ id: "berkovii",
+ olxid: "4441"
+ },
+ {
+ name: "Bileća",
+ id: "bilea",
+ olxid: "183"
+ },
+ {
+ name: "Foča",
+ id: "foa",
+ olxid: "1287"
+ },
+ {
+ name: "Gacko",
+ id: "gacko",
+ olxid: "1462"
+ },
+ {
+ name: "Istočni Mostar",
+ id: "istonimostar",
+ olxid: "3038"
+ },
+ {
+ name: "Kalinovik",
+ id: "kalinovik",
+ olxid: "2164"
+ },
+ {
+ name: "Ljubinje",
+ id: "ljubinje",
+ olxid: "2884"
+ },
+ {
+ name: "Nevesinje",
+ id: "nevesinje",
+ olxid: "3138"
+ },
+ {
+ name: "Trebinje",
+ id: "trebinje",
+ olxid: "4766"
+ },
+ {
+ name: "Čajniče",
+ id: "ajnie",
+ olxid: "911"
+ }
+ ]
+ },
+ {
+ name: "Distrikt Brčko",
+ id: "distriktbrcko",
+ olxid: "12",
+ municipalities: [
+ {
+ name: "Brčko",
+ id: "brko",
+ olxid: "12"
+ }
+ ]
+ }
];
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 getRegion = regionId => {
+ return regions.find(region => region.id === regionId);
};
-const getRegionName = (regionId) => {
- const region = getRegion(regionId);
- return (region && region.name) ? region.name : null;
+const getRegionName = regionId => {
+ const region = getRegion(regionId);
+ return region && region.name ? region.name : null;
};
-const getMunicipalitiesForRegion = (regionId) => {
- const region = getRegion(regionId);
- return (region && region.municipalities) ? region.municipalities : null;
+const getMunicipalitiesForRegion = regionId => {
+ const region = getRegion(regionId);
+ return region && region.municipalities ? region.municipalities : null;
};
const getMunicipality = (regionId, municipalityId) => {
- const region = getRegion(regionId);
- if (!region) {
- return null;
- }
+ const region = getRegion(regionId);
+ if (!region) {
+ return null;
+ }
- const municipality = region.municipalities.find(municipality => municipality.id === municipalityId);
- if (!municipality) {
- return null;
- }
+ const municipality = region.municipalities.find(
+ municipality => municipality.id === municipalityId
+ );
+ if (!municipality) {
+ return null;
+ }
- return municipality;
+ return municipality;
};
const getMunicipalityName = (regionId, municipalityId) => {
- const region = getRegion(regionId);
- if (!region) {
- return null;
- }
+ const region = getRegion(regionId);
+ if (!region) {
+ return null;
+ }
- const municipality = region.municipalities.find(municipality => municipality.id === municipalityId);
- if (!municipality) {
- return null;
- }
+ const municipality = region.municipalities.find(
+ municipality => municipality.id === municipalityId
+ );
+ if (!municipality) {
+ return null;
+ }
- return municipality.name;
+ return municipality.name;
};
module.exports = {
- getRegion,
- getRegions,
- getRegionName,
- getMunicipalitiesForRegion,
- getMunicipalityName,
- getMunicipality
+ getRegion,
+ getRegions,
+ getRegionName,
+ getMunicipalitiesForRegion,
+ getMunicipalityName,
+ getMunicipality
};
diff --git a/app/helpers/email.js b/app/helpers/email.js
index c5b7d66..730f2a6 100644
--- a/app/helpers/email.js
+++ b/app/helpers/email.js
@@ -1,7 +1,6 @@
-
-const isValidEmail = (email) => {
+const isValidEmail = email => {
const simpleEmailRegex = /^.+@.+\..+$/;
- return (email && email.length < 250 && simpleEmailRegex.test(email));
+ return email && email.length < 250 && simpleEmailRegex.test(email);
};
module.exports = {
diff --git a/app/helpers/enums.js b/app/helpers/enums.js
index ff78e09..91c243d 100644
--- a/app/helpers/enums.js
+++ b/app/helpers/enums.js
@@ -1,57 +1,57 @@
const realEstateTypes = [
- { title: "Kuća", id: "kuca", hasGardenSize: true, olxCategory: 24 },
- { title: "Stan", id: "stan", hasGardenSize: false, olxCategory: 23},
- { title: "Vikendica", id: "vikendica", hasGardenSize: true, olxCategory: 26 }
+ { title: "Kuća", id: "kuca", hasGardenSize: true, olxCategory: 24 },
+ { title: "Stan", id: "stan", hasGardenSize: false, olxCategory: 23 },
+ { title: "Vikendica", id: "vikendica", hasGardenSize: true, olxCategory: 26 }
];
const sizes = [
- { title: "do 50 m2", id: "50m2" },
- { title: "do 75 m2", id: "75m2" },
- { title: "do 100 m2", id: "100m2" },
- { title: "do 150 m2", id: "150m2" },
- { title: "do 200 m2", id: "200m2" },
- { title: "preko 200 m2", id: "moreThan200m2" }
+ { title: "do 50 m2", id: "50m2" },
+ { title: "do 75 m2", id: "75m2" },
+ { title: "do 100 m2", id: "100m2" },
+ { title: "do 150 m2", id: "150m2" },
+ { title: "do 200 m2", id: "200m2" },
+ { title: "preko 200 m2", id: "moreThan200m2" }
];
const gardenSizes = [
- { title: "do 100 m2", id: "100m2" },
- { title: "do 500 m2", id: "500m2" },
- { title: "do 1 dunum", id: "1000m2" },
- { title: "do 2 dunuma", id: "2000m2" },
- { title: "do 3 dunuma", id: "3000m2" },
- { title: "preko 3 dunuma", id: "moreThan3000m2" }
+ { title: "do 100 m2", id: "100m2" },
+ { title: "do 500 m2", id: "500m2" },
+ { title: "do 1 dunum", id: "1000m2" },
+ { title: "do 2 dunuma", id: "2000m2" },
+ { title: "do 3 dunuma", id: "3000m2" },
+ { title: "preko 3 dunuma", id: "moreThan3000m2" }
];
const prices = [
- { title: "do 50 000 KM", id: "50kKM" },
- { title: "do 100 000 KM", id: "100kKM" },
- { title: "do 150 000 KM", id: "150kKM" },
- { title: "do 200 000 KM", id: "200kKM" },
- { title: "do 250 000 KM", id: "250kKM" },
- { title: "preko 250 000 KM", id: "moreThan250kKM" }
+ { title: "do 50 000 KM", id: "50kKM" },
+ { title: "do 100 000 KM", id: "100kKM" },
+ { title: "do 150 000 KM", id: "150kKM" },
+ { title: "do 200 000 KM", id: "200kKM" },
+ { title: "do 250 000 KM", id: "250kKM" },
+ { title: "preko 250 000 KM", id: "moreThan250kKM" }
];
const getEnumObject = (enumType, enumId) => {
- return enumType.find(enumValue => enumValue.id === enumId);
+ return enumType.find(enumValue => enumValue.id === enumId);
};
-const getRealEstateTypeEnum = (enumId) => {
- return getEnumObject(realEstateTypes, enumId) || null;
-}
+const getRealEstateTypeEnum = enumId => {
+ return getEnumObject(realEstateTypes, enumId) || null;
+};
const getEnumTypeTitle = (enumType, enumId) => {
- const enumObject = getEnumObject(enumType, enumId);
- if (!enumObject){
- return null;
- }
- return enumObject.title;
+ const enumObject = getEnumObject(enumType, enumId);
+ if (!enumObject) {
+ return null;
+ }
+ return enumObject.title;
};
module.exports = {
- realEstateTypes,
- sizes,
- gardenSizes,
- prices,
- getRealEstateTypeEnum,
- getEnumTypeTitle,
+ realEstateTypes,
+ sizes,
+ gardenSizes,
+ prices,
+ getRealEstateTypeEnum,
+ getEnumTypeTitle
};
diff --git a/app/helpers/url.js b/app/helpers/url.js
index 8bf1cb5..78036c5 100644
--- a/app/helpers/url.js
+++ b/app/helpers/url.js
@@ -1,12 +1,12 @@
-const db = require('../models/index');
+const db = require("../models/index");
-const currentRERequest = async (req) => {
- const uniqueId = req.params['request_id'];
- if(!uniqueId) return null;
+const currentRERequest = async req => {
+ const uniqueId = req.params["request_id"];
+ if (!uniqueId) return null;
- const request = await db.RealEstateRequest.findOne({ where: {uniqueId} });
+ const request = await db.RealEstateRequest.findOne({ where: { uniqueId } });
return request;
};
module.exports = {
- currentRERequest,
+ currentRERequest
};
diff --git a/app/lib/sendNotification.js b/app/lib/sendNotification.js
index fe84d31..14e6b73 100644
--- a/app/lib/sendNotification.js
+++ b/app/lib/sendNotification.js
@@ -1,9 +1,8 @@
const scrapTheItems = require("./scrapTheItems");
const convertToDate = require("./convertToDate");
-const AWS = require('aws-sdk');
+const AWS = require("aws-sdk");
// AWS.config.update({region: 'eu-central-1'});
-
async function sendNotification(marketAlert) {
const { id, email, olx_url } = marketAlert;
let url =
@@ -19,37 +18,37 @@ async function sendNotification(marketAlert) {
// Create sendEmail params
const params = {
- Destination: { /* required */
- CcAddresses: [
- ],
- ToAddresses: [
- email
- ]
+ Destination: {
+ /* required */
+ CcAddresses: [],
+ ToAddresses: [email]
},
- Message: { /* required */
- Body: { /* required */
+ Message: {
+ /* required */
+ Body: {
+ /* required */
Html: {
- Charset: "UTF-8",
- Data: message
+ Charset: "UTF-8",
+ Data: message
},
Text: {
- Charset: "UTF-8",
- Data: message // TODO: convert to text
+ Charset: "UTF-8",
+ Data: message // TODO: convert to text
}
- },
- Subject: {
- Charset: 'UTF-8',
- Data: 'Javimi alert'
- }
+ },
+ Subject: {
+ Charset: "UTF-8",
+ Data: "Javimi alert"
+ }
},
- Source: 'info@saburly.com', /* required */
- ReplyToAddresses: [
- 'info@saburly.com',
- ],
+ Source: "info@saburly.com" /* required */,
+ ReplyToAddresses: ["info@saburly.com"]
};
if (message) {
- const sendPromise = new AWS.SES({apiVersion: '2010-12-01'}).sendEmail(params).promise();
+ const sendPromise = new AWS.SES({ apiVersion: "2010-12-01" })
+ .sendEmail(params)
+ .promise();
await sendPromise;
return { id, date: String(convertToDate(lastDate)) };
}
diff --git a/app/migrations/20190417035319-create-market-alert.js b/app/migrations/20190417035319-create-market-alert.js
index 9ad4e62..7c4260f 100644
--- a/app/migrations/20190417035319-create-market-alert.js
+++ b/app/migrations/20190417035319-create-market-alert.js
@@ -1,7 +1,7 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.createTable('MarketAlerts', {
+ return queryInterface.createTable("MarketAlerts", {
id: {
allowNull: false,
autoIncrement: true,
@@ -29,6 +29,6 @@ module.exports = {
});
},
down: (queryInterface, Sequelize) => {
- return queryInterface.dropTable('MarketAlerts');
+ return queryInterface.dropTable("MarketAlerts");
}
};
diff --git a/app/migrations/20190417035707-create-real-estate-request.js b/app/migrations/20190417035707-create-real-estate-request.js
index 49be61f..b0309f9 100644
--- a/app/migrations/20190417035707-create-real-estate-request.js
+++ b/app/migrations/20190417035707-create-real-estate-request.js
@@ -1,7 +1,7 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.createTable('RealEstateRequests', {
+ return queryInterface.createTable("RealEstateRequests", {
id: {
allowNull: false,
autoIncrement: true,
@@ -28,6 +28,6 @@ module.exports = {
});
},
down: (queryInterface, Sequelize) => {
- return queryInterface.dropTable('RealEstateRequests');
+ return queryInterface.dropTable("RealEstateRequests");
}
};
diff --git a/app/migrations/20190427043621-add_city_to_real_estate_request.js b/app/migrations/20190427043621-add_city_to_real_estate_request.js
index be6f6a8..f64f12d 100644
--- a/app/migrations/20190427043621-add_city_to_real_estate_request.js
+++ b/app/migrations/20190427043621-add_city_to_real_estate_request.js
@@ -1,18 +1,15 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.addColumn(
- 'RealEstateRequests',
- 'city',
- Sequelize.STRING
+ "RealEstateRequests",
+ "city",
+ Sequelize.STRING
);
},
down: (queryInterface, Sequelize) => {
- return queryInterface.removeColumn(
- 'RealEstateRequests',
- 'city'
- );
+ return queryInterface.removeColumn("RealEstateRequests", "city");
}
};
diff --git a/app/migrations/20190429050222-add_place_to_real_estate_request.js b/app/migrations/20190429050222-add_place_to_real_estate_request.js
index 3fb0b4b..5273e5f 100644
--- a/app/migrations/20190429050222-add_place_to_real_estate_request.js
+++ b/app/migrations/20190429050222-add_place_to_real_estate_request.js
@@ -1,18 +1,15 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.addColumn(
- 'RealEstateRequests',
- 'place',
- Sequelize.STRING
+ "RealEstateRequests",
+ "place",
+ Sequelize.STRING
);
},
down: (queryInterface, Sequelize) => {
- return queryInterface.removeColumn(
- 'RealEstateRequests',
- 'place'
- );
+ return queryInterface.removeColumn("RealEstateRequests", "place");
}
};
diff --git a/app/migrations/20190516180226-rename-place-column.js b/app/migrations/20190516180226-rename-place-column.js
index 55f6484..58b9581 100644
--- a/app/migrations/20190516180226-rename-place-column.js
+++ b/app/migrations/20190516180226-rename-place-column.js
@@ -1,19 +1,19 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.renameColumn(
- 'RealEstateRequests',
- 'place',
- 'municipality'
+ "RealEstateRequests",
+ "place",
+ "municipality"
);
},
down: (queryInterface, Sequelize) => {
return queryInterface.renameColumn(
- 'RealEstateRequests',
- 'municipality',
- 'place'
+ "RealEstateRequests",
+ "municipality",
+ "place"
);
}
};
diff --git a/app/migrations/20190516222240-rename-city-column.js b/app/migrations/20190516222240-rename-city-column.js
index 7b8742e..2a0e717 100644
--- a/app/migrations/20190516222240-rename-city-column.js
+++ b/app/migrations/20190516222240-rename-city-column.js
@@ -1,19 +1,11 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.renameColumn(
- 'RealEstateRequests',
- 'city',
- 'region'
- );
+ return queryInterface.renameColumn("RealEstateRequests", "city", "region");
},
down: (queryInterface, Sequelize) => {
- return queryInterface.renameColumn(
- 'RealEstateRequests',
- 'region',
- 'city'
- );
+ return queryInterface.renameColumn("RealEstateRequests", "region", "city");
}
};
diff --git a/app/migrations/20190517072957-add-size-to-real-estate-request.js b/app/migrations/20190517072957-add-size-to-real-estate-request.js
index 7f28585..e910c21 100644
--- a/app/migrations/20190517072957-add-size-to-real-estate-request.js
+++ b/app/migrations/20190517072957-add-size-to-real-estate-request.js
@@ -1,20 +1,13 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.addColumn(
- 'RealEstateRequests',
- 'size',
- {
- type: Sequelize.STRING
- }
- );
+ return queryInterface.addColumn("RealEstateRequests", "size", {
+ type: Sequelize.STRING
+ });
},
down: (queryInterface, Sequelize) => {
- return queryInterface.removeColumn(
- 'RealEstateRequests',
- 'size'
- );
+ return queryInterface.removeColumn("RealEstateRequests", "size");
}
};
diff --git a/app/migrations/20190517090015-add-gardenSize-to-real-estate-request.js b/app/migrations/20190517090015-add-gardenSize-to-real-estate-request.js
index 84e2319..18e7f4c 100644
--- a/app/migrations/20190517090015-add-gardenSize-to-real-estate-request.js
+++ b/app/migrations/20190517090015-add-gardenSize-to-real-estate-request.js
@@ -1,20 +1,13 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.addColumn(
- 'RealEstateRequests',
- 'gardenSize',
- {
- type: Sequelize.STRING
- }
- );
+ return queryInterface.addColumn("RealEstateRequests", "gardenSize", {
+ type: Sequelize.STRING
+ });
},
down: (queryInterface, Sequelize) => {
- return queryInterface.removeColumn(
- 'RealEstateRequests',
- 'gardenSize'
- );
+ return queryInterface.removeColumn("RealEstateRequests", "gardenSize");
}
};
diff --git a/app/migrations/20190517092716-add-price-to-real-estate-request.js b/app/migrations/20190517092716-add-price-to-real-estate-request.js
index 13bcae6..2035378 100644
--- a/app/migrations/20190517092716-add-price-to-real-estate-request.js
+++ b/app/migrations/20190517092716-add-price-to-real-estate-request.js
@@ -1,20 +1,13 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.addColumn(
- 'RealEstateRequests',
- 'price',
- {
- type: Sequelize.STRING
- }
- );
+ return queryInterface.addColumn("RealEstateRequests", "price", {
+ type: Sequelize.STRING
+ });
},
down: (queryInterface, Sequelize) => {
- return queryInterface.removeColumn(
- 'RealEstateRequests',
- 'price'
- );
+ return queryInterface.removeColumn("RealEstateRequests", "price");
}
};
diff --git a/app/migrations/20190523144812-activate-postgis.js b/app/migrations/20190523144812-activate-postgis.js
index 8b944e3..48c8cde 100644
--- a/app/migrations/20190523144812-activate-postgis.js
+++ b/app/migrations/20190523144812-activate-postgis.js
@@ -1,15 +1,19 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.sequelize.query("CREATE EXTENSION postgis").then(([results, metadata]) => {
- /// No result
- })
+ return queryInterface.sequelize
+ .query("CREATE EXTENSION postgis")
+ .then(([results, metadata]) => {
+ /// No result
+ });
},
down: (queryInterface, Sequelize) => {
- return queryInterface.sequelize.query("DROP EXTENSION IF EXISTS postgis").then(([results, metadata]) => {
+ return queryInterface.sequelize
+ .query("DROP EXTENSION IF EXISTS postgis")
+ .then(([results, metadata]) => {
/// No result
- })
+ });
}
};
diff --git a/app/migrations/20190523151420-add-bounding-box-column.js b/app/migrations/20190523151420-add-bounding-box-column.js
index e319421..601b566 100644
--- a/app/migrations/20190523151420-add-bounding-box-column.js
+++ b/app/migrations/20190523151420-add-bounding-box-column.js
@@ -1,17 +1,21 @@
-'use strict';
+"use strict";
module.exports = {
-
up: (queryInterface, Sequelize) => {
-
- return queryInterface.sequelize.query("ALTER TABLE \"RealEstateRequests\" ADD COLUMN bounding_box geometry(Polygon);").then(([results, metadata]) => {
- /// No result
- })
+ return queryInterface.sequelize
+ .query(
+ 'ALTER TABLE "RealEstateRequests" ADD COLUMN bounding_box geometry(Polygon);'
+ )
+ .then(([results, metadata]) => {
+ /// No result
+ });
},
down: (queryInterface, Sequelize) => {
- return queryInterface.sequelize.query("ALTER TABLE \"RealEstateRequests\" DROP COLUMN bounding_box").then(([results, metadata]) => {
- /// No result
- })
+ return queryInterface.sequelize
+ .query('ALTER TABLE "RealEstateRequests" DROP COLUMN bounding_box')
+ .then(([results, metadata]) => {
+ /// No result
+ });
}
-};
\ No newline at end of file
+};
diff --git a/app/migrations/20190529093410-slider-fields.js b/app/migrations/20190529093410-slider-fields.js
index d260600..b4dc687 100644
--- a/app/migrations/20190529093410-slider-fields.js
+++ b/app/migrations/20190529093410-slider-fields.js
@@ -1,27 +1,48 @@
module.exports = {
- up: (queryInterface, Sequelize) => {
- return queryInterface.sequelize.transaction((t) => {
- return Promise.all([
- queryInterface.addColumn('RealEstateRequests', 'sizeRange', {
- type: Sequelize.STRING
- }, { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'gardenSizeRange', {
- type: Sequelize.STRING,
- }, { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'priceRange', {
- type: Sequelize.STRING,
- }, { transaction: t })
- ])
- })
- },
+ up: (queryInterface, Sequelize) => {
+ return queryInterface.sequelize.transaction(t => {
+ return Promise.all([
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "sizeRange",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "gardenSizeRange",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "priceRange",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ )
+ ]);
+ });
+ },
- down: (queryInterface, Sequelize) => {
- return queryInterface.sequelize.transaction((t) => {
- return Promise.all([
- queryInterface.removeColumn('RealEstateRequests', 'sizeRange', { transaction: t }),
- queryInterface.removeColumn('RealEstateRequests', 'gardenSizeRange', { transaction: t }),
- queryInterface.removeColumn('RealEstateRequests', 'priceRange', { transaction: t })
- ])
+ down: (queryInterface, Sequelize) => {
+ return queryInterface.sequelize.transaction(t => {
+ return Promise.all([
+ queryInterface.removeColumn("RealEstateRequests", "sizeRange", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("RealEstateRequests", "gardenSizeRange", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("RealEstateRequests", "priceRange", {
+ transaction: t
})
- }
-};
\ No newline at end of file
+ ]);
+ });
+ }
+};
diff --git a/app/migrations/20190530101945-range-fields.js b/app/migrations/20190530101945-range-fields.js
index caad42c..ef2a475 100644
--- a/app/migrations/20190530101945-range-fields.js
+++ b/app/migrations/20190530101945-range-fields.js
@@ -1,63 +1,147 @@
module.exports = {
- up: (queryInterface, Sequelize) => {
- return queryInterface.sequelize.transaction((t) => {
- return Promise.all([
- queryInterface.removeColumn('RealEstateRequests', 'sizeRange', { transaction: t }),
- queryInterface.removeColumn('RealEstateRequests', 'gardenSizeRange', { transaction: t }),
- queryInterface.removeColumn('RealEstateRequests', 'priceRange', { transaction: t }),
- queryInterface.removeColumn('RealEstateRequests', 'size', { transaction: t }),
- queryInterface.removeColumn('RealEstateRequests', 'gardenSize', { transaction: t }),
- queryInterface.removeColumn('RealEstateRequests', 'price', { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'gardenSizeMin', {
- type: Sequelize.INTEGER,
- }, { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'gardenSizeMax', {
- type: Sequelize.INTEGER,
- }, { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'sizeMin', {
- type: Sequelize.INTEGER
- }, { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'sizeMax', {
- type: Sequelize.INTEGER,
- }, { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'priceMin', {
- type: Sequelize.INTEGER,
- }, { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'priceMax', {
- type: Sequelize.INTEGER
- }, { transaction: t })
- ])
- })
- },
+ up: (queryInterface, Sequelize) => {
+ return queryInterface.sequelize.transaction(t => {
+ return Promise.all([
+ queryInterface.removeColumn("RealEstateRequests", "sizeRange", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("RealEstateRequests", "gardenSizeRange", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("RealEstateRequests", "priceRange", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("RealEstateRequests", "size", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("RealEstateRequests", "gardenSize", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("RealEstateRequests", "price", {
+ transaction: t
+ }),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "gardenSizeMin",
+ {
+ type: Sequelize.INTEGER
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "gardenSizeMax",
+ {
+ type: Sequelize.INTEGER
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "sizeMin",
+ {
+ type: Sequelize.INTEGER
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "sizeMax",
+ {
+ type: Sequelize.INTEGER
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "priceMin",
+ {
+ type: Sequelize.INTEGER
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "priceMax",
+ {
+ type: Sequelize.INTEGER
+ },
+ { transaction: t }
+ )
+ ]);
+ });
+ },
- down: (queryInterface, Sequelize) => {
- return queryInterface.sequelize.transaction((t) => {
- return Promise.all([
- queryInterface.removeColumn('RealEstateRequests', 'gardenSizeMin', { transaction: t }),
- queryInterface.removeColumn('RealEstateRequests', 'gardenSizeMax', { transaction: t }),
- queryInterface.removeColumn('RealEstateRequests', 'sizeMin', { transaction: t }),
- queryInterface.removeColumn('RealEstateRequests', 'sizeMax', { transaction: t }),
- queryInterface.removeColumn('RealEstateRequests', 'priceMin', { transaction: t }),
- queryInterface.removeColumn('RealEstateRequests', 'priceMin', { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'priceMax', {
- type: Sequelize.STRING
- }, { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'gardenSizeRange', {
- type: Sequelize.STRING,
- }, { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'priceRange', {
- type: Sequelize.STRING,
- }, { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'size', {
- type: Sequelize.STRING
- }, { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'gardenSize', {
- type: Sequelize.STRING,
- }, { transaction: t }),
- queryInterface.addColumn('RealEstateRequests', 'price', {
- type: Sequelize.STRING,
- }, { transaction: t })
- ])
- })
- }
-};
\ No newline at end of file
+ down: (queryInterface, Sequelize) => {
+ return queryInterface.sequelize.transaction(t => {
+ return Promise.all([
+ queryInterface.removeColumn("RealEstateRequests", "gardenSizeMin", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("RealEstateRequests", "gardenSizeMax", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("RealEstateRequests", "sizeMin", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("RealEstateRequests", "sizeMax", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("RealEstateRequests", "priceMin", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("RealEstateRequests", "priceMin", {
+ transaction: t
+ }),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "priceMax",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "gardenSizeRange",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "priceRange",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "size",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "gardenSize",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "RealEstateRequests",
+ "price",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ )
+ ]);
+ });
+ }
+};
diff --git a/app/migrations/20190531111232-subscribed-boolean.js b/app/migrations/20190531111232-subscribed-boolean.js
index 2143f1c..acb4dd3 100644
--- a/app/migrations/20190531111232-subscribed-boolean.js
+++ b/app/migrations/20190531111232-subscribed-boolean.js
@@ -1,18 +1,15 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.addColumn(
- 'RealEstateRequests',
- 'subscribed',
- Sequelize.BOOLEAN
+ "RealEstateRequests",
+ "subscribed",
+ Sequelize.BOOLEAN
);
},
down: (queryInterface, Sequelize) => {
- return queryInterface.removeColumn(
- 'RealEstateRequests',
- 'subscribed'
- );
+ return queryInterface.removeColumn("RealEstateRequests", "subscribed");
}
};
diff --git a/app/migrations/20190618103020-expand-maketalert.js b/app/migrations/20190618103020-expand-maketalert.js
index 54eed96..20cf2c7 100644
--- a/app/migrations/20190618103020-expand-maketalert.js
+++ b/app/migrations/20190618103020-expand-maketalert.js
@@ -1,37 +1,70 @@
-'use strict';
+"use strict";
module.exports = {
- up: (queryInterface, Sequelize) => {
- return queryInterface.sequelize.transaction((t) => {
- return Promise.all([
- queryInterface.addColumn('MarketAlerts', 'size', {
- type: Sequelize.INTEGER,
- }, { transaction: t }),
- queryInterface.addColumn('MarketAlerts', 'gardenSize', {
- type: Sequelize.INTEGER,
- }, { transaction: t }),
- queryInterface.addColumn('MarketAlerts', 'price', {
- type: Sequelize.INTEGER,
- }, { transaction: t }),
- queryInterface.addColumn('MarketAlerts', 'municipality', {
- type: Sequelize.STRING,
- }, { transaction: t }),
- queryInterface.addColumn('MarketAlerts', 'region', {
- type: Sequelize.STRING,
- }, { transaction: t })
- ])
- })
- },
+ up: (queryInterface, Sequelize) => {
+ return queryInterface.sequelize.transaction(t => {
+ return Promise.all([
+ queryInterface.addColumn(
+ "MarketAlerts",
+ "size",
+ {
+ type: Sequelize.INTEGER
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "MarketAlerts",
+ "gardenSize",
+ {
+ type: Sequelize.INTEGER
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "MarketAlerts",
+ "price",
+ {
+ type: Sequelize.INTEGER
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "MarketAlerts",
+ "municipality",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "MarketAlerts",
+ "region",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ )
+ ]);
+ });
+ },
- down: (queryInterface, Sequelize) => {
- return queryInterface.sequelize.transaction((t) => {
- return Promise.all([
- queryInterface.removeColumn('MarketAlerts', 'size', { transaction: t }),
- queryInterface.removeColumn('MarketAlerts', 'gardenSize', { transaction: t }),
- queryInterface.removeColumn('MarketAlerts', 'price', { transaction: t }),
- queryInterface.removeColumn('MarketAlerts', 'municipality', { transaction: t }),
- queryInterface.removeColumn('MarketAlerts', 'region', { transaction: t })
- ])
+ down: (queryInterface, Sequelize) => {
+ return queryInterface.sequelize.transaction(t => {
+ return Promise.all([
+ queryInterface.removeColumn("MarketAlerts", "size", { transaction: t }),
+ queryInterface.removeColumn("MarketAlerts", "gardenSize", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("MarketAlerts", "price", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("MarketAlerts", "municipality", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("MarketAlerts", "region", {
+ transaction: t
})
- }
+ ]);
+ });
+ }
};
diff --git a/app/migrations/20190618124522-marketalerts-additional-info.js b/app/migrations/20190618124522-marketalerts-additional-info.js
index 48847d1..330faf5 100644
--- a/app/migrations/20190618124522-marketalerts-additional-info.js
+++ b/app/migrations/20190618124522-marketalerts-additional-info.js
@@ -1,33 +1,59 @@
-'use strict';
+"use strict";
module.exports = {
- up: (queryInterface, Sequelize) => {
- return queryInterface.sequelize.transaction((t) => {
- return Promise.all([
- queryInterface.removeColumn('MarketAlerts', 'olxUrl', { transaction: t }),
- queryInterface.addColumn('MarketAlerts', 'url', {
- type: Sequelize.STRING,
- }, { transaction: t }),
- queryInterface.addColumn('MarketAlerts', 'realestateOrigin', {
- type: Sequelize.STRING,
- }, { transaction: t }),
- queryInterface.addColumn('MarketAlerts', 'originId', {
- type: Sequelize.STRING,
- }, { transaction: t })
- ])
- })
- },
+ up: (queryInterface, Sequelize) => {
+ return queryInterface.sequelize.transaction(t => {
+ return Promise.all([
+ queryInterface.removeColumn("MarketAlerts", "olxUrl", {
+ transaction: t
+ }),
+ queryInterface.addColumn(
+ "MarketAlerts",
+ "url",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "MarketAlerts",
+ "realestateOrigin",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ ),
+ queryInterface.addColumn(
+ "MarketAlerts",
+ "originId",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ )
+ ]);
+ });
+ },
- down: (queryInterface, Sequelize) => {
- return queryInterface.sequelize.transaction((t) => {
- return Promise.all([
- queryInterface.removeColumn('MarketAlerts', 'url', { transaction: t }),
- queryInterface.removeColumn('MarketAlerts', 'realestateOrigin', { transaction: t }),
- queryInterface.removeColumn('MarketAlerts', 'originId', { transaction: t }),
- queryInterface.addColumn('MarketAlerts', 'olxUrl', {
- type: Sequelize.STRING
- }, { transaction: t })
- ])
- })
- }
+ down: (queryInterface, Sequelize) => {
+ return queryInterface.sequelize.transaction(t => {
+ return Promise.all([
+ queryInterface.removeColumn("MarketAlerts", "url", { transaction: t }),
+ queryInterface.removeColumn("MarketAlerts", "realestateOrigin", {
+ transaction: t
+ }),
+ queryInterface.removeColumn("MarketAlerts", "originId", {
+ transaction: t
+ }),
+ queryInterface.addColumn(
+ "MarketAlerts",
+ "olxUrl",
+ {
+ type: Sequelize.STRING
+ },
+ { transaction: t }
+ )
+ ]);
+ });
+ }
};
diff --git a/app/migrations/20190621162321-add-category-to-marketalert.js b/app/migrations/20190621162321-add-category-to-marketalert.js
index d8a49f5..8f7a755 100644
--- a/app/migrations/20190621162321-add-category-to-marketalert.js
+++ b/app/migrations/20190621162321-add-category-to-marketalert.js
@@ -1,20 +1,13 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.addColumn(
- 'MarketAlerts',
- 'realEstateType',
- {
- type: Sequelize.STRING
- }
- );
+ return queryInterface.addColumn("MarketAlerts", "realEstateType", {
+ type: Sequelize.STRING
+ });
},
down: (queryInterface, Sequelize) => {
- return queryInterface.removeColumn(
- 'MarketAlerts',
- 'realEstateType'
- );
+ return queryInterface.removeColumn("MarketAlerts", "realEstateType");
}
};
diff --git a/app/migrations/20190625120813-add-notification-sent-boolean-marketalerts.js b/app/migrations/20190625120813-add-notification-sent-boolean-marketalerts.js
index f70e6f6..339f4be 100644
--- a/app/migrations/20190625120813-add-notification-sent-boolean-marketalerts.js
+++ b/app/migrations/20190625120813-add-notification-sent-boolean-marketalerts.js
@@ -1,20 +1,13 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.addColumn(
- 'MarketAlerts',
- 'notified',
- {
- type: Sequelize.BOOLEAN
- }
- );
+ return queryInterface.addColumn("MarketAlerts", "notified", {
+ type: Sequelize.BOOLEAN
+ });
},
down: (queryInterface, Sequelize) => {
- return queryInterface.removeColumn(
- 'MarketAlerts',
- 'notified'
- );
+ return queryInterface.removeColumn("MarketAlerts", "notified");
}
};
diff --git a/app/migrations/20190628165512-add-title-to-marketalerts.js b/app/migrations/20190628165512-add-title-to-marketalerts.js
index d874f3d..6316d88 100644
--- a/app/migrations/20190628165512-add-title-to-marketalerts.js
+++ b/app/migrations/20190628165512-add-title-to-marketalerts.js
@@ -1,20 +1,13 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.addColumn(
- 'MarketAlerts',
- 'title',
- {
- type: Sequelize.STRING
- }
- );
+ return queryInterface.addColumn("MarketAlerts", "title", {
+ type: Sequelize.STRING
+ });
},
down: (queryInterface, Sequelize) => {
- return queryInterface.removeColumn(
- 'MarketAlerts',
- 'title'
- );
+ return queryInterface.removeColumn("MarketAlerts", "title");
}
};
diff --git a/app/migrations/20190702132143-add-RREquet-uuid-to-marketalerts.js b/app/migrations/20190702132143-add-RREquet-uuid-to-marketalerts.js
index b904e6f..d8d7c5b 100644
--- a/app/migrations/20190702132143-add-RREquet-uuid-to-marketalerts.js
+++ b/app/migrations/20190702132143-add-RREquet-uuid-to-marketalerts.js
@@ -1,20 +1,13 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.addColumn(
- 'MarketAlerts',
- 'request',
- {
- type: Sequelize.STRING
- }
- );
+ return queryInterface.addColumn("MarketAlerts", "request", {
+ type: Sequelize.STRING
+ });
},
down: (queryInterface, Sequelize) => {
- return queryInterface.removeColumn(
- 'MarketAlerts',
- 'request'
- );
+ return queryInterface.removeColumn("MarketAlerts", "request");
}
};
diff --git a/app/migrations/20190710141356-add-has-location-to-marketalerts.js b/app/migrations/20190710141356-add-has-location-to-marketalerts.js
index 049efe3..237c798 100644
--- a/app/migrations/20190710141356-add-has-location-to-marketalerts.js
+++ b/app/migrations/20190710141356-add-has-location-to-marketalerts.js
@@ -1,20 +1,13 @@
-'use strict';
+"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.addColumn(
- 'MarketAlerts',
- 'hasLocation',
- {
- type: Sequelize.BOOLEAN
- }
- );
+ return queryInterface.addColumn("MarketAlerts", "hasLocation", {
+ type: Sequelize.BOOLEAN
+ });
},
down: (queryInterface, Sequelize) => {
- return queryInterface.removeColumn(
- 'MarketAlerts',
- 'hasLocation'
- );
+ return queryInterface.removeColumn("MarketAlerts", "hasLocation");
}
};
diff --git a/app/models/index.js b/app/models/index.js
index c1a3d6d..e7926d0 100644
--- a/app/models/index.js
+++ b/app/models/index.js
@@ -1,27 +1,33 @@
-'use strict';
+"use strict";
-const fs = require('fs');
-const path = require('path');
-const Sequelize = require('sequelize');
+const fs = require("fs");
+const path = require("path");
+const Sequelize = require("sequelize");
const basename = path.basename(__filename);
-const env = process.env.NODE_ENV || 'development';
-const config = require(__dirname + '/../config/config.json')[env];
+const env = process.env.NODE_ENV || "development";
+const config = require(__dirname + "/../config/config.json")[env];
const db = {};
let sequelize;
if (config.use_env_variable) {
sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
- sequelize = new Sequelize(config.database, config.username, config.password, config);
+ sequelize = new Sequelize(
+ config.database,
+ config.username,
+ config.password,
+ config
+ );
}
-fs
- .readdirSync(__dirname)
+fs.readdirSync(__dirname)
.filter(file => {
- return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
+ return (
+ file.indexOf(".") !== 0 && file !== basename && file.slice(-3) === ".js"
+ );
})
.forEach(file => {
- const model = sequelize['import'](path.join(__dirname, file));
+ const model = sequelize["import"](path.join(__dirname, file));
db[model.name] = model;
});
diff --git a/app/models/marketalert.js b/app/models/marketalert.js
index 14742ff..ddae1d5 100644
--- a/app/models/marketalert.js
+++ b/app/models/marketalert.js
@@ -1,26 +1,30 @@
-'use strict';
+"use strict";
module.exports = (sequelize, DataTypes) => {
- const MarketAlert = sequelize.define('MarketAlert', {
- url: DataTypes.STRING,
- realestateOrigin: DataTypes.STRING,
- originId: DataTypes.STRING,
- lastDate: DataTypes.STRING,
- size : DataTypes.INTEGER,
- gardenSize : DataTypes.INTEGER,
- price : DataTypes.INTEGER,
- municipality : DataTypes.STRING,
- region : DataTypes.STRING,
- realEstateType : DataTypes.STRING,
- notified : DataTypes.BOOLEAN,
- title : DataTypes.STRING,
- request: DataTypes.STRING,
- hasLocation: DataTypes.BOOLEAN,
-
- email: {
- type: DataTypes.STRING,
- allowNul: false
- }
- }, {});
+ const MarketAlert = sequelize.define(
+ "MarketAlert",
+ {
+ url: DataTypes.STRING,
+ realestateOrigin: DataTypes.STRING,
+ originId: DataTypes.STRING,
+ lastDate: DataTypes.STRING,
+ size: DataTypes.INTEGER,
+ gardenSize: DataTypes.INTEGER,
+ price: DataTypes.INTEGER,
+ municipality: DataTypes.STRING,
+ region: DataTypes.STRING,
+ realEstateType: DataTypes.STRING,
+ notified: DataTypes.BOOLEAN,
+ title: DataTypes.STRING,
+ request: DataTypes.STRING,
+ hasLocation: DataTypes.BOOLEAN,
+
+ email: {
+ type: DataTypes.STRING,
+ allowNul: false
+ }
+ },
+ {}
+ );
MarketAlert.associate = function(models) {
// associations can be defined here
};
diff --git a/app/models/realestaterequest.js b/app/models/realestaterequest.js
index e618d8d..8cedce9 100644
--- a/app/models/realestaterequest.js
+++ b/app/models/realestaterequest.js
@@ -1,26 +1,29 @@
-'use strict';
+"use strict";
module.exports = (sequelize, DataTypes) => {
-
- const RealEstateRequest = sequelize.define('RealEstateRequest', {
- uniqueId: {
- type: DataTypes.UUID,
- defaultValue: DataTypes.UUIDV4,
- allowNull: false
+ const RealEstateRequest = sequelize.define(
+ "RealEstateRequest",
+ {
+ uniqueId: {
+ type: DataTypes.UUID,
+ defaultValue: DataTypes.UUIDV4,
+ allowNull: false
+ },
+ realEstateType: DataTypes.STRING,
+ email: DataTypes.STRING,
+ region: DataTypes.STRING,
+ municipality: DataTypes.STRING,
+ sizeMin: DataTypes.INTEGER,
+ sizeMax: DataTypes.INTEGER,
+ gardenSizeMin: DataTypes.INTEGER,
+ gardenSizeMax: DataTypes.INTEGER,
+ priceMin: DataTypes.INTEGER,
+ priceMax: DataTypes.INTEGER,
+ bounding_box: DataTypes.GEOMETRY("POINT", 4326),
+ subscribed: DataTypes.BOOLEAN
},
- realEstateType: DataTypes.STRING,
- email: DataTypes.STRING,
- region: DataTypes.STRING,
- municipality: DataTypes.STRING,
- sizeMin: DataTypes.INTEGER,
- sizeMax: DataTypes.INTEGER,
- gardenSizeMin: DataTypes.INTEGER,
- gardenSizeMax: DataTypes.INTEGER,
- priceMin: DataTypes.INTEGER,
- priceMax: DataTypes.INTEGER,
- bounding_box: DataTypes.GEOMETRY('POINT', 4326),
- subscribed: DataTypes.BOOLEAN
- }, {});
+ {}
+ );
RealEstateRequest.associate = function(models) {
// associations can be defined here
};
diff --git a/app/services/crawlerService.js b/app/services/crawlerService.js
index 860afa2..aaae6f7 100644
--- a/app/services/crawlerService.js
+++ b/app/services/crawlerService.js
@@ -1,85 +1,93 @@
-
const Promise = require("bluebird");
const OlxCrawler = require("../helpers/crawlers/olxClawler");
const db = require("../models/index");
-const { allMarketAlerts } = require('../helpers/db/dbHelper');
-
+const { allMarketAlerts } = require("../helpers/db/dbHelper");
async function crawlAll() {
- console.log("CRAWLER SERVICE: crawlAll");
+ console.log("CRAWLER SERVICE: crawlAll");
- try {
- const marketAlertsFromDb = await allMarketAlerts(true);
- const hrefs = [];
+ try {
+ const marketAlertsFromDb = await allMarketAlerts(true);
+ const hrefs = [];
- marketAlertsFromDb.map(marketAlert => {
- if (hrefs[marketAlert.request] === undefined) {
- hrefs[marketAlert.request] = []
- }
+ marketAlertsFromDb.map(marketAlert => {
+ if (hrefs[marketAlert.request] === undefined) {
+ hrefs[marketAlert.request] = [];
+ }
- hrefs[marketAlert.request].push(marketAlert.url);
- })
+ hrefs[marketAlert.request].push(marketAlert.url);
+ });
- console.log("CRAWLER SERVICE: GLOBAL HREFS");
- console.log(hrefs);
- const olxCrawler = new OlxCrawler(hrefs);
+ console.log("CRAWLER SERVICE: GLOBAL HREFS");
+ console.log(hrefs);
+ const olxCrawler = new OlxCrawler(hrefs);
- const crawlers = [
- olxCrawler,
- ];
-
- return Promise.map(crawlers, function (crawler) {
- return crawler.crawl();
- }).then(async (results) => {
+ const crawlers = [olxCrawler];
- try {
+ return Promise.map(crawlers, function(crawler) {
+ return crawler.crawl();
+ }).then(async results => {
+ try {
+ const marketAlertsFromDb = await allMarketAlerts(false, true);
- const marketAlertsFromDb = await allMarketAlerts(false, true);
+ console.log(
+ "CRAWLER SERVICE: number of existing MarketAlerts from db: " +
+ marketAlertsFromDb.length
+ );
- console.log("CRAWLER SERVICE: number of existing MarketAlerts from db: " + marketAlertsFromDb.length);
+ const marketAlerts = [];
+ const mergedResults = [].concat.apply([], results);
- const marketAlerts = [];
- const mergedResults = [].concat.apply([], results);
+ for (const result of mergedResults) {
+ marketAlerts.push({
+ url: result.url,
+ realestateOrigin: "OLX",
+ originId: 1,
+ size: result.size,
+ price: result.price,
+ email: result.email,
+ request: result.uuid,
+ municipality: result.municipality,
+ region: result.region,
+ gardenSize: isNaN(result.gardenSize) ? 0 : result.gardenSize,
+ realEstateType: result.realEstateType,
+ title: result.title,
+ notified: false,
+ hasLocation: result.hasLocation
+ });
+ }
+ console.log(
+ "CRAWLER SERVICE: Number of crawler results: " + marketAlerts.length
+ );
- for (const result of mergedResults) {
- marketAlerts.push({
- url: result.url,
- realestateOrigin: "OLX",
- originId: 1,
- size: result.size,
- price: result.price,
- email: result.email,
- request: result.uuid,
- municipality: result.municipality,
- region: result.region,
- gardenSize: isNaN(result.gardenSize) ? 0 : result.gardenSize,
- realEstateType: result.realEstateType,
- title: result.title,
- notified: false,
- hasLocation: result.hasLocation
- })
- }
- console.log("CRAWLER SERVICE: Number of crawler results: " + marketAlerts.length);
+ try {
+ const filteredMarketAlerts = marketAlerts.filter(
+ elem =>
+ !marketAlertsFromDb.find(({ url, request }) => {
+ return elem.url === url && elem.request === request;
+ })
+ );
+ console.log(
+ "CRAWLER SERVICE: Number of new crawler results: " +
+ filteredMarketAlerts.length
+ );
- try {
-
- const filteredMarketAlerts = marketAlerts.filter((elem) => !marketAlertsFromDb.find(({ url, request }) => {
-
- return (elem.url === url && elem.request === request)
- }));
- console.log("CRAWLER SERVICE: Number of new crawler results: " + filteredMarketAlerts.length);
-
- await db.MarketAlert.bulkCreate(filteredMarketAlerts);
-
- } catch (e) {
- console.log("CRAWLER SERVICE: Could not bulkCreate marketalers reason: ", e);
- }
- } catch (e) {
- console.log("CRAWLER SERVICE: Error crawling. Trying next crawler! ", e);
- }
- })
- } catch (e) {
- console.error("CRAWLER SERVICE:could not fetch marketalerts ", e);
- }
-};
+ await db.MarketAlert.bulkCreate(filteredMarketAlerts);
+ } catch (e) {
+ console.log(
+ "CRAWLER SERVICE: Could not bulkCreate marketalers reason: ",
+ e
+ );
+ }
+ } catch (e) {
+ console.log(
+ "CRAWLER SERVICE: Error crawling. Trying next crawler! ",
+ e
+ );
+ }
+ });
+ } catch (e) {
+ console.error("CRAWLER SERVICE:could not fetch marketalerts ", e);
+ }
+}
module.exports = crawlAll;
diff --git a/app/services/notificationService.js b/app/services/notificationService.js
index ba3b4ab..b49de5d 100644
--- a/app/services/notificationService.js
+++ b/app/services/notificationService.js
@@ -1,29 +1,34 @@
-
const db = require("../models/index");
-const { allMarketAlerts } = require('../helpers/db/dbHelper');
-const { createMarketAlertEmailTemplate, sendBulkEmail } = require('../helpers/awsEmail');
-
+const { allMarketAlerts } = require("../helpers/db/dbHelper");
+const {
+ createMarketAlertEmailTemplate,
+ sendBulkEmail
+} = require("../helpers/awsEmail");
async function processNotifications() {
-
- try {
- const marketAlerts = await allMarketAlerts(false, false);
- console.log(marketAlerts.length)
- await createMarketAlertEmailTemplate();
- if (marketAlerts.length > 0) {
- console.log("NOTIFICATION SERVICE: Number of new alerts: " + marketAlerts.length)
- await sendBulkEmail(marketAlerts);
- } else {
- console.log("NOTIFICATION SERVICE: No new alerts");
- }
-
- await db.MarketAlert.update(
- { notified: true }, /* set attributes' value */
- { where: { notified: false } } /* where criteria */
- );
- } catch (e) {
- console.log("NOTIFICATION SERVICE: could not send notifications reason: ", e);
+ try {
+ const marketAlerts = await allMarketAlerts(false, false);
+ console.log(marketAlerts.length);
+ await createMarketAlertEmailTemplate();
+ if (marketAlerts.length > 0) {
+ console.log(
+ "NOTIFICATION SERVICE: Number of new alerts: " + marketAlerts.length
+ );
+ await sendBulkEmail(marketAlerts);
+ } else {
+ console.log("NOTIFICATION SERVICE: No new alerts");
}
+
+ await db.MarketAlert.update(
+ { notified: true } /* set attributes' value */,
+ { where: { notified: false } } /* where criteria */
+ );
+ } catch (e) {
+ console.log(
+ "NOTIFICATION SERVICE: could not send notifications reason: ",
+ e
+ );
+ }
}
module.exports = processNotifications;