apply prettier on all files
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
};
|
||||
getNeighborhood,
|
||||
postNeighborhood
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
getRealEstates
|
||||
};
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
};
|
||||
getUnsubscribe
|
||||
};
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -57,9 +57,7 @@ const getGreetingsEmailHTML = realestateRequest => {
|
||||
realestateRequest.realEstateType
|
||||
);
|
||||
const gardenSize = realEstateType.hasGardenSize
|
||||
? `<div><strong>Kvadratura okućnice: Od ${
|
||||
realestateRequest.gardenSizeMin
|
||||
} do ${realestateRequest.gardenSizeMax} m2 </strong></div>`
|
||||
? `<div><strong>Kvadratura okućnice: Od ${realestateRequest.gardenSizeMin} do ${realestateRequest.gardenSizeMax} m2 </strong></div>`
|
||||
: ``;
|
||||
|
||||
return `<h1> Zdravo,
|
||||
|
||||
1811
app/helpers/codes.js
1811
app/helpers/codes.js
File diff suppressed because it is too large
Load Diff
@@ -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 = {
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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)) };
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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"
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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
|
||||
})
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
};
|
||||
]);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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 })
|
||||
])
|
||||
})
|
||||
}
|
||||
};
|
||||
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 }
|
||||
)
|
||||
]);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
]);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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 }
|
||||
)
|
||||
]);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
});
|
||||
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user