From c631ca9d6acd424434656958aea2c0f0d0bb2e23 Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Sat, 11 Jan 2025 12:07:58 +0100 Subject: [PATCH] - varie sistemazioni: filtri iscritti, profilo, ecc... --- src/server/models/sendnotif.js | 4 +- src/server/models/user.js | 4 +- src/server/router/users_router.js | 11 ++ src/server/tools/globalTables.js | 300 +++++++++++++++++++++++------- src/server/tools/shared_nodejs.js | 1 + src/server/version.txt | 2 +- 6 files changed, 251 insertions(+), 71 deletions(-) diff --git a/src/server/models/sendnotif.js b/src/server/models/sendnotif.js index b9b186f..d6c0676 100755 --- a/src/server/models/sendnotif.js +++ b/src/server/models/sendnotif.js @@ -745,7 +745,7 @@ sendNotifSchema.statics.saveAndSendNotif = async function (myrecnotif, req, res, // console.log('myrecread._id', myrecread._id.toString()); 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 return false; } @@ -756,7 +756,7 @@ sendNotifSchema.statics.saveAndSendNotif = async function (myrecnotif, req, res, } } 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); } diff --git a/src/server/models/user.js b/src/server/models/user.js index 6c26da4..e17be31 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -2539,7 +2539,9 @@ UserSchema.statics.setFriendsCmd = async function (req, idapp, usernameOrig, use const msgOrig = i18n.__({ phrase, locale: user.lang }, usernameOrig); await telegrambot.sendMsgTelegram(idapp, usernameOrig, msgDest); - await telegrambot.sendMsgTelegram(idapp, usernameDest, msgOrig); + if (phrase !== 'HANDSHAKE_SET') { + await telegrambot.sendMsgTelegram(idapp, usernameDest, msgOrig); + } } } catch (e) { console.error('Notification : ', e); diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index 4433145..fafd9d7 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -1398,6 +1398,17 @@ async function eseguiDbOp(idapp, mydata, locale, req, res) { if (User.isAdmin(req.user.perm)) { 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') { const idapporig = 1; diff --git a/src/server/tools/globalTables.js b/src/server/tools/globalTables.js index b8184bd..b322089 100755 --- a/src/server/tools/globalTables.js +++ b/src/server/tools/globalTables.js @@ -10,6 +10,8 @@ require('../models/subscribers'); const { ObjectId } = require('mongodb'); +const mongoose = require('mongoose'); + const { User } = require('../models/user'); const { MyGroup } = require('../models/mygroup'); const { Booking } = require('../models/booking'); @@ -57,6 +59,7 @@ const { SendMsg } = require('../models/sendmsg'); const { Permission } = require('../models/permission'); const { MsgTemplate } = require('../models/msg_template'); const { Graduatoria } = require('../models/graduatoria'); + const Product = require('../models/product'); const ProductInfo = require('../models/productInfo'); const Producer = require('../models/producer'); @@ -267,7 +270,7 @@ module.exports = { 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 const sendemail = require('../sendemail'); @@ -473,9 +476,9 @@ module.exports = { if (risult && (risult.text || risult.caption)) textsent = (risult.text || risult.caption); } catch (e) { - + } - + } } } @@ -518,98 +521,261 @@ module.exports = { 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) { if (!search_username || !replace_username) { return false; } + const test = false; + + console.log('INIZIO replaceUsername') try { let ris = null; console.log('replaceUsername = ', search_username, replace_username); - ris = await User.findOneAndUpdate({ idapp, username: search_username }, { $set: { username: replace_username } }); - console.log('username result = ', ris); + const dir = tools.getdirByIdApp(idapp, true); - tools.move(server_constants.DIR_UPLOAD + 'profile/' + search_username, 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); + tools.move(dir + server_constants.DIR_UPLOAD + '/profile/' + search_username, dir + server_constants.DIR_UPLOAD + '/profile/' + replace_username, function callback() { + 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 } }); - console.log('profile.username_telegram result = ', ris); + if (test) { + // esco... - ris = await User.updateMany({ idapp, aportador_iniziale: search_username }, - { - $set: - { aportador_iniziale: replace_username } - }); - console.log('aportador_iniziale result = ', ris); + } else { - ris = await User.updateMany({ idapp, username_who_report: search_username }, - { - $set: - { username_who_report: replace_username } - }); - console.log('username_who_report result = ', ris); + ris = await User.findOneAndUpdate({ idapp, username: search_username }, { $set: { username: replace_username } }); + console.log('username result = ', ris); - ris = await User.updateMany({ idapp, aportador_solidario: search_username }, - { - $set: - { aportador_solidario: replace_username } - }); - console.log('aportador_solidario result = ', ris); + ris = await User.findOneAndUpdate({ idapp, username: search_username }, { $set: { username: replace_username } }); + console.log('username result = ', ris); - ris = await User.updateMany({ idapp, 'profile.friends.username': search_username }, - { - $set: - { 'profile.friends.$.username': replace_username } - }); - console.log('friends.username result = ', ris); + ris = await User.findOneAndUpdate({ idapp, 'profile.username_telegram': search_username }, { $set: { 'profile.username_telegram': replace_username } }); + console.log('profile.username_telegram result = ', ris); - ris = await User.updateMany({ idapp, 'profile.req_friends.username': search_username }, - { - $set: - { 'profile.req_friends.$.username': replace_username } - }); - console.log('req_friends.username result = ', ris); + 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, 'profile.handshake.username': search_username }, - { - $set: - { 'profile.handshake.$.username': replace_username } - }); - console.log('handshake.username result = ', ris); + ris = await User.updateMany({ idapp, username_who_report: search_username }, + { + $set: + { username_who_report: replace_username } + }); + console.log('username_who_report result = ', ris); - ris = await Circuit.updateMany({ idapp, 'admins.username': search_username }, - { $set: { 'admins.$.username': replace_username } }); - console.log('Circuit.admins.username result = ', ris); + ris = await User.updateMany({ idapp, aportador_solidario: search_username }, + { + $set: + { aportador_solidario: replace_username } + }); + console.log('aportador_solidario 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 User.updateMany({ idapp, 'profile.friends.username': search_username }, + { + $set: + { 'profile.friends.$.username': replace_username } + }); + console.log('friends.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 User.updateMany({ idapp, 'profile.req_friends.username': search_username }, + { + $set: + { 'profile.req_friends.$.username': replace_username } + }); + console.log('req_friends.username result = ', ris); - ris = await Account.updateMany({ idapp, 'username': search_username }, - { $set: { 'username': replace_username } }); - console.log('Account.username result = ', ris); + ris = await User.updateMany({ idapp, 'profile.handshake.username': search_username }, + { + $set: + { 'profile.handshake.$.username': replace_username } + }); + console.log('handshake.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 Circuit.updateMany({ idapp, 'admins.username': search_username }, + { $set: { 'admins.$.username': replace_username } }); + console.log('Circuit.admins.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); + ris = await Circuit.updateMany({ idapp, 'createdBy': search_username }, + { $set: { 'createdBy': replace_username } }); + 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) { diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index eb94d16..2d0a62b 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -46,6 +46,7 @@ module.exports = { FILTER_USER_WITHOUT_USERNAME_TELEGRAM: 8388608, FILTER_USER_PROVINCE: 16777216, FILTER_USER_SENZA_PROVINCE: 33554432, + FILTER_USER_SENZA_CIRCUITO: 67108864, OPTIONS_SEARCH_ONLY_FULL_WORDS: 1, OPTIONS_SEARCH_USER_ONLY_FULL_WORDS: 2, diff --git a/src/server/version.txt b/src/server/version.txt index 8d2c87f..b01de29 100644 --- a/src/server/version.txt +++ b/src/server/version.txt @@ -1 +1 @@ -1.1.15 \ No newline at end of file +1.1.16 \ No newline at end of file