- fix: "Circuito RIS {nomecircuito}" uniformati tutti quanti.
- fix Strette di mano dicitura. - poter vedere e cliccare sul gruppo telegram della provincia (dalla lista dei circuiti).
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
"✅ %s accepted your Friendship request !": "✅ %s ha accettato la tua richiesta di Amicizia !",
|
||||
"✅ You have accepted %s' Friendship request!": "✅ Hai accettato la richiesta di Amicizia di %s !",
|
||||
"HANDSHAKE_SET": "<strong>%s</strong> ha comunicato che ti conosce personalmente e ha Fiducia in te (Stretta di mano).",
|
||||
"HANDSHAKE_SENT_FROM_YOU": "🤝 hai inviato una Stretta di Mano a <strong>%s</strong>, perché la conosci personalmente !",
|
||||
"HANDSHAKE_CONFIRMED": "🤝 Hai contraccambiato la stretta di mano di <strong>%s</strong>!",
|
||||
"HANDSHAKE_ACCEPTED": "🤝 <strong>%s</strong> ha contraccambiato la tua stretta di mano !",
|
||||
"GROUPS_ACCEPTED": "✅ Sei stato accettato a far parte del Gruppo %s (da parte di %s)",
|
||||
|
||||
@@ -253,7 +253,7 @@ CircuitSchema.statics.findAllIdApp = async function (idapp) {
|
||||
CircuitSchema.statics.isCircuitAdmin = async function (idrec, username) {
|
||||
const Circuit = this;
|
||||
|
||||
|
||||
|
||||
const mycirc = await Circuit.findOne({ _id: idrec }).lean();
|
||||
if (mycirc) {
|
||||
return mycirc.admins.some(admin => admin.username === username);
|
||||
@@ -1315,7 +1315,7 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
|
||||
// CORREGGI DUPLICATI NEI CIRCUITI
|
||||
for (const user of usersWithDuplicateCircuits) {
|
||||
// Troviamo l'utente dal suo _id e aggiorniamo il suo documento
|
||||
const arraycirc = await User.findOne({_id: user._id}).lean();
|
||||
const arraycirc = await User.findOne({ _id: user._id }).lean();
|
||||
|
||||
let risdel = await User.updateOne(
|
||||
{ _id: user._id },
|
||||
@@ -1544,6 +1544,99 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
|
||||
|
||||
};
|
||||
|
||||
CircuitSchema.statics.replaceAllCircuitNames = async function (idapp) {
|
||||
const Circuit = this;
|
||||
|
||||
const { City } = require('../models/city');
|
||||
const { Province } = require('../models/province');
|
||||
|
||||
const { MyGroup } = require('../models/mygroup');
|
||||
const { User } = require('../models/user');
|
||||
|
||||
const myfind = { idapp };
|
||||
|
||||
let circuits = [];
|
||||
try {
|
||||
circuits = await Circuit.find(myfind);
|
||||
|
||||
let quanti = 0;
|
||||
|
||||
for (const circuit of circuits) {
|
||||
if (!circuit || !circuit._id) {
|
||||
console.error('Error: circuit is null or has no _id property');
|
||||
continue;
|
||||
}
|
||||
const circuitId = circuit._id;
|
||||
|
||||
let provincia = '';
|
||||
if (circuit.idCity && circuit.idCity.length > 0) {
|
||||
provincia = await City.getProvinceByIdCity(circuit.idCity[0]);
|
||||
}
|
||||
if (!provincia)
|
||||
provincia = circuit.strProv;
|
||||
if (provincia) {
|
||||
provincia = await Province.getStrProvinceByProv(provincia);
|
||||
}
|
||||
|
||||
if (!provincia) {
|
||||
console.log('PROVINCIA NON ESISTENTE !', circuit.name);
|
||||
}
|
||||
|
||||
let path = '';
|
||||
|
||||
if (!circuit.showAlways) {
|
||||
let newname = 'Circuito RIS ' + provincia;
|
||||
|
||||
// Se newname contiene 'ROMA', allora non aggiorna
|
||||
|
||||
if (circuit.name == 'RIS Roma Sud Est ' || circuit.name === 'Circuito RIS Roma Sud Est') {
|
||||
newname = 'Circuito RIS Roma Sud Est';
|
||||
} else if (circuit.name == 'Circuito RIS Roma Sud e Litora') {
|
||||
newname = 'Circuito RIS Roma Sud e Litora';
|
||||
} else if (circuit.name.trim() === 'RISO Roma Nord' || circuit.name.trim() === 'Circuito RISO Roma Nord') {
|
||||
newname = 'Circuito RIS Roma Nord';
|
||||
/* } else if (circuit.name == 'Circuito RIS Benevento' || circuit.name == 'Circuito RIS Campania') {
|
||||
newname = 'Circuito RIS Campania';
|
||||
path = 'riscampania'; */
|
||||
} else if (circuit.name == 'Circuito RIS Milano Est') {
|
||||
newname = 'Circuito RIS Milano Est';
|
||||
} else if (circuit.name == 'Circuito RIS Repubblica di San Marino') {
|
||||
newname = 'Circuito RIS Repubblica di San Marino';
|
||||
}
|
||||
|
||||
if (((newname !== circuit.name) && (newname.indexOf('ROMA') === -1)) || path) {
|
||||
|
||||
console.log(`Sostituisci ${circuit.name} con ${newname}`);
|
||||
|
||||
quanti++;
|
||||
|
||||
if (path) {
|
||||
// Update path
|
||||
await Circuit.findOneAndUpdate({ _id: circuitId }, { $set: { path } })
|
||||
.catch(e => console.error('Err ', e));
|
||||
}
|
||||
|
||||
await Circuit.findOneAndUpdate({ _id: circuitId }, { $set: { name: newname } })
|
||||
.catch(e => console.error('Err ', e));
|
||||
|
||||
// Rename profile.mycircuits.circuitname in User
|
||||
await User.renameCircuitName(idapp, circuit.name, newname)
|
||||
.catch(e => console.error('Err ', e));
|
||||
|
||||
await MyGroup.renameCircuitName(idapp, circuit.name, newname)
|
||||
.catch(e => console.error('Err ', e));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log('Circuiti aggiornati: ' + quanti);
|
||||
|
||||
} catch (e) {
|
||||
console.error('Err ', e);
|
||||
return;
|
||||
}
|
||||
|
||||
};
|
||||
CircuitSchema.statics.addMovementByOrdersCart = async function (ordersCart, usernameDest, groupDest) {
|
||||
|
||||
const { User } = require('../models/user');
|
||||
|
||||
@@ -628,6 +628,13 @@ MyGroupSchema.statics.getReceiveRISGroups = async function (idapp) {
|
||||
|
||||
};
|
||||
|
||||
|
||||
MyGroupSchema.statics.renameCircuitName = async function (idapp, oldcircuitname, newcircuitname) {
|
||||
|
||||
return await this.updateMany({ idapp, 'mycircuits.circuitname': oldcircuitname }, { $set: { 'profile.mycircuits.$.circuitname': newcircuitname } });
|
||||
};
|
||||
|
||||
|
||||
MyGroupSchema.statics.setReceiveRisGroup = async function (idapp, groupname) {
|
||||
|
||||
return await this.findOneAndUpdate({
|
||||
|
||||
@@ -1712,13 +1712,15 @@ UserSchema.methods.removeToken = function (token) {
|
||||
});
|
||||
};
|
||||
|
||||
// # Rimuove tutti i tokens di tutti gli utenti con idapp
|
||||
// TODO: Cancellare i token che non hanno refreshToken, ad esempio quando l'utente esce dal browser
|
||||
// TODO: Cancellare i token con data_login meno di 2 giorni fa, per esempio se l'utente si è disconnesso dal browser ma è ancora online
|
||||
|
||||
UserSchema.statics.SvuotaTuttiGliAccessiOnlineConToken = async function (idapp) {
|
||||
const User = this;
|
||||
|
||||
return await User.updateMany({ idapp },
|
||||
{ $set: { tokens: [] } });
|
||||
};
|
||||
{ $pull: { tokens: { refreshToken: { $exists: false } } } });
|
||||
};
|
||||
|
||||
|
||||
UserSchema.statics.getEmailByUsername = async function (idapp, username) {
|
||||
@@ -1782,7 +1784,7 @@ UserSchema.statics.getUserByUsername = function (idapp, username) {
|
||||
UserSchema.statics.getUserByUsernameTelegram = function (idapp, username_telegram) {
|
||||
const User = this;
|
||||
|
||||
if (username_telegram[0] === '@'){
|
||||
if (username_telegram[0] === '@') {
|
||||
username_telegram = username_telegram.substring(1);
|
||||
}
|
||||
|
||||
@@ -2162,6 +2164,14 @@ UserSchema.statics.removeFromCircuits = async function (idapp, username, circuit
|
||||
const circuitId = await Circuit.getCircuitIdByName(idapp, circuitname);
|
||||
let remove = false;
|
||||
|
||||
const circuit = await Circuit.findOne({ idapp, name: circuitname }).lean();
|
||||
if (circuit) {
|
||||
// Invio la notifica agli amministratori del circuito
|
||||
const title = `L\'utente ${username} è uscito dal ${circuitname}`;
|
||||
const msg = ``;
|
||||
await tools.sendNotifToCircuitsAdmin(idapp, circuit, true, title, msg, '')
|
||||
}
|
||||
|
||||
// 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) {
|
||||
@@ -2460,6 +2470,10 @@ UserSchema.statics.setFriendsCmd = async function (req, idapp, usernameOrig, use
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const already_stretta = await User.isMyHandShake(idapp, usernameDest, usernameOrig);
|
||||
const already_stretta_orig = await User.isMyHandShake(idapp, usernameOrig, usernameDest);
|
||||
|
||||
rec = await User.updateOne({ idapp, username: usernameDest }, update);
|
||||
|
||||
tools.sendNotificationByUsername(idapp, usernameDest, cmd, true, usernameOrig);
|
||||
@@ -2470,8 +2484,11 @@ UserSchema.statics.setFriendsCmd = async function (req, idapp, usernameOrig, use
|
||||
if (!disablenotif) {
|
||||
const userDest = await User.getRecLangAndIdByUsername(idapp, usernameDest);
|
||||
const user = await User.getRecLangAndIdByUsername(idapp, usernameOrig);
|
||||
const already_stretta = await User.isMyHandShake(idapp, usernameDest, usernameOrig);
|
||||
const msgDest = i18n.__({ phrase: 'HANDSHAKE_CONFIRMED', locale: userDest.lang }, usernameDest);
|
||||
|
||||
let msgDest = i18n.__({ phrase: 'HANDSHAKE_SENT_FROM_YOU', locale: userDest.lang }, usernameDest);
|
||||
if (already_stretta)
|
||||
msgDest = i18n.__({ phrase: 'HANDSHAKE_CONFIRMED', locale: userDest.lang }, usernameDest);
|
||||
|
||||
let phrase = 'HANDSHAKE_SET';
|
||||
if (already_stretta) {
|
||||
phrase = 'HANDSHAKE_ACCEPTED';
|
||||
@@ -5786,6 +5803,12 @@ UserSchema.statics.addNewSite = async function (idappPass, body) {
|
||||
|
||||
};
|
||||
|
||||
UserSchema.statics.renameCircuitName = async function (idapp, oldcircuitname, newcircuitname) {
|
||||
const User = this;
|
||||
|
||||
return await User.updateMany({ idapp, 'profile.mycircuits.circuitname': oldcircuitname }, { $set: { 'profile.mycircuits.$.circuitname': newcircuitname } });
|
||||
};
|
||||
|
||||
UserSchema.statics.createNewSubRecord = async function (idapp, req) {
|
||||
const User = this;
|
||||
|
||||
|
||||
@@ -998,6 +998,9 @@ async function eseguiDbOp(idapp, mydata, locale, req, res) {
|
||||
|
||||
// } else if (mydata.dbop === 'rigeneraTutto') {
|
||||
// await ListaIngresso.Esegui_CronTab(idapp, mydata);
|
||||
} else if (mydata.dbop === 'ReplaceAllCircuits') {
|
||||
// ++ Replace All Circuitname with 'Circuito RIS %s'
|
||||
await Circuit.replaceAllCircuitNames(idapp);
|
||||
} else if (mydata.dbop === 'visuStat') {
|
||||
// ris = await User.visuUtentiNonInNavi(idapp);
|
||||
//} else if (mydata.dbop === 'creaNavi') {
|
||||
@@ -1753,10 +1756,11 @@ async function eseguiDbOpUser(idapp, mydata, locale, req, res) {
|
||||
} else if (mydata.dbop === 'noFoto') {
|
||||
await User.findOneAndUpdate({ _id: mydata._id },
|
||||
{ $set: { 'profile.noFoto': mydata.value } });
|
||||
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
|
||||
console.log(e.message);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@@ -759,7 +759,7 @@ const MyTelegramBot = {
|
||||
|
||||
const cl = getclTelegByidapp(idapp);
|
||||
if (cl && idtelegram) {
|
||||
|
||||
|
||||
return await cl.sendMsg(idtelegram, text, null, MyForm, message_id,
|
||||
chat_id, ripr_menuPrec);
|
||||
}
|
||||
@@ -3330,7 +3330,8 @@ class Telegram {
|
||||
rec.entities = msg.entities;
|
||||
|
||||
// Se contiene della formattazione allora fai il FORWARD DEL MESSAGGIO
|
||||
rec.forwardMessage = !!rec.entities;
|
||||
//rec.forwardMessage = !!rec.entities;
|
||||
rec.forwardMessage = false;
|
||||
|
||||
rec.chatId = msg.chat.id;
|
||||
rec.messageId = msg.message_id;
|
||||
|
||||
@@ -1445,6 +1445,44 @@ module.exports = {
|
||||
},
|
||||
*/
|
||||
|
||||
async sendNotifToCircuitsAdmin(idapp, circuit, alsotelegram, title, msg, tag = '') {
|
||||
|
||||
const { User } = require('../models/user');
|
||||
|
||||
const telegrambot = require('../telegram/telegrambot');
|
||||
|
||||
if (!circuit || !circuit.admins) {
|
||||
console.error('sendNotifToCircuitsAdmin: missing circuit or circuit.admins', circuit);
|
||||
return;
|
||||
}
|
||||
|
||||
for (const singleadmin of circuit.admins) {
|
||||
try {
|
||||
if (singleadmin && singleadmin.username) {
|
||||
const user = await User.getUserShortDataByUsername(idapp, singleadmin.username);
|
||||
|
||||
if (user) {
|
||||
if (alsotelegram) {
|
||||
if (!user.profile || !user.profile.teleg_id) {
|
||||
console.error('sendNotifToCircuitsAdmin: missing user.profile.teleg_id', user);
|
||||
} else {
|
||||
telegrambot.local_sendMsgTelegramByIdTelegram(idapp, user.profile.teleg_id, title + ' ' + msg);
|
||||
}
|
||||
}
|
||||
|
||||
if (!user._id) {
|
||||
console.error('sendNotifToCircuitsAdmin: missing user._id', user);
|
||||
} else {
|
||||
await this.sendNotificationToUser(user._id, title, msg, '/', '', tag, []);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('sendNotifToCircuitsAdmin', e);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
sendNotifToAdmin(idapp, alsotelegram, title, msg, tag = '') {
|
||||
try {
|
||||
const { User } = require('../models/user');
|
||||
|
||||
@@ -788,6 +788,7 @@ module.exports = {
|
||||
longdescr: 1,
|
||||
regulation: 1,
|
||||
numMembers: 1,
|
||||
link_group: 1,
|
||||
totCircolante: 1,
|
||||
totTransato: 1,
|
||||
systemUserId: 1,
|
||||
|
||||
Reference in New Issue
Block a user