- fix scelta provincia (il bottone Avanti non veniva disabilitato).
- Se non scelgo la provincia, non deve farmi vedere la App...
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
DATABASE=test_PiuCheBuono
|
DATABASE=test_FreePlanet
|
||||||
UDB=paofreeplanet
|
UDB=paofreeplanet
|
||||||
PDB=mypassword@1A
|
PDB=mypassword@1A
|
||||||
SEND_EMAIL=0
|
SEND_EMAIL=0
|
||||||
SEND_EMAIL_ORDERS=1
|
SEND_EMAIL_ORDERS=1
|
||||||
PORT=3000
|
PORT=3000
|
||||||
appTelegram_TEST=["1","17"]
|
appTelegram_TEST=["1","13"]
|
||||||
appTelegram=["1","17"]
|
appTelegram=["1","13"]
|
||||||
DOMAIN=mongodb://localhost:27017/
|
DOMAIN=mongodb://localhost:27017/
|
||||||
AUTH_MONGODB=true
|
AUTH_MONGODB=true
|
||||||
MONGODB_USER=admin
|
MONGODB_USER=admin
|
||||||
|
|||||||
3592316
comuni_italia.geojson
Normal file
3592316
comuni_italia.geojson
Normal file
File diff suppressed because it is too large
Load Diff
@@ -29,3 +29,5 @@ Sab 02/12 ORE 14:15: 🤖: Da Sùrya (Paolo) undefined (paoloar77):
|
|||||||
✅ SuryaArena è stato Abilitato correttamente (da paoloar77)!
|
✅ SuryaArena è stato Abilitato correttamente (da paoloar77)!
|
||||||
Dom 21/01 ORE 19:00: 🤖: Da Sùrya (Paolo) undefined (paoloar77):
|
Dom 21/01 ORE 19:00: 🤖: Da Sùrya (Paolo) undefined (paoloar77):
|
||||||
👉🏻 indietro
|
👉🏻 indietro
|
||||||
|
Gio 28/03 ORE 18:10: 🤖: Da Sùrya (Paolo) undefined (paoloar77):
|
||||||
|
✅ prova123 è stato Abilitato correttamente (da paoloar77)!
|
||||||
@@ -10,6 +10,8 @@ const tools = require('../tools/general');
|
|||||||
|
|
||||||
const { ObjectID } = require('mongodb');
|
const { ObjectID } = require('mongodb');
|
||||||
|
|
||||||
|
const fs = require('fs-extra');
|
||||||
|
|
||||||
const shared_consts = require('../tools/shared_nodejs');
|
const shared_consts = require('../tools/shared_nodejs');
|
||||||
|
|
||||||
// Resolving error Unknown modifier: $pushAll
|
// Resolving error Unknown modifier: $pushAll
|
||||||
@@ -49,6 +51,9 @@ const CitySchema = new Schema({
|
|||||||
type: String,
|
type: String,
|
||||||
maxlength: 3,
|
maxlength: 3,
|
||||||
},
|
},
|
||||||
|
geojson: {
|
||||||
|
type: Object, // Tipo che può contenere le features GeoJSON
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
CitySchema.pre('save', async function (next) {
|
CitySchema.pre('save', async function (next) {
|
||||||
@@ -198,6 +203,73 @@ CitySchema.statics.findAllIdApp = async function (idapp) {
|
|||||||
return await City.find(myfind);
|
return await City.find(myfind);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CitySchema.statics.getGeoJsonByProvince = async function (prov) {
|
||||||
|
let ris = null;
|
||||||
|
if (prov)
|
||||||
|
ris = await City.find({ prov }).lean();
|
||||||
|
else
|
||||||
|
ris = await City.find({}).lean();
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (ris) {
|
||||||
|
const arrjson = ris
|
||||||
|
.filter(record => record.geojson && typeof record.geojson === 'object' && record.geojson.geometry) // Prima filtra per mantenere solo gli oggetti con "geometry"
|
||||||
|
.map((record, index) => {
|
||||||
|
// Crea un nuovo oggetto con gli attributi desiderati da ogni record
|
||||||
|
const newRecord = {
|
||||||
|
...record.geojson, // Spread dell'oggetto geojson per prendere tutte le sue proprietà
|
||||||
|
id: (index + 1).toString(), // Aggiunge un valore "id" incrementale in base all'indice
|
||||||
|
};
|
||||||
|
|
||||||
|
// Aggiungi o aggiorna la proprietà "prov" in "properties" dentro l'oggetto geojson
|
||||||
|
if (newRecord.properties) {
|
||||||
|
newRecord.properties.prov = record.prov; // Se "properties" esiste già
|
||||||
|
} else {
|
||||||
|
newRecord.properties = { prov: record.prov }; // Crea "properties" se non esiste
|
||||||
|
}
|
||||||
|
|
||||||
|
return newRecord;
|
||||||
|
});
|
||||||
|
|
||||||
|
return arrjson;
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Err', e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
CitySchema.statics.insertGeojsonToMongoDB = async function (nomefilejson) {
|
||||||
|
try {
|
||||||
|
// Lettura del file GeoJSON
|
||||||
|
const geojson = await fs.readJson(nomefilejson); // Sostituisci con il percorso del tuo file GeoJSON
|
||||||
|
|
||||||
|
let inseriti = 0;
|
||||||
|
const numcomuni = geojson.features.length;
|
||||||
|
for (const citta of geojson.features) {
|
||||||
|
|
||||||
|
// Identifica il documento esistente in cui vuoi aggiungere le features
|
||||||
|
const reccity = await City.findOne({ istat: String(citta.properties.ISTAT).padStart(6, '0') });
|
||||||
|
|
||||||
|
if (reccity) {
|
||||||
|
const ris = await City.updateOne({ _id: reccity._id }, { $set: { geojson: citta } });
|
||||||
|
if (ris.ok === 1) {
|
||||||
|
inseriti++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`${inseriti} su ${numcomuni} comuni inseriti.`);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Err', e);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const City = mongoose.model('City', CitySchema);
|
const City = mongoose.model('City', CitySchema);
|
||||||
|
|||||||
127
src/server/router/city_router.js
Executable file
127
src/server/router/city_router.js
Executable file
@@ -0,0 +1,127 @@
|
|||||||
|
const shared_consts = require('../tools/shared_nodejs');
|
||||||
|
|
||||||
|
const express = require('express');
|
||||||
|
const router = express.Router();
|
||||||
|
|
||||||
|
const tools = require('../tools/general');
|
||||||
|
|
||||||
|
var server_constants = require('../tools/server_constants');
|
||||||
|
|
||||||
|
var { Project } = require('../models/project');
|
||||||
|
|
||||||
|
var { authenticate, auth_default } = require('../middleware/authenticate');
|
||||||
|
|
||||||
|
var mongoose = require('mongoose').set('debug', false)
|
||||||
|
const Subscription = require('../models/subscribers');
|
||||||
|
|
||||||
|
const _ = require('lodash');
|
||||||
|
|
||||||
|
const { ObjectID } = require('mongodb');
|
||||||
|
|
||||||
|
const { City } = require('../models/city');
|
||||||
|
|
||||||
|
|
||||||
|
//POST
|
||||||
|
router.post('/geojson', authenticate, function (req, res, next) {
|
||||||
|
let prov = req.body.prov;
|
||||||
|
// let idapp = req.body.idapp;
|
||||||
|
return City.getGeoJsonByProvince(prov)
|
||||||
|
.then((ris) => {
|
||||||
|
|
||||||
|
if (ris)
|
||||||
|
return res.send({ code: server_constants.RIS_CODE_OK, ris });
|
||||||
|
|
||||||
|
}).catch(err => {
|
||||||
|
console.log('ERR:', err);
|
||||||
|
res.status(400).send();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
router.post('/updateord', authenticate, async (req, res) => {
|
||||||
|
const idOrdersCart = req.body.idOrdersCart;
|
||||||
|
const idOrder = req.body.idOrder;
|
||||||
|
const paramstoupdate = req.body.paramstoupdate;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Aggiorno l'Ordine Singolo
|
||||||
|
await Order.updateOrderByParams(idOrder, paramstoupdate);
|
||||||
|
|
||||||
|
// Aggiorno il Totale degli Ordini (OrdersCart)
|
||||||
|
await OrdersCart.updateOrdersCartTotals(idOrdersCart, true)
|
||||||
|
.then((orderscart) => {
|
||||||
|
return res.send({ code: server_constants.RIS_CODE_OK, orderscart });
|
||||||
|
}).catch(err => {
|
||||||
|
console.log('ERR:', err);
|
||||||
|
res.status(400).send();
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Err', e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
router.post('/update', authenticate, async (req, res) => {
|
||||||
|
let orderscart = null;
|
||||||
|
const idOrdersCart = req.body.idOrdersCart;
|
||||||
|
const paramstoupdate = req.body.paramstoupdate;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Aggiorno Orderscart con i parametri passati
|
||||||
|
orderscart = await OrdersCart.updateOrdersCartByParams(idOrdersCart, paramstoupdate);
|
||||||
|
|
||||||
|
let updatetotals = true;
|
||||||
|
if (paramstoupdate && paramstoupdate.hasOwnProperty('totalPrice')) {
|
||||||
|
updatetotals = false;
|
||||||
|
}
|
||||||
|
if (updatetotals) {
|
||||||
|
|
||||||
|
// Aggiorno il Totale degli Ordini (OrdersCart)
|
||||||
|
await OrdersCart.updateOrdersCartTotals(idOrdersCart, true)
|
||||||
|
.then((orderscart) => {
|
||||||
|
return res.send({ code: server_constants.RIS_CODE_OK, orderscart });
|
||||||
|
}).catch(err => {
|
||||||
|
console.log('ERR:', err);
|
||||||
|
res.status(400).send();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return res.send({ code: server_constants.RIS_CODE_OK, orderscart });
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Err', e);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
router.post('/sendmail', authenticate, async function (req, res, next) {
|
||||||
|
const idOrdersCart = req.body.idOrdersCart;
|
||||||
|
const idapp = req.body.idapp;
|
||||||
|
const test = req.body.test;
|
||||||
|
const previewonly = req.body.previewonly;
|
||||||
|
const templemail_id = req.body.templemail_id;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Invia Email
|
||||||
|
let myOrderCart = await OrdersCart.getOrdersCartById(idOrdersCart);
|
||||||
|
if (myOrderCart) {
|
||||||
|
const userto = myOrderCart.user;
|
||||||
|
let emailto = userto.email;
|
||||||
|
|
||||||
|
if (userto && emailto) {
|
||||||
|
const emailsend = await sendemail.sendEmail_byTemplate(idapp, userto, previewonly, emailto, templemail_id, test);
|
||||||
|
|
||||||
|
return res.send({ code: server_constants.RIS_CODE_OK, emailsend });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.send({ code: server_constants.RIS_CODE_OK, emailsend: false });
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
console.error('err:', e);
|
||||||
|
res.status(400).send(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = router;
|
||||||
@@ -186,7 +186,7 @@ router.post(process.env.LINK_REQUEST_NEWPASSWORD, async (req, res) => {
|
|||||||
// Check if too many requests
|
// Check if too many requests
|
||||||
if (await User.tooManyReqPassword(idapp, email, true)) {
|
if (await User.tooManyReqPassword(idapp, email, true)) {
|
||||||
let text = 'Troppe richieste di Password: ' + email;
|
let text = 'Troppe richieste di Password: ' + email;
|
||||||
telegrambot.sendMsgTelegramToTheManagers(idapp, text, true);
|
telegrambot.sendMsgTelegramToTheManagers(idapp, text);
|
||||||
console.log(process.env.LINK_REQUEST_NEWPASSWORD, text, email);
|
console.log(process.env.LINK_REQUEST_NEWPASSWORD, text, email);
|
||||||
res.status(400).send({ code: server_constants.RIS_CODE_ERR, msg: text });
|
res.status(400).send({ code: server_constants.RIS_CODE_ERR, msg: text });
|
||||||
return false;
|
return false;
|
||||||
@@ -854,12 +854,12 @@ router.patch('/chval', authenticate, async (req, res) => {
|
|||||||
// If I change my record...
|
// If I change my record...
|
||||||
if ((
|
if ((
|
||||||
(!User.isAdmin(req.user.perm)
|
(!User.isAdmin(req.user.perm)
|
||||||
&& !User.isManager(req.user.perm)
|
&& !User.isManager(req.user.perm)
|
||||||
&& !User.isEditor(req.user.perm)
|
&& !User.isEditor(req.user.perm)
|
||||||
&& !User.isFacilitatore(req.user.perm))
|
&& !User.isFacilitatore(req.user.perm))
|
||||||
&& (!tools.ModificheConsentite(req, mydata.table, fieldsvalue, id)))
|
&& (!tools.ModificheConsentite(req, mydata.table, fieldsvalue, id)))
|
||||||
&& !((mydata.table === 'accounts')
|
&& !((mydata.table === 'accounts')
|
||||||
&& await Account.canEditAccountAdmins(req.user.username, mydata.id))
|
&& await Account.canEditAccountAdmins(req.user.username, mydata.id))
|
||||||
) {
|
) {
|
||||||
// If without permissions, exit
|
// If without permissions, exit
|
||||||
return res.status(404).
|
return res.status(404).
|
||||||
@@ -1232,7 +1232,7 @@ router.delete('/delrec/:table/:id', authenticate, async (req, res) => {
|
|||||||
// let notifBot = false;
|
// let notifBot = false;
|
||||||
// const idapp = req.body.idapp;
|
// const idapp = req.body.idapp;
|
||||||
|
|
||||||
console.log('id', id, 'table', tablename);
|
console.log('delete RECORD: id', id, 'table', tablename);
|
||||||
|
|
||||||
const mytable = globalTables.getTableByTableName(tablename);
|
const mytable = globalTables.getTableByTableName(tablename);
|
||||||
|
|
||||||
@@ -1251,17 +1251,30 @@ router.delete('/delrec/:table/:id', authenticate, async (req, res) => {
|
|||||||
//++Tools: Notify...
|
//++Tools: Notify...
|
||||||
tools.NotifyIfDelRecord(tablename);
|
tools.NotifyIfDelRecord(tablename);
|
||||||
|
|
||||||
if (!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) {
|
// if (!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) {
|
||||||
|
if (true) {
|
||||||
if (tablename === 'users') {
|
if (tablename === 'users') {
|
||||||
|
|
||||||
let fieldsvalue = {
|
let fieldsvalue = {
|
||||||
deleted: true,
|
deleted: true,
|
||||||
date_deleted: new Date(),
|
date_deleted: new Date(),
|
||||||
};
|
};
|
||||||
|
const utente = await mytable.findById(id);
|
||||||
|
|
||||||
await mytable.findByIdAndUpdate(id, { $set: fieldsvalue });
|
if (utente) {
|
||||||
|
idapp = utente.idapp;
|
||||||
|
await mytable.findByIdAndUpdate(id, { $set: fieldsvalue });
|
||||||
|
|
||||||
|
|
||||||
|
// ...
|
||||||
|
let text = `L\'utente ${utente.username} (${utente.name} ${utente.surname}) si è cancellato dal sito ` + tools.getNomeAppByIdApp(utente.idapp) + ` Deleted = true`;
|
||||||
|
telegrambot.sendMsgTelegramToTheManagers(idapp, text);
|
||||||
|
|
||||||
|
}
|
||||||
cancellato = true;
|
cancellato = true;
|
||||||
|
|
||||||
|
return res.send({ code: server_constants.RIS_CODE_OK, msg: '' });
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1478,7 +1491,6 @@ function load(req, res, version) {
|
|||||||
let site = Site.findAllIdApp(idapp);
|
let site = Site.findAllIdApp(idapp);
|
||||||
let mygroups = MyGroup.findAllGroups(idapp);
|
let mygroups = MyGroup.findAllGroups(idapp);
|
||||||
let listcircuits = Circuit.findAllIdApp(idapp);
|
let listcircuits = Circuit.findAllIdApp(idapp);
|
||||||
// let cities = City.findAllIdApp(idapp);
|
|
||||||
let provinces = Province.findAllIdApp(idapp);
|
let provinces = Province.findAllIdApp(idapp);
|
||||||
let cart = null;
|
let cart = null;
|
||||||
let orderscart = null;
|
let orderscart = null;
|
||||||
@@ -1535,7 +1547,6 @@ function load(req, res, version) {
|
|||||||
myuserextra, // 26
|
myuserextra, // 26
|
||||||
sectors, // 27
|
sectors, // 27
|
||||||
statusSkills, //28
|
statusSkills, //28
|
||||||
// cities,
|
|
||||||
provinces,
|
provinces,
|
||||||
catgrps,
|
catgrps,
|
||||||
adtypes,
|
adtypes,
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ const TypedError = require('../modules/ErrorHandler');
|
|||||||
const { MyGroup } = require('../models/mygroup');
|
const { MyGroup } = require('../models/mygroup');
|
||||||
const { Circuit } = require('../models/circuit');
|
const { Circuit } = require('../models/circuit');
|
||||||
const { Province } = require('../models/province');
|
const { Province } = require('../models/province');
|
||||||
|
const { City } = require('../models/city');
|
||||||
const { Account } = require('../models/account');
|
const { Account } = require('../models/account');
|
||||||
|
|
||||||
const mongoose = require('mongoose').set('debug', false);
|
const mongoose = require('mongoose').set('debug', false);
|
||||||
@@ -1306,6 +1307,8 @@ async function eseguiDbOp(idapp, mydata, locale, req, res) {
|
|||||||
await Circuit.CheckTransazioniCircuiti(true);
|
await Circuit.CheckTransazioniCircuiti(true);
|
||||||
} else if (mydata.dbop === 'UpdateCoordProv') {
|
} else if (mydata.dbop === 'UpdateCoordProv') {
|
||||||
await Province.setCoordinatesOnDB();
|
await Province.setCoordinatesOnDB();
|
||||||
|
} else if (mydata.dbop === 'insertGeojsonToMongoDB') {
|
||||||
|
await City.insertGeojsonToMongoDB('comuni_italia.geojson');
|
||||||
} else if (mydata.dbop === 'AbilitaNewsletterALL') {
|
} else if (mydata.dbop === 'AbilitaNewsletterALL') {
|
||||||
await User.updateMany({
|
await User.updateMany({
|
||||||
$or: [
|
$or: [
|
||||||
|
|||||||
@@ -126,6 +126,7 @@ myLoad().then(ris => {
|
|||||||
const products_router = require('./router/products_router');
|
const products_router = require('./router/products_router');
|
||||||
const cart_router = require('./router/cart_router');
|
const cart_router = require('./router/cart_router');
|
||||||
const orders_router = require('./router/orders_router');
|
const orders_router = require('./router/orders_router');
|
||||||
|
const city_router = require('./router/city_router');
|
||||||
const myskills_router = require('./router/myskills_router');
|
const myskills_router = require('./router/myskills_router');
|
||||||
const mygoods_router = require('./router/mygoods_router');
|
const mygoods_router = require('./router/mygoods_router');
|
||||||
const mygen_router = require('./router/mygen_router');
|
const mygen_router = require('./router/mygen_router');
|
||||||
@@ -194,6 +195,7 @@ myLoad().then(ris => {
|
|||||||
app.use('/products', products_router);
|
app.use('/products', products_router);
|
||||||
app.use('/cart', cart_router);
|
app.use('/cart', cart_router);
|
||||||
app.use('/orders', orders_router);
|
app.use('/orders', orders_router);
|
||||||
|
app.use('/city', city_router);
|
||||||
app.use('/myskills', myskills_router);
|
app.use('/myskills', myskills_router);
|
||||||
app.use('/mygoods', mygoods_router);
|
app.use('/mygoods', mygoods_router);
|
||||||
app.use('/mygen', mygen_router);
|
app.use('/mygen', mygen_router);
|
||||||
|
|||||||
@@ -1437,8 +1437,7 @@ async function local_sendMsgTelegramToTheManagers(
|
|||||||
if (username_bo)
|
if (username_bo)
|
||||||
username = username_bo;
|
username = username_bo;
|
||||||
|
|
||||||
text = emo.ROBOT_FACE + ': Da ' + msg.chat.first_name + ' ' +
|
text = emo.ROBOT_FACE + ': Da ' + tools.getNomeCognomeTelegram(msg) + ' (' + username + '): \n' + text;
|
||||||
msg.chat.last_name + ' (' + username + '): \n' + text;
|
|
||||||
tools.writeEventsLog(text);
|
tools.writeEventsLog(text);
|
||||||
|
|
||||||
if (usersmanagers) {
|
if (usersmanagers) {
|
||||||
|
|||||||
@@ -3750,6 +3750,16 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getNomeCognomeTelegram(msg) {
|
||||||
|
if (msg && msg.chat) {
|
||||||
|
let nomecognome = msg.chat.first_name ? msg.chat.first_name : '';
|
||||||
|
nomecognome += msg.chat.last_name ? ' ' + msg.chat.last_name : '';
|
||||||
|
|
||||||
|
return nomecognome;
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
},
|
||||||
|
|
||||||
extractNameAndSurnameByComplete(name_complete) {
|
extractNameAndSurnameByComplete(name_complete) {
|
||||||
const suffissoCognome = ['Del', 'La', 'De', 'Lo'];
|
const suffissoCognome = ['Del', 'La', 'De', 'Lo'];
|
||||||
|
|
||||||
@@ -4966,4 +4976,5 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Scriviere qui SOPRA le funzioni
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user