diff --git a/.DS_Store b/.DS_Store index 39644d9..367fdf3 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/emails/.DS_Store b/emails/.DS_Store new file mode 100644 index 0000000..d12274f Binary files /dev/null and b/emails/.DS_Store differ diff --git a/logevents.txt b/logevents.txt index 090f32c..0231e84 100644 --- a/logevents.txt +++ b/logevents.txt @@ -22,4 +22,6 @@ Dom 25/06 ORE 16:11: 🤖: Da Sùrya (Paolo) undefined (paoloar77): Ven 29/09 ORE 23:18: 🤖: Da Sùrya (Paolo) undefined (paoloar77): ✅ SuryaArena è stato Abilitato correttamente (da paoloar77)! Mar 03/10 ORE 22:49: 🤖: Da Sùrya (Paolo) undefined (paoloar77): +✅ SuryaArena è stato Abilitato correttamente (da paoloar77)! +Sab 04/11 ORE 15:17: 🤖: Da Sùrya (Paolo) undefined (paoloar77): ✅ SuryaArena è stato Abilitato correttamente (da paoloar77)! \ No newline at end of file diff --git a/src/server/locales/it.json b/src/server/locales/it.json index 05050b0..e720269 100644 --- a/src/server/locales/it.json +++ b/src/server/locales/it.json @@ -45,6 +45,7 @@ "FRIEND_UNBLOCKED_YOU": "Hai riattivato %s.", "CIRCUIT_ACCEPT_NEWENTRY": "❇️👥 🧍‍♂️ Abilita fido a %s nel '%s':", "CIRCUIT_ACCEPT_NEWENTRY_BYGROUP": "❇️👥 🧍‍♂️ Abilita fido nel Circuito al gruppo %s:", + "CIRCUIT_OPEN_RISITALIA": "Apri il Circuito RIS Italia e chiedi di entrare", "CIRCUIT_REQUEST_TO_ENTER": "%s è entrato nel %s (con %s iscritti) ed è in attesa di essere abilitato al Fido (è stato invitato da %s)", "CIRCUIT_ADMINS": "Gli amministratori del circuito sono %s:\n%s", "CIRCUIT_WHERE_IS_PRESENT": "\nAttualmente è presente in: %s", @@ -105,5 +106,6 @@ "SET_ATTEND_OTHERS": "%s e altre %s persone hanno detto che Parteciperanno all'evento: %s", "DATEDAYONLY": "%s dalle %s alle %s", "DATE_2DAYS": "%s dalle %s fino a %s alle %s", - "CLICCA_QUI": "CLICCA QUI" + "SENDMSG_ENTRA_IN_RISO_ITALIA": "Ciao %s!
%s che appartiene al %s vuole inviarti dei RIS. Per poterli ricevere dovete entrambi utilizzare il Circuito RIS Italia.", + "CLICCA_QUI": "CLICCA QUI" } \ No newline at end of file diff --git a/src/server/models/account.js b/src/server/models/account.js index 1bb2993..bd60579 100755 --- a/src/server/models/account.js +++ b/src/server/models/account.js @@ -582,7 +582,7 @@ AccountSchema.statics.SetMinMaxComunitari = async function (idapp, valmin, valma }; // Imposta a tutti i Conti Personali, i seguenti minimi e massimi -AccountSchema.statics.SetMinMaxPersonali = async function (idapp, valmin, valmax, circuitId) { +AccountSchema.statics.SetMinMaxPersonali = async function (idapp, fidoConcesso, qta_maxConcessa, circuitId) { const Account = this; if (circuitId) { @@ -590,17 +590,21 @@ AccountSchema.statics.SetMinMaxPersonali = async function (idapp, valmin, valmax { $set: { - fidoConcesso: valmin, - qta_maxConcessa: valmax, + fidoConcesso, + qta_maxConcessa, } }); + + // Se aggiorno questi dati, allora devo aggiornare anche gli account del RIS Nazionale + await Account.updateAccountCircuitoNazionaleByLimiti(idapp, circuitId, fidoConcesso, qta_maxConcessa); + } else { const ris = await Account.updateMany({ idapp, fidoConcesso: { $gt: 0 }, username: { "$nin": [null, ""] } }, { $set: { - fidoConcesso: valmin, - qta_maxConcessa: valmax, + fidoConcesso, + qta_maxConcessa, } }); } @@ -621,6 +625,66 @@ AccountSchema.statics.updateFido = async function (idapp, username, groupname, c return risult; }; +AccountSchema.statics.updateQtaMax = async function (idapp, username, groupname, circuitId, qtamax) { + + let paramstoupdate = { + qta_maxConcessa: qtamax, + }; + let risult = null; + if (groupname) + risult = await Account.updateOne({ idapp, circuitId, groupname }, { $set: paramstoupdate }); + else + risult = await Account.updateOne({ idapp, username, circuitId }, { $set: paramstoupdate }); + + return risult; +}; + +AccountSchema.statics.getAccountsCircuitiNazionali = async function (idapp) { + const { Circuit } = require('../models/circuit'); + + const circuit = await Circuit.find({ idapp, showAlways: true }); + + return Account.find({ idapp, circuitId: circuit.id }); +}; + +AccountSchema.statics.updateAccountCircuitoNazionaleByLimiti = async function (idapp, circuitId, fidoConcesso, qta_maxConcessa) { + const { Circuit } = require('../models/circuit'); + + try { + const accounts = await this.getAccountsCircuitiNazionali(idapp); + + for (const account of accounts) { + const circuitId = account.circuitId; + const circuit = await Circuit.findOne({ _id: circuitId }); + if (circuit) { + let fido = 0; + let qtamax = 0; + + if (account.groupname) { + fido = circuit.fido_scoperto_default_grp * shared_consts.CIRCUIT_CFG.MULT_FIDO_GROUP; + qtamax = circuit.qta_max_default_grp * shared_consts.CIRCUIT_CFG.MULT_FIDO_GROUP; + } else { + fido = circuit.fido_scoperto_default * shared_consts.CIRCUIT_CFG.MULT_FIDO_USER; + qtamax = circuit.qta_max_default * shared_consts.CIRCUIT_CFG.MULT_FIDO_USER; + } + + let paramstoupdate = { + fidoConcesso: fido, + qta_maxConcessa: qtamax, + }; + + risult = await Account.updateOne({ _id: account.id }, { $set: paramstoupdate }); + } + } + return risult; + } catch (e) { + console.error('updateAccountCircuitoNazionaleByLimiti', e); + } + + return false; + +}; + AccountSchema.statics.canEditAccountAdmins = async function (username, id) { const account = await Account.findOne({ _id: id }).lean(); @@ -653,11 +717,19 @@ AccountSchema.statics.addToPeopleOfMyAccount = async function (idapp, username, // Rimuovi dagli Admin del Account AccountSchema.statics.removeAdminOfAccount = async function (idapp, username, circuitId, person_username, perm) { + const { Circuit } = require('../models/circuit'); return await Circuit.updateOne({ idapp, username, circuitId }, { $pull: { people: { username: { $in: [person_username] } } } }); }; +// Rimuovi l'account +AccountSchema.statics.removeAccount = async function (accountId) { + const { Circuit } = require('../models/circuit'); + + return await Circuit.deleteOne({ _id: accountId}); +}; + AccountSchema.statics.updateSaldoAndTransato_AllAccounts = async function (idapp) { const recaccounts = await Account.find({ idapp }); diff --git a/src/server/models/circuit.js b/src/server/models/circuit.js index bf402c7..749ea69 100755 --- a/src/server/models/circuit.js +++ b/src/server/models/circuit.js @@ -80,6 +80,9 @@ const CircuitSchema = new Schema({ totCircolante: { type: Number, }, + showAlways: { + type: Boolean, + }, totTransato: { type: Number, }, @@ -212,6 +215,10 @@ const CircuitSchema = new Schema({ type: Number, default: 0, }, + showAlways: { + type: Boolean, + default: false, + }, status: { type: Number, default: 0, @@ -276,6 +283,7 @@ CircuitSchema.statics.getWhatToShow = function (idapp, username) { fido_scoperto_default_grp: 1, qta_max_default_grp: 1, deperimento: 1, + showAlways: 1, transactionsEnabled: 1, status: 1, valuta_per_euro: 1, @@ -331,6 +339,7 @@ CircuitSchema.statics.getWhatToShow_Unknown = function (idapp, username) { longdescr: 1, regulation: 1, numMembers: 1, + showAlways: 1, systemUserId: 1, founderUserId: 1, nome_valuta: 1, @@ -469,6 +478,23 @@ CircuitSchema.statics.getCircuitByName = async function (idapp, name) { }; +CircuitSchema.statics.getCircuitIdByName = async function (idapp, name) { + + const myfind = { + idapp, + name, + }; + + try { + const circuit = await Circuit.findOne(myfind); + return (!!circuit ? circuit._id : 0); + + } catch (e) { + return null; + } + +}; + CircuitSchema.statics.getCircuitByProvince = async function (idapp, strProv) { const myfind = { @@ -915,6 +941,28 @@ CircuitSchema.statics.SetDefMinMaxPersonali = async function (idapp, valmin, val }; +// Imposta a tutti i Conti Collettivi, i seguenti minimi e massimi +CircuitSchema.statics.getCircuitMyProvince = async function (idapp, username) { + const { User } = require('../models/user'); + + const myuser = await User.getUserByUsername(idapp, username); + + try { + const circuit = await this.getCircuitByProvince(idapp, myuser.profile.resid_province); + + if (circuit) { + if (await User.ifAlreadyInCircuit(idapp, username, circuit.name)) { + return circuit.name; + } + } + + return '[nessun Circuito]'; + + } catch (e) { + console.error('Error', e); + } +}; + // Imposta a tutti i Conti Collettivi, i seguenti minimi e massimi CircuitSchema.statics.createCircuitIfNotExist = async function (req, idapp, province) { const { User } = require('../models/user'); @@ -936,6 +984,7 @@ CircuitSchema.statics.createCircuitIfNotExist = async function (req, idapp, prov photos: [], color: '#ff5500', deperimento: false, + showAlways: false, transactionsEnabled: true, // Abilita cmq il circuito dall'inizio status: shared_consts.CIRCUIT_STATUS.FASE1_CREAZIONE_GRUPPO, symbol: 'RIS', @@ -1031,7 +1080,7 @@ CircuitSchema.statics.getListCircuitsByUsername = async function (idapp, usernam const useraccounts = await Account.getUserAccounts(idapp, username); const groupsaccounts = await Account.getGroupAccounts(idapp, groupname); - + for (let account of useraccounts) { if (myuser.profile.mycircuits.find((rec) => (rec.circuitname === account.circuit.name))) { @@ -1092,16 +1141,56 @@ CircuitSchema.statics.setFido = async function (idapp, username, circuitName, gr mycircuit = await Circuit.findOne({ idapp, name: circuitName }); if (mycircuit) { const circuitId = mycircuit._id; + let account = null; + let fido = 0; + let qtamax = 0; - const account = await Account.getAccountByUsernameAndCircuitId(idapp, username, circuitId, true, true, groupname, ''); - if (account) { - let fido = 0; + if (mycircuit.showAlways) { + + const { User } = require('../models/user'); + + const myuser = await User.getUserByUsername(idapp, username); + + // Se è il circuito Nazionale, allora prende i valori dal proprio Circuito Locale: + const accountsuser = await Account.getUserAccounts(idapp, username); + if (accountsuser) { + // Se lo trovo della mia provincia, prendo quello + account = accountsuser.find((account) => account.circuit.strProv === myuser.profile.resid_province) + if (!account && accountsuser.length > 0) { + // Se non lo trovo, prendo il primo in cui sono entrato ! + account = accountsuser[0]; + } + if (account && account.circuit) { + if (groupname) { + qtamax = account.circuit.qta_max_default_grp * shared_consts.CIRCUIT_CFG.MULT_FIDO_GROUP; + fido = account.circuit.fido_scoperto_default_grp * shared_consts.CIRCUIT_CFG.MULT_FIDO_GROUP; + } else { + qtamax = account.circuit.qta_max_default * shared_consts.CIRCUIT_CFG.MULT_FIDO_USER; + fido = account.circuit.fido_scoperto_default * shared_consts.CIRCUIT_CFG.MULT_FIDO_USER; + } + } + } else { + // Se non ho Circuiti locali, non applico il Fido ! + return false; + } + + } else { + account = await Account.getAccountByUsernameAndCircuitId(idapp, username, circuitId, true, true, groupname, ''); if (groupname) fido = mycircuit.fido_scoperto_default_grp; else fido = mycircuit.fido_scoperto_default; + } - return await Account.updateFido(idapp, username, groupname, circuitId, fido); + if (account) { + if (qtamax > 0) { + await Account.updateQtaMax(idapp, username, groupname, circuitId, qtamax); + } + + const ris = await Account.updateFido(idapp, username, groupname, circuitId, fido); + if (ris) { + return { qta_maxConcessa: qtamax, fidoConcesso: fido }; + } } } return false; diff --git a/src/server/models/sendnotif.js b/src/server/models/sendnotif.js index e20d804..28278d1 100755 --- a/src/server/models/sendnotif.js +++ b/src/server/models/sendnotif.js @@ -381,16 +381,16 @@ sendNotifSchema.statics.getDescrAndLinkByRecNotif = async function (recnotif, us } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_SETFIDO) { if (recnotif.paramsObj.isAdmin) { if (recnotif.extrarec.groupname) { - newdescr = i18n.__('FIDO_IMPOSTATO_ADMINS_CIRCUIT_MYGROUP', recnotif.extrarec.groupname, -recnotif.paramsObj.extrarec.fido_scoperto_default_grp, recnotif.paramsObj.circuitnameDest, + newdescr = i18n.__('FIDO_IMPOSTATO_ADMINS_CIRCUIT_MYGROUP', recnotif.extrarec.groupname, -recnotif.paramsObj.extrarec.fidoConcesso, recnotif.paramsObj.circuitnameDest, username_action); } else { - newdescr = i18n.__('FIDO_IMPOSTATO_ADMINS_CIRCUIT', sender, -recnotif.paramsObj.extrarec.fido_scoperto_default, recnotif.paramsObj.circuitnameDest, + newdescr = i18n.__('FIDO_IMPOSTATO_ADMINS_CIRCUIT', sender, -recnotif.paramsObj.extrarec.fidoConcesso, recnotif.paramsObj.circuitnameDest, username_action); } recnotif.openUrl = '/my/' + sender; } else { - newdescr = i18n.__('FIDO_IMPOSTATO', -recnotif.paramsObj.extrarec.fido_scoperto_default, username_action, recnotif.paramsObj.circuitnameDest); + newdescr = i18n.__('FIDO_IMPOSTATO', -recnotif.paramsObj.extrarec.fidoConcesso, username_action, recnotif.paramsObj.circuitnameDest); } tag = 'setfido'; } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_ACCEPTED) { diff --git a/src/server/models/user.js b/src/server/models/user.js index 16bb76c..b09429f 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -450,6 +450,9 @@ const UserSchema = new mongoose.Schema({ noCircuit: { type: Boolean, }, + noCircIta: { + type: Boolean, + }, noFoto: { type: Boolean, }, @@ -1899,9 +1902,26 @@ UserSchema.statics.removeFromCircuits = async function (idapp, username, circuit update = { $pull: { req_users: { username: { $in: [username] } } } }; await Circuit.updateOne({ idapp, name: circuitname }, update); - return await User.updateOne({ idapp, username }, + const ris = await User.updateOne({ idapp, username }, { $pull: { 'profile.mycircuits': { circuitname: { $in: [circuitname] } } } }); + + const circuitId = await Circuit.getCircuitIdByName(idapp, circuitname); + let remove = false; + + // Se il mio account non è stato utilizzato, allora lo cancello anche questo + const myaccount = await Account.getAccountByUsernameAndCircuitId(idapp, username, circuitId, false, false, '', ''); + if (myaccount && myaccount.totTransato === 0) { + remove = true; + } else { + remove = true; + } + + if (remove) { + await Account.removeAccount(myaccount._id); + } + + return ris; }; // Aggiungo il Circuito @@ -2329,6 +2349,86 @@ UserSchema.statics.setFriendsCmd = async function (req, idapp, usernameOrig, use return ris; }; +UserSchema.statics.sendCmd = async function (req, idapp, usernameOrig, usernameDest, cmd, value, disablenotif) { + + const { SendNotif } = require('../models/sendnotif'); + + const telegrambot = require('../telegram/telegrambot'); + + const cl = telegrambot.getclTelegByidapp(idapp); + + if (!req) { + req = tools.getReqByPar(idapp, usernameOrig); + } + + const myuser = await User.getUserByUsername(idapp, usernameOrig); + const recuserDest = await User.getUserByUsername(idapp, usernameDest); + + const langdest = recuserDest.lang; + const telegid = recuserDest.profile.teleg_id; + + let userId = recuserDest._id; + let title = tools.getNomeAppByIdApp(idapp); + let keyb = null; + let descr = ''; + + let send_notif = false; + let send_msgTelegramBot = false; + let actions = []; + let popupOnApp = ''; + + let ris = null; + + try { + if (cmd === shared_consts.CallFunz.ENTRA_RIS_ITALIA) { + mycircuitOrig = await Circuit.getCircuitMyProvince(idapp, usernameOrig); + descr = i18n.__({ phrase: 'SENDMSG_ENTRA_IN_RISO_ITALIA', locale: langdest }, usernameDest, usernameOrig, mycircuitOrig); + msgtelegram = descr; + + openUrl = '/circuit/ris_italia'; + bottone = i18n.__({ phrase: 'CIRCUIT_OPEN_RISITALIA', locale: langdest }); + tag = 'risitalia'; + + send_notif = true; + send_msgTelegramBot = true; + + keyb = cl.getInlineKeyboard(langdest, [ + { + text: bottone, + url: tools.getHostByIdApp(idapp) + openUrl, + // callback_data: InlineConferma.RISPOSTA_SI + myfunc + tools.SEP + myuser.username + tools.SEP + '' + tools.SEP + '' + tools.SEP + + // groupid, + }, + ]); + + popupOnApp = 'Messaggio inviato al destinatario'; + + } + + if (send_notif) { + // SEND PUSH NOTIFICATION + await tools.sendNotificationToUser(userId, title, descr, openUrl, '', tag, actions); + } + + // Invia Msg + if (send_msgTelegramBot && msgtelegram) { + await telegrambot.local_sendMsgTelegramByIdTelegram(idapp, telegid, msgtelegram, undefined, undefined, true, keyb); + } + + const userprofile = await User.getInfoFriendByUsername(idapp, usernameDest); + const myuser = await User.getInfoFriendByUsername(idapp, usernameOrig); + + ris = { userprofile, myuser, popupOnApp, result: true }; + + } catch (e) { + popupOnApp = e; + ris = { popupOnApp }; + console.error('Error sendCmd: ', e); + } + + return ris; +}; + UserSchema.statics.ifAlreadyInGroup = async function (idapp, usernameOrig, groupnameDest) { // Controllo se è stato già inserito @@ -2615,16 +2715,23 @@ UserSchema.statics.setCircuitCmd = async function (idapp, usernameOrig, circuitn } else if (cmd === shared_consts.CIRCUITCMD.SETFIDO) { ris = await Circuit.setFido(idapp, usernameOrig, circuitname, groupname); - - // Elimina la richiesta: - update = { $pull: { req_users: { username: { $in: [usernameOrig] } } } }; - await Circuit.updateOne({ idapp, name: circuitname }, update); - - await Circuit.updateData(idapp, circuitname) if (ris) { - // Invia una notifica alla persona e agli Admin - tools.sendNotificationByCircuit(idapp, usernameOrig, circuitname, cmd, value, true, username_action, extrarec); - outres.result = await Circuit.getInfoCircuitByName(idapp, circuitname); + + extrarec.fidoConcesso = ris.fidoConcesso; + extrarec.qta_maxConcessa = ris.qta_maxConcessa; + + // Elimina la richiesta: + update = { $pull: { req_users: { username: { $in: [usernameOrig] } } } }; + await Circuit.updateOne({ idapp, name: circuitname }, update); + + await Circuit.updateData(idapp, circuitname) + if (ris) { + // Invia una notifica alla persona e agli Admin + tools.sendNotificationByCircuit(idapp, usernameOrig, circuitname, cmd, value, true, username_action, extrarec); + outres.result = await Circuit.getInfoCircuitByName(idapp, circuitname); + } + } else { + // errore !? } } else if (cmd === shared_consts.CIRCUITCMD.REQ) { @@ -2797,7 +2904,7 @@ UserSchema.statics.setCircuitCmd = async function (idapp, usernameOrig, circuitn ris = true; } else if ((cmd === shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT) || (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REFUSE)) { // Before to accept, I see if it's already set ! - + outres = { cansend: false, errormsg: '', @@ -4832,7 +4939,7 @@ UserSchema.statics.getExtraInfoByUsername = async function (idapp, username) { UserSchema.statics.addExtraInfo = async function (idapp, recUser, recUserSave, version) { try { - tools.startTimeLog('addExtraInfo') + // tools.startTimeLog('addExtraInfo') if (version) { let versattualeuser = 0; @@ -4931,7 +5038,7 @@ UserSchema.statics.addExtraInfo = async function (idapp, recUser, recUserSave, v recUser.profile.calc = await User.calcOtherByUser(idapp, recUser._id); - tools.endTimeLog('addExtraInfo') + // tools.endTimeLog('addExtraInfo') return recUser; @@ -5230,7 +5337,7 @@ const FuncUsers = { return user.save().then(async () => { return User.findByUsername(user.idapp, user.username, false). then(async (usertrovato) => { - + const numutenti = await User.getNumUsers(user.idapp); let msg = '++ Nuovo Entrato: [' + numutenti + '] ' + user.username + ' ' + user.name + ' ' + user.surname; @@ -5240,7 +5347,7 @@ const FuncUsers = { return telegrambot.askConfirmationUser(user.idapp, shared_consts.CallFunz.REGISTRATION, user, '', '', '', ''); }); }).catch((e) => { - console.error(e.message); + console.error(e.message); }); } catch (e) { diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index f5d0c9c..622e46b 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -777,6 +777,29 @@ router.post('/friends/cmd', authenticate, async (req, res) => { }); +router.post('/sendcmd', authenticate, async (req, res) => { + const usernameLogged = req.user.username; + const idapp = req.body.idapp; + const locale = req.body.locale; + let usernameOrig = req.body.usernameOrig; + let usernameDest = req.body.usernameDest; + const cmd = req.body.cmd; + const value = req.body.value; + + usernameOrig = await User.getRealUsernameByUsername(idapp, usernameOrig); + usernameDest = await User.getRealUsernameByUsername(idapp, usernameDest); + + return User.sendCmd(req, idapp, usernameOrig, usernameDest, cmd, value). + then((ris) => { + res.send(ris); + }). + catch((e) => { + tools.mylog('ERRORE IN sendcmd: ' + e.message); + res.status(400).send(); + }); + +}); + router.post('/groups/cmd', authenticate, (req, res) => { const usernameLogged = req.user.username; const idapp = req.body.idapp; @@ -1521,6 +1544,9 @@ async function eseguiDbOpUser(idapp, mydata, locale, req, res) { } else if (mydata.dbop === 'noCircuit') { await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noCircuit': mydata.value } }); + } else if (mydata.dbop === 'noCircIta') { + await User.findOneAndUpdate({ _id: mydata._id }, + { $set: { 'profile.noCircIta': mydata.value } }); } else if (mydata.dbop === 'noFoto') { await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noFoto': mydata.value } }); diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js index 980a013..a8c3fa1 100755 --- a/src/server/telegram/telegrambot.js +++ b/src/server/telegram/telegrambot.js @@ -2,6 +2,8 @@ const tools = require('../tools/general'); const appTelegram = [tools.FREEPLANET, tools.RISO]; +//prova + const appTelegram_TEST = [tools.FREEPLANET, tools.RISO]; const appTelegram_DEVELOP = [tools.RISO]; // const appTelegram_DEVELOP = [tools.FIOREDELLAVITA]; @@ -760,6 +762,11 @@ const MyTelegramBot = { return FormDaMostrare; }, + getclTelegByidapp: function (idapp) { + const cl = getclTelegByidapp(idapp); + return cl; + }, + getCiao: function (idapp, username, lang) { return tools.gettranslate('CIAO', lang) + ' ' + username + '!\n'; }, @@ -830,12 +837,19 @@ const MyTelegramBot = { const cl = getclTelegByidapp(idapp); if (!cl) return false; + const langdest = myuser.lang; const telegid = myuser.profile.teleg_id; + + let userrecDest = await User.getUserShortDataByUsername(idapp, userDest); + let userId = userrecDest._id; + let title = this.getNomeAppByIdApp(idapp); let keyb = null; let domanda = ''; + let send_notif = false; + let actions = []; const struserinfomsg = tools.getUserInfoMsg(idapp, myuser); @@ -913,7 +927,7 @@ const MyTelegramBot = { } else { domanda = i18n.__({ phrase: 'CIRCUIT_ACCEPT_NEWENTRY', locale: langdest }, myuser.username, name) + '
' + struserinfomsg; - keyb = cl.getInlineKeyboard(myuser.lang, [ + const keyb = cl.getInlineKeyboard(myuser.lang, [ { text: '✅ Abilita fido a ' + myuser.username, callback_data: InlineConferma.RISPOSTA_SI + myfunc + tools.SEP + myuser.username + tools.SEP + '' + tools.SEP + '' + tools.SEP + @@ -928,6 +942,11 @@ const MyTelegramBot = { } } + if (send_notif) { + // SEND PUSH NOTIFICATION + await this.sendNotificationToUser(userId, title, descr, openUrl, '', tag, actions); + } + // Invia Msg if (domanda) { const teleg_id = await User.TelegIdByUsername(idapp, userDest); @@ -4288,6 +4307,10 @@ if (true) { } } + } else if (data.action === InlineConferma.RISPOSTA_SI + shared_consts.CallFunz.ENTRA_RIS_ITALIA) { + + url = ''; + bot.answerCallbackQuery(callbackQuery.id, { url }); } } } catch (e) { diff --git a/src/server/tools/general.js b/src/server/tools/general.js index f33bc7d..53dcc3f 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -907,6 +907,7 @@ module.exports = { let openUrl = '/'; let tag = ''; let actions = []; + let domanda = ''; if (cmd) { if (cmd === shared_consts.FRIENDSCMD.REQFRIEND) { descr = printf(this.get__('RICHIESTA_AMICIZIA', lang), usernameOrig); @@ -940,7 +941,7 @@ module.exports = { const idtelegram = await User.TelegIdByUsername(idapp, username); - await telegrambot.sendMsgTelegramByIdTelegram(idapp, idtelegram, descr); + await telegrambot.sendMsgTelegramByIdTelegram(idapp, idtelegram, descr + domanda, undefined, undefined, true, keyb); } }, diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index 83d1ad4..6ff63fa 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -248,6 +248,12 @@ module.exports = { VISIB_ONLY_MANAGER: 2, VISIB_ONLY_ADMIN: 4, + CIRCUIT_CFG: { + MULT_FIDO_USER: 2.0, + MULT_FIDO_GROUP: 2.0, + }, + + Visibility_Group: { PRIVATE: 1, HIDDEN: 2, @@ -334,6 +340,7 @@ module.exports = { RICHIESTA_HANDSHAKE: 16, RICHIESTA_CIRCUIT: 20, RICHIESTA_FIDO: 25, + ENTRA_RIS_ITALIA: 30, }, OrderStatus: { @@ -643,6 +650,7 @@ module.exports = { nome_valuta: 1, fido_scoperto_default: 1, deperimento: 1, + showAlways: 1, status: 1, transactionsEnabled: 1, qta_max_default: 1,