- 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:
Surya Paolo
2024-04-25 23:26:16 +02:00
parent c79f6e8cc6
commit 7773c2a87b
11 changed files with 235 additions and 13 deletions

View File

@@ -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)",

View File

@@ -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');

View File

@@ -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({

View File

@@ -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;

View File

@@ -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);
}
};

View File

@@ -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;

View File

@@ -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');

View File

@@ -788,6 +788,7 @@ module.exports = {
longdescr: 1,
regulation: 1,
numMembers: 1,
link_group: 1,
totCircolante: 1,
totTransato: 1,
systemUserId: 1,