- varie sistemazioni: filtri iscritti, profilo, ecc...

This commit is contained in:
Surya Paolo
2025-01-11 12:07:58 +01:00
parent fa075683ae
commit c631ca9d6a
6 changed files with 251 additions and 71 deletions

View File

@@ -745,7 +745,7 @@ sendNotifSchema.statics.saveAndSendNotif = async function (myrecnotif, req, res,
// console.log('myrecread._id', myrecread._id.toString()); // console.log('myrecread._id', myrecread._id.toString());
if (myrecread) if (myrecread)
risnotif = await globalTables.sendNotif(myrecread.typedir, myrecread.typeid, res, idapp, user ? user : req.user, myrecread); risnotif = await globalTables.sendNotifCmd(myrecread.typedir, myrecread.typeid, res, idapp, user ? user : req.user, myrecread);
else else
return false; return false;
} }
@@ -756,7 +756,7 @@ sendNotifSchema.statics.saveAndSendNotif = async function (myrecnotif, req, res,
} }
} else { } else {
risnotif = await globalTables.sendNotif(myrecout.typedir, myrecout.typeid, res, idapp, user ? user : req.user, myrecout); risnotif = await globalTables.sendNotifCmd(myrecout.typedir, myrecout.typeid, res, idapp, user ? user : req.user, myrecout);
} }

View File

@@ -2539,7 +2539,9 @@ UserSchema.statics.setFriendsCmd = async function (req, idapp, usernameOrig, use
const msgOrig = i18n.__({ phrase, locale: user.lang }, usernameOrig); const msgOrig = i18n.__({ phrase, locale: user.lang }, usernameOrig);
await telegrambot.sendMsgTelegram(idapp, usernameOrig, msgDest); await telegrambot.sendMsgTelegram(idapp, usernameOrig, msgDest);
await telegrambot.sendMsgTelegram(idapp, usernameDest, msgOrig); if (phrase !== 'HANDSHAKE_SET') {
await telegrambot.sendMsgTelegram(idapp, usernameDest, msgOrig);
}
} }
} catch (e) { } catch (e) {
console.error('Notification : ', e); console.error('Notification : ', e);

View File

@@ -1398,6 +1398,17 @@ async function eseguiDbOp(idapp, mydata, locale, req, res) {
if (User.isAdmin(req.user.perm)) { if (User.isAdmin(req.user.perm)) {
ris = globalTables.replaceUsername(req.body.idapp, mydata.search_username, mydata.replace_username); ris = globalTables.replaceUsername(req.body.idapp, mydata.search_username, mydata.replace_username);
} }
} else if (mydata.dbop === 'replaceAportadorSolidario') {
if (User.isAdmin(req.user.perm)) {
ris = globalTables.replaceAportadorSolidario(req.body.idapp, mydata.search_username, mydata.replace_username);
}
} else if (mydata.dbop === 'SearchString') {
if (User.isAdmin(req.user.perm)) {
mystr = await globalTables.SearchString(req.body.idapp, mydata.search);
}
ris = { mystr };
} else if (mydata.dbop === 'copyFrom1To14') { } else if (mydata.dbop === 'copyFrom1To14') {
const idapporig = 1; const idapporig = 1;

View File

@@ -10,6 +10,8 @@ require('../models/subscribers');
const { ObjectId } = require('mongodb'); const { ObjectId } = require('mongodb');
const mongoose = require('mongoose');
const { User } = require('../models/user'); const { User } = require('../models/user');
const { MyGroup } = require('../models/mygroup'); const { MyGroup } = require('../models/mygroup');
const { Booking } = require('../models/booking'); const { Booking } = require('../models/booking');
@@ -57,6 +59,7 @@ const { SendMsg } = require('../models/sendmsg');
const { Permission } = require('../models/permission'); const { Permission } = require('../models/permission');
const { MsgTemplate } = require('../models/msg_template'); const { MsgTemplate } = require('../models/msg_template');
const { Graduatoria } = require('../models/graduatoria'); const { Graduatoria } = require('../models/graduatoria');
const Product = require('../models/product'); const Product = require('../models/product');
const ProductInfo = require('../models/productInfo'); const ProductInfo = require('../models/productInfo');
const Producer = require('../models/producer'); const Producer = require('../models/producer');
@@ -267,7 +270,7 @@ module.exports = {
return process.env.ENABLE_PUSHNOTIFICATION === '1'; return process.env.ENABLE_PUSHNOTIFICATION === '1';
}, },
async sendNotif(typenotif, idnotif, res, idapp, user, recnotif, cmd) { async sendNotifCmd(typenotif, idnotif, res, idapp, user, recnotif, cmd) {
// Controlla nelle impostazioni che tipo di Notifica visualizzare // Controlla nelle impostazioni che tipo di Notifica visualizzare
const sendemail = require('../sendemail'); const sendemail = require('../sendemail');
@@ -473,9 +476,9 @@ module.exports = {
if (risult && (risult.text || risult.caption)) if (risult && (risult.text || risult.caption))
textsent = (risult.text || risult.caption); textsent = (risult.text || risult.caption);
} catch (e) { } catch (e) {
} }
} }
} }
} }
@@ -518,98 +521,261 @@ module.exports = {
return await this.SendMsgToParam(idapp, params); return await this.SendMsgToParam(idapp, params);
}, },
SearchString: async function (idapp, searchString) {
const db = mongoose.connection.db;
let result = '';
let resultPrima = '';
if (!searchString)
return '';
try {
// Ottieni tutte le collezioni del database
const collections = await db.listCollections().toArray();
const collectionNames = collections.map(collection => collection.name);
for (const collectionName of collectionNames) {
// Crea l'indice di testo per la collezione
await db.collection(collectionName).createIndex({ "$**": "text" });
if (collectionName !== 'sendnotifs') {
// Cerca nella collezione
const found = await db.collection(collectionName).find({
$and: [
{ idapp: idapp },
{ $text: { $search: searchString } },
{ 'profile.username_telegram': { $exists: false } }
]
}).toArray();
if (found.length > 0) {
resultPrima += `Risultati trovati nella collezione: ${collectionName} (${found.length} record)\n`;
result += `Risultati trovati nella collezione: ${collectionName}\n`;
for (const record of found) {
result += JSON.stringify(record) + '\n';
}
result += '\n';
}
}
}
if (result === '') {
result = 'La stringa non è stata trovata in nessuna collezione.';
}
} catch (error) {
result = `Errore durante la ricerca: ${error.message}`;
} finally {
}
return resultPrima + '\n\n' + result;
},
replaceAportadorSolidario: async function (idapp, search_username, replace_username) {
console.log('INIZIO replaceAportadorSolidario')
if (!search_username || !replace_username) {
return false;
}
ris = await User.updateMany({ idapp, aportador_iniziale: search_username },
{
$set:
{ aportador_iniziale: replace_username }
});
console.log('aportador_iniziale result = ', ris);
ris = await User.updateMany({ idapp, aportador_solidario: search_username },
{
$set:
{ aportador_solidario: replace_username }
});
console.log('aportador_solidario result = ', ris);
},
replaceUsername: async function (idapp, search_username, replace_username) { replaceUsername: async function (idapp, search_username, replace_username) {
if (!search_username || !replace_username) { if (!search_username || !replace_username) {
return false; return false;
} }
const test = false;
console.log('INIZIO replaceUsername') console.log('INIZIO replaceUsername')
try { try {
let ris = null; let ris = null;
console.log('replaceUsername = ', search_username, replace_username); console.log('replaceUsername = ', search_username, replace_username);
ris = await User.findOneAndUpdate({ idapp, username: search_username }, { $set: { username: replace_username } }); const dir = tools.getdirByIdApp(idapp, true);
console.log('username result = ', ris);
tools.move(server_constants.DIR_UPLOAD + 'profile/' + search_username, server_constants.DIR_UPLOAD + 'profile/' + replace_username, function callback() { tools.move(dir + server_constants.DIR_UPLOAD + '/profile/' + search_username, dir + server_constants.DIR_UPLOAD + '/profile/' + replace_username, function callback() {
console.log(' ... moved dir', server_constants.DIR_UPLOAD + 'profile/' + search_username, server_constants.DIR_UPLOAD + 'profile/' + replace_username); console.log(' ... moved dir', dir + server_constants.DIR_UPLOAD + '/profile/' + search_username, dir + server_constants.DIR_UPLOAD + '/profile/' + replace_username);
}); });
ris = await User.findOneAndUpdate({ idapp, 'profile.username_telegram': search_username }, { $set: { 'profile.username_telegram': replace_username } }); if (test) {
console.log('profile.username_telegram result = ', ris); // esco...
ris = await User.updateMany({ idapp, aportador_iniziale: search_username }, } else {
{
$set:
{ aportador_iniziale: replace_username }
});
console.log('aportador_iniziale result = ', ris);
ris = await User.updateMany({ idapp, username_who_report: search_username }, ris = await User.findOneAndUpdate({ idapp, username: search_username }, { $set: { username: replace_username } });
{ console.log('username result = ', ris);
$set:
{ username_who_report: replace_username }
});
console.log('username_who_report result = ', ris);
ris = await User.updateMany({ idapp, aportador_solidario: search_username }, ris = await User.findOneAndUpdate({ idapp, username: search_username }, { $set: { username: replace_username } });
{ console.log('username result = ', ris);
$set:
{ aportador_solidario: replace_username }
});
console.log('aportador_solidario result = ', ris);
ris = await User.updateMany({ idapp, 'profile.friends.username': search_username }, ris = await User.findOneAndUpdate({ idapp, 'profile.username_telegram': search_username }, { $set: { 'profile.username_telegram': replace_username } });
{ console.log('profile.username_telegram result = ', ris);
$set:
{ 'profile.friends.$.username': replace_username }
});
console.log('friends.username result = ', ris);
ris = await User.updateMany({ idapp, 'profile.req_friends.username': search_username }, ris = await User.updateMany({ idapp, aportador_iniziale: search_username },
{ {
$set: $set:
{ 'profile.req_friends.$.username': replace_username } { aportador_iniziale: replace_username }
}); });
console.log('req_friends.username result = ', ris); console.log('aportador_iniziale result = ', ris);
ris = await User.updateMany({ idapp, 'profile.handshake.username': search_username }, ris = await User.updateMany({ idapp, username_who_report: search_username },
{ {
$set: $set:
{ 'profile.handshake.$.username': replace_username } { username_who_report: replace_username }
}); });
console.log('handshake.username result = ', ris); console.log('username_who_report result = ', ris);
ris = await Circuit.updateMany({ idapp, 'admins.username': search_username }, ris = await User.updateMany({ idapp, aportador_solidario: search_username },
{ $set: { 'admins.$.username': replace_username } }); {
console.log('Circuit.admins.username result = ', ris); $set:
{ aportador_solidario: replace_username }
});
console.log('aportador_solidario result = ', ris);
ris = await Circuit.updateMany({ idapp, 'req_users.username': search_username }, ris = await User.updateMany({ idapp, 'profile.friends.username': search_username },
{ $set: { 'req_users.$.username': replace_username } }); {
console.log('Circuit.req_users.username result = ', ris); $set:
{ 'profile.friends.$.username': replace_username }
});
console.log('friends.username result = ', ris);
ris = await Circuit.updateMany({ idapp, 'refused_users.username': search_username }, ris = await User.updateMany({ idapp, 'profile.req_friends.username': search_username },
{ $set: { 'refused_users.$.username': replace_username } }); {
console.log('Circuit.refused_users.username result = ', ris); $set:
{ 'profile.req_friends.$.username': replace_username }
});
console.log('req_friends.username result = ', ris);
ris = await Account.updateMany({ idapp, 'username': search_username }, ris = await User.updateMany({ idapp, 'profile.handshake.username': search_username },
{ $set: { 'username': replace_username } }); {
console.log('Account.username result = ', ris); $set:
{ 'profile.handshake.$.username': replace_username }
});
console.log('handshake.username result = ', ris);
ris = await MyGroup.updateMany({ idapp, 'admins.username': search_username }, ris = await Circuit.updateMany({ idapp, 'admins.username': search_username },
{ $set: { 'admins.$.username': replace_username } }); { $set: { 'admins.$.username': replace_username } });
console.log('MyGroup.refused_users.username result = ', ris); console.log('Circuit.admins.username result = ', ris);
ris = await MyGroup.updateMany({ idapp, 'req_users.username': search_username }, ris = await Circuit.updateMany({ idapp, 'createdBy': search_username },
{ $set: { 'req_users.$.username': replace_username } }); { $set: { 'createdBy': replace_username } });
console.log('MyGroup.req_users.username result = ', ris); console.log('Circuit.createdBy result = ', ris);
ris = await MyGroup.updateMany({ idapp, 'createdBy': search_username },
{ $set: { 'createdBy': replace_username } });
console.log('MyGroup.createdBy result = ', ris);
ris = await MyElem.updateMany(
{
idapp,
$or: [
{ 'containerHtml': { $regex: search_username, $options: 'i' } },
{ 'link': { $regex: search_username, $options: 'i' } }
]
},
[
{
$set: {
containerHtml: {
$replaceAll: {
input: "$containerHtml",
find: search_username,
replacement: replace_username
}
},
link: {
$replaceAll: {
input: "$link",
find: search_username,
replacement: replace_username
}
}
}
}
]
);
console.log('MyElem.containerHtml result = ', ris);
ris = await Circuit.updateMany({ idapp, 'req_users.username': search_username },
{ $set: { 'req_users.$.username': replace_username } });
console.log('Circuit.req_users.username result = ', ris);
ris = await Circuit.updateMany({ idapp, 'refused_users.username': search_username },
{ $set: { 'refused_users.$.username': replace_username } });
console.log('Circuit.refused_users.username result = ', ris);
ris = await Account.updateMany({ idapp, 'username': search_username },
{ $set: { 'username': replace_username } });
console.log('Account.username result = ', ris);
ris = await MyGroup.updateMany({ idapp, 'admins.username': search_username },
{ $set: { 'admins.$.username': replace_username } });
console.log('MyGroup.refused_users.username result = ', ris);
ris = await MyGroup.updateMany({ idapp, 'req_users.username': search_username },
{ $set: { 'req_users.$.username': replace_username } });
console.log('MyGroup.req_users.username result = ', ris);
// MyGroup.refused_users.username
ris = await MyGroup.updateMany({ idapp, 'refused_users.username': search_username },
{ $set: { 'refused_users.$.username': replace_username } });
console.log('MyGroup.refused_users.username result = ', ris);
const { SendNotif } = require('../models/sendnotif');
ris = await SendNotif.updateMany({ idapp, 'sender': search_username },
{ $set: { 'sender': replace_username } });
console.log('SendNotif.sender result = ', ris);
try {
ris = await SendNotif.updateMany({ idapp, 'dest': search_username },
{ $set: { 'dest': replace_username } });
console.log('SendNotif.dest result = ', ris);
} catch (e) {
console.error(e);
}
ris = await Reaction.updateMany({ idapp, 'username': search_username },
{ $set: { 'username': replace_username } });
console.log('Reaction.dest result = ', ris);
ris = await SendMsg.updateMany({ idapp, 'dest': search_username },
{ $set: { 'dest': replace_username } });
console.log('SendMsg.dest result = ', ris);
ris = await SendMsg.updateMany({ idapp, 'origin': search_username },
{ $set: { 'origin': replace_username } });
console.log('SendMsg.origin result = ', ris);
ris = await Booking.updateMany({ idapp, 'username': search_username },
{ $set: { 'username': replace_username } });
console.log('Booking.username result = ', ris);
}
// MyGroup.refused_users.username
ris = await MyGroup.updateMany({ idapp, 'refused_users.username': search_username },
{ $set: { 'refused_users.$.username': replace_username } });
console.log('MyGroup.refused_users.username result = ', ris);
} catch (e) { } catch (e) {

View File

@@ -46,6 +46,7 @@ module.exports = {
FILTER_USER_WITHOUT_USERNAME_TELEGRAM: 8388608, FILTER_USER_WITHOUT_USERNAME_TELEGRAM: 8388608,
FILTER_USER_PROVINCE: 16777216, FILTER_USER_PROVINCE: 16777216,
FILTER_USER_SENZA_PROVINCE: 33554432, FILTER_USER_SENZA_PROVINCE: 33554432,
FILTER_USER_SENZA_CIRCUITO: 67108864,
OPTIONS_SEARCH_ONLY_FULL_WORDS: 1, OPTIONS_SEARCH_ONLY_FULL_WORDS: 1,
OPTIONS_SEARCH_USER_ONLY_FULL_WORDS: 2, OPTIONS_SEARCH_USER_ONLY_FULL_WORDS: 2,

View File

@@ -1 +1 @@
1.1.15 1.1.16