diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index fafd9d7..c559b42 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -1398,6 +1398,11 @@ 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 === 'ExitFromAllCircuitWithZero') { + + if (User.isAdmin(req.user.perm)) { + ris = globalTables.ExitFromAllCircuitWithZero(req.body.idapp, mydata.search_username); + } } else if (mydata.dbop === 'replaceAportadorSolidario') { if (User.isAdmin(req.user.perm)) { diff --git a/src/server/tools/general.js b/src/server/tools/general.js index 726a472..487bb2c 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -1435,7 +1435,7 @@ module.exports = { getAdminsByCircuit(circuit) { // return circuit.admins - return [...circuit.admins, shared_consts.USER_ADMIN_CIRCUITS] + return [...circuit.admins, { username: shared_consts.USER_ADMIN_CIRCUITS }] }, sendNotificationByCircuit: async function (idapp, usernameOrig, circuitname, cmd, value, telegram, username_action, extrarec) { @@ -1515,7 +1515,7 @@ module.exports = { const groupOrig = '' //++Todo: extrarec.groupOrig - for (const singleadmin of this.getAdminsByCircuit(circuit) { + for (const singleadmin of this.getAdminsByCircuit(circuit)) { try { if (singleadmin.username) { if (usernameOrig === singleadmin.username) diff --git a/src/server/tools/globalTables.js b/src/server/tools/globalTables.js index db17312..8a945e0 100755 --- a/src/server/tools/globalTables.js +++ b/src/server/tools/globalTables.js @@ -953,7 +953,45 @@ module.exports = { res.status(408).send({}); } - } + }, + + async removeAdminIfZeroBalance(idapp, username) { + try { + // Trova l'account con saldo_pend a zero + const accountarr = await Account.find({ idapp, username: username, saldo_pend: 0 }).lean(); + + if (accountarr) { + for (const recaccount of accountarr) { + // Rimuovi l'username dalla lista degli admins nel Circuit + const ris = await Circuit.findOneAndUpdate( + { _id: recaccount.circuitId }, + { $pull: { admins: { username: username } } }, // Rimuove l'username dalla lista degli admins + { new: true } // Opzione per restituire il documento aggiornato + ); + + const nomecircuito = ris.name; + + // Esco anche dal Circuito personale: + await User.findOneAndUpdate( + { idapp, username }, + { $pull: { 'profile.mycircuits': { circuitname: nomecircuito } } } + ); + + if (ris) + console.log(`L'username ${username} รจ stato rimosso dagli admins di ` + nomecircuito); + } + } else { + console.log(`Nessun account trovato con saldo_pend a zero per l'username: ${username}.`); + } + } catch (error) { + console.error('Errore durante l\'operazione:', error); + } + }, + + async ExitFromAllCircuitWithZero(idapp, username) { + return await this.removeAdminIfZeroBalance(idapp, username); + + }, };