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,