- 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
|
||||
PDB=mypassword@1A
|
||||
SEND_EMAIL=0
|
||||
SEND_EMAIL_ORDERS=1
|
||||
PORT=3000
|
||||
appTelegram_TEST=["1","17"]
|
||||
appTelegram=["1","17"]
|
||||
appTelegram_TEST=["1","13"]
|
||||
appTelegram=["1","13"]
|
||||
DOMAIN=mongodb://localhost:27017/
|
||||
AUTH_MONGODB=true
|
||||
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
@@ -28,4 +28,6 @@ Sab 04/11 ORE 15:17: 🤖: Da Sùrya (Paolo) undefined (paoloar77):
|
||||
Sab 02/12 ORE 14:15: 🤖: Da Sùrya (Paolo) undefined (paoloar77):
|
||||
✅ SuryaArena è stato Abilitato correttamente (da 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 fs = require('fs-extra');
|
||||
|
||||
const shared_consts = require('../tools/shared_nodejs');
|
||||
|
||||
// Resolving error Unknown modifier: $pushAll
|
||||
@@ -49,6 +51,9 @@ const CitySchema = new Schema({
|
||||
type: String,
|
||||
maxlength: 3,
|
||||
},
|
||||
geojson: {
|
||||
type: Object, // Tipo che può contenere le features GeoJSON
|
||||
},
|
||||
});
|
||||
|
||||
CitySchema.pre('save', async function (next) {
|
||||
@@ -198,6 +203,73 @@ CitySchema.statics.findAllIdApp = async function (idapp) {
|
||||
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);
|
||||
|
||||
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
|
||||
if (await User.tooManyReqPassword(idapp, email, true)) {
|
||||
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);
|
||||
res.status(400).send({ code: server_constants.RIS_CODE_ERR, msg: text });
|
||||
return false;
|
||||
@@ -854,12 +854,12 @@ router.patch('/chval', authenticate, async (req, res) => {
|
||||
// If I change my record...
|
||||
if ((
|
||||
(!User.isAdmin(req.user.perm)
|
||||
&& !User.isManager(req.user.perm)
|
||||
&& !User.isEditor(req.user.perm)
|
||||
&& !User.isFacilitatore(req.user.perm))
|
||||
&& !User.isManager(req.user.perm)
|
||||
&& !User.isEditor(req.user.perm)
|
||||
&& !User.isFacilitatore(req.user.perm))
|
||||
&& (!tools.ModificheConsentite(req, mydata.table, fieldsvalue, id)))
|
||||
&& !((mydata.table === 'accounts')
|
||||
&& await Account.canEditAccountAdmins(req.user.username, mydata.id))
|
||||
&& !((mydata.table === 'accounts')
|
||||
&& await Account.canEditAccountAdmins(req.user.username, mydata.id))
|
||||
) {
|
||||
// If without permissions, exit
|
||||
return res.status(404).
|
||||
@@ -1232,7 +1232,7 @@ router.delete('/delrec/:table/:id', authenticate, async (req, res) => {
|
||||
// let notifBot = false;
|
||||
// const idapp = req.body.idapp;
|
||||
|
||||
console.log('id', id, 'table', tablename);
|
||||
console.log('delete RECORD: id', id, 'table', tablename);
|
||||
|
||||
const mytable = globalTables.getTableByTableName(tablename);
|
||||
|
||||
@@ -1251,17 +1251,30 @@ router.delete('/delrec/:table/:id', authenticate, async (req, res) => {
|
||||
//++Tools: Notify...
|
||||
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') {
|
||||
|
||||
let fieldsvalue = {
|
||||
deleted: true,
|
||||
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;
|
||||
|
||||
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 mygroups = MyGroup.findAllGroups(idapp);
|
||||
let listcircuits = Circuit.findAllIdApp(idapp);
|
||||
// let cities = City.findAllIdApp(idapp);
|
||||
let provinces = Province.findAllIdApp(idapp);
|
||||
let cart = null;
|
||||
let orderscart = null;
|
||||
@@ -1535,7 +1547,6 @@ function load(req, res, version) {
|
||||
myuserextra, // 26
|
||||
sectors, // 27
|
||||
statusSkills, //28
|
||||
// cities,
|
||||
provinces,
|
||||
catgrps,
|
||||
adtypes,
|
||||
|
||||
@@ -47,6 +47,7 @@ const TypedError = require('../modules/ErrorHandler');
|
||||
const { MyGroup } = require('../models/mygroup');
|
||||
const { Circuit } = require('../models/circuit');
|
||||
const { Province } = require('../models/province');
|
||||
const { City } = require('../models/city');
|
||||
const { Account } = require('../models/account');
|
||||
|
||||
const mongoose = require('mongoose').set('debug', false);
|
||||
@@ -1306,6 +1307,8 @@ async function eseguiDbOp(idapp, mydata, locale, req, res) {
|
||||
await Circuit.CheckTransazioniCircuiti(true);
|
||||
} else if (mydata.dbop === 'UpdateCoordProv') {
|
||||
await Province.setCoordinatesOnDB();
|
||||
} else if (mydata.dbop === 'insertGeojsonToMongoDB') {
|
||||
await City.insertGeojsonToMongoDB('comuni_italia.geojson');
|
||||
} else if (mydata.dbop === 'AbilitaNewsletterALL') {
|
||||
await User.updateMany({
|
||||
$or: [
|
||||
|
||||
@@ -126,6 +126,7 @@ myLoad().then(ris => {
|
||||
const products_router = require('./router/products_router');
|
||||
const cart_router = require('./router/cart_router');
|
||||
const orders_router = require('./router/orders_router');
|
||||
const city_router = require('./router/city_router');
|
||||
const myskills_router = require('./router/myskills_router');
|
||||
const mygoods_router = require('./router/mygoods_router');
|
||||
const mygen_router = require('./router/mygen_router');
|
||||
@@ -194,6 +195,7 @@ myLoad().then(ris => {
|
||||
app.use('/products', products_router);
|
||||
app.use('/cart', cart_router);
|
||||
app.use('/orders', orders_router);
|
||||
app.use('/city', city_router);
|
||||
app.use('/myskills', myskills_router);
|
||||
app.use('/mygoods', mygoods_router);
|
||||
app.use('/mygen', mygen_router);
|
||||
|
||||
@@ -1437,8 +1437,7 @@ async function local_sendMsgTelegramToTheManagers(
|
||||
if (username_bo)
|
||||
username = username_bo;
|
||||
|
||||
text = emo.ROBOT_FACE + ': Da ' + msg.chat.first_name + ' ' +
|
||||
msg.chat.last_name + ' (' + username + '): \n' + text;
|
||||
text = emo.ROBOT_FACE + ': Da ' + tools.getNomeCognomeTelegram(msg) + ' (' + username + '): \n' + text;
|
||||
tools.writeEventsLog(text);
|
||||
|
||||
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) {
|
||||
const suffissoCognome = ['Del', 'La', 'De', 'Lo'];
|
||||
|
||||
@@ -4966,4 +4976,5 @@ module.exports = {
|
||||
}
|
||||
},
|
||||
|
||||
// Scriviere qui SOPRA le funzioni
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user