diff --git a/src/server/models/mygroup.js b/src/server/models/mygroup.js index 11bb344..21cf604 100755 --- a/src/server/models/mygroup.js +++ b/src/server/models/mygroup.js @@ -242,6 +242,13 @@ MyGroupSchema.statics.getInfoGroupByGroupname = async function(idapp, groupname) }; +MyGroupSchema.statics.deleteGroup = async function(idapp, usernameOrig, groupname) { + console.log('Gruppo ' + groupname + ' rimosso da ' + usernameOrig); + return MyGroup.findOneAndRemove({idapp, groupname}); +}; + + + MyGroupSchema.statics.getGroupsByUsername = async function(idapp, username, req) { try { diff --git a/src/server/models/user.js b/src/server/models/user.js index 853ab58..95661f9 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -1757,6 +1757,19 @@ UserSchema.statics.setGroupsCmd = async function(idapp, usernameOrig, groupnameD ris = await User.removeFromMyGroups(idapp, usernameOrig, groupnameDest); // Rimuovo l'Amicizia da me console.log('ris', ris); + } else if (cmd === shared_consts.GROUPSCMD.DELETE_GROUP) { + + ris = await User.removeFromMyGroups(idapp, usernameOrig, groupnameDest); // Rimuovo l'Amicizia da me + + if (ris) { + // Invia una notifica alla persona e agli Admin + await tools.sendNotificationByGroupname(idapp, usernameOrig, groupnameDest, cmd, true, username_action); + + } + ris = await MyGroup.deleteGroup(idapp, usernameOrig, groupnameDest); // Rimuovo l'Amicizia da me + console.log('ris', ris); + + } else if (cmd === shared_consts.GROUPSCMD.CANCEL_REQ_GROUP) { ris = await MyGroup.removeReqGroup(idapp, usernameOrig, groupnameDest); // Rimuovo l'Amicizia da me diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index 74463f6..bb16e3f 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -333,7 +333,7 @@ router.post('/settable', authenticate, async (req, res) => { // aggiungi il creatore al gruppo stesso return User.setGroupsCmd(mydata.idapp, req.user.username, myrec.groupname, - shared_consts.GROUPSCMD.SETGROUP, true).then((ris) => { + shared_consts.GROUPSCMD.SETGROUP, true, req.user.username).then((ris) => { return res.send(myrec); }); } diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index eab81ab..9f113e2 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -609,7 +609,7 @@ router.post('/groups/cmd', authenticate, (req, res) => { } }*/ - return User.setGroupsCmd(idapp, usernameOrig, groupnameDest, cmd, value). + return User.setGroupsCmd(idapp, usernameOrig, groupnameDest, cmd, value, usernameLogged). then((ris) => { res.send(ris); }). diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js index e47b690..5966399 100755 --- a/src/server/telegram/telegrambot.js +++ b/src/server/telegram/telegrambot.js @@ -685,7 +685,7 @@ const txt_pt = { const TelegramBot = require('node-telegram-bot-api'); -const ADMIN_IDTELEGRAM_TEST = 5022837609; //Perseo +const ADMIN_IDTELEGRAM_TEST = 5356627050; // 5022837609; //Perseo const MyTelegramBot = { diff --git a/src/server/tools/general.js b/src/server/tools/general.js index efa0d98..2a7cf6d 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -124,8 +124,10 @@ const textlang = { 'ZOOM_CONFERMATO': 'Sei stato confermato ad aver visto la Video Conferenza di Benvenuto!', 'RICHIESTA_AMICIZIA': '๐ŸŒˆ Richiesta d\'Amicizia da parte di %s', 'ACCETTATO_SUL_GRUPPO': 'โœ… Sei stato accettato da %s a far parte del Gruppo %s', + 'CREATO_NUOVO_GRUPPO': 'โœ… Hai appena creato un nuovo Gruppo chiamato %s', 'ACCETTATO_NOTIFICA_ADMINS': 'โœ… l\'utente %s รจ stato accettato a far parte del Gruppo %s (da parte di %s)', 'RICHIESTA_GRUPPO': 'Richiesta di entrare nel Gruppo %s da parte di %s', + 'GRUPPO_ELIMINATO': 'Il gruppo %s รจ stato eliminato da parte di %s', 'RICHIESTA_BLOCCO_GRUPPO': 'Richiesta di bloccare il Gruppo %s da parte di %s', }, si: {}, @@ -925,9 +927,15 @@ module.exports = { actions: [], }; + let creazionegruppo = false; + for (const singleadmin of arrusernameAdmins) { try { if (singleadmin.username) { + + creazionegruppo = arrusernameAdmins.length === 1 && usernameOrig === singleadmin.username && cmd === + shared_consts.GROUPSCMD.SETGROUP; + const user = await User.findOne({idapp, username: singleadmin.username}, {_id: 1, lang: 1}); if (user) { @@ -939,7 +947,11 @@ module.exports = { if (cmd) { if (cmd === shared_consts.GROUPSCMD.SETGROUP) { - objmsg.descr = printf(this.get__('ACCETTATO_NOTIFICA_ADMINS', lang), usernameOrig, groupname, username_action); + if (creazionegruppo) { + objmsg.descr = printf(this.get__('CREATO_NUOVO_GRUPPO', lang), groupname); + } else { + objmsg.descr = printf(this.get__('ACCETTATO_NOTIFICA_ADMINS', lang), usernameOrig, groupname, username_action); + } objmsg.openUrl = '/grp/' + groupname; objmsg.tag = 'addgroups'; @@ -958,11 +970,15 @@ module.exports = { groupname, singleadmin.username); objmsg.openUrl = '/grp/' + groupname; objmsg.tag = 'blockgroups'; + } else if (cmd === shared_consts.GROUPSCMD.DELETE_GROUP) { + objmsg.descr = printf(this.get__('GRUPPO_ELIMINATO', lang), groupname, username_action); + objmsg.openUrl = '/grp/' + groupname; + objmsg.tag = 'deletegroup'; } } - if (sendnotif && objmsg.descr) { + if (sendnotif && objmsg.descr && !creazionegruppo) { await this.sendNotifAndMsgTelegram(idapp, userId, objmsg, telegram, struserinfomsg); } @@ -975,10 +991,13 @@ module.exports = { if (cmd === shared_consts.GROUPSCMD.SETGROUP) { const reclang = await User.getRecLangAndIdByUsername(idapp, usernameOrig); - objmsg.descr = printf(this.get__('ACCETTATO_SUL_GRUPPO', reclang.lang), username_action, groupname); objmsg.openUrl = '/grp/' + groupname; objmsg.tag = 'addgroups'; - + if (creazionegruppo) { + objmsg.descr = printf(this.get__('CREATO_NUOVO_GRUPPO', reclang.lang), groupname); + } else { + objmsg.descr = printf(this.get__('ACCETTATO_SUL_GRUPPO', reclang.lang), username_action, groupname); + } // Send to User: await this.sendNotifAndMsgTelegram(idapp, reclang._id, objmsg, telegram); } @@ -1701,12 +1720,46 @@ module.exports = { }; query.push({$match: {$and: [condition]}}); + } else if (shared_consts.TABLES_ENABLE_GETREC_BYID.includes(params.table)) { + // Rimuovi dalla query quelli non visibili + + let arraygroups = []; + + if (user && user.profile.mygroups) { + arraygroups = user.profile.mygroups.map(rec => rec.groupname); + } + // prendere i gruppi dell'utente + + // Cerca tra i gruppi di ogni record, se combaciano almeno 1 + condition = { + 'profile.mygroups': + { + $elemMatch: { + groupname: {$in: arraygroups}, + }, + + }, + }; + + query.push( + { + $match: + { + $or: [ + { + $and: [condition, {pub_to_share: 1}], + }, + {$or: [{pub_to_share: {$exists: false}}, {pub_to_share: {$exists: true, $eq: shared_consts.PUBTOSHARE.ALL}}]}, + ], + }, + }, + ); + } } } - if (params.filtersearch3or) { if (params.filtersearch3or.length > 0) { query.push({$match: {$or: params.filtersearch3or}}); diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index c20e5e7..7923939 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -58,6 +58,7 @@ module.exports = { CANCEL_REQ_GROUP: 1146, BLOCK_GROUP: 1155, FIND_GROUP: 1166, + DELETE_GROUP: 1170, }, REPORT_FILT_RESP: 1,