diff --git a/src/server/models/user.js b/src/server/models/user.js
index 71ace5b..fe1936e 100755
--- a/src/server/models/user.js
+++ b/src/server/models/user.js
@@ -1982,12 +1982,12 @@ UserSchema.statics.setFriendsCmd = async function (req, idapp, usernameOrig, use
ris = await User.getInfoFriendByUsername(idapp, usernameDest);
//}
} else if (cmd === shared_consts.FRIENDSCMD.SETHANDSHAKE) {
- // Aggiungo l'Amicizia a me
+ // Aggiungo la Stretta di mano a lui
const foundIfAlreadyFriend = await User.findOne({
idapp,
- username: usernameOrig,
+ username: usernameDest,
'profile.handshake': {
- $elemMatch: { username: { $eq: usernameDest } },
+ $elemMatch: { username: { $eq: usernameOrig } },
},
}, { _id: 1 }).lean();
@@ -1995,29 +1995,20 @@ UserSchema.statics.setFriendsCmd = async function (req, idapp, usernameOrig, use
update = {
$push: {
'profile.handshake': {
- username: usernameDest,
+ username: usernameOrig,
date: new Date(),
},
},
};
- ris = await User.updateOne({ idapp, username: usernameOrig }, update);
+ ris = await User.updateOne({ idapp, username: usernameDest }, update);
if (!disablenotif) {
// Send a notification to the DESTINATION HANDSHAKE !
let req = tools.getReqByPar(idapp, usernameOrig);
await SendNotif.createNewNotifToSingleUser(req, null, { usernameDest }, true, shared_consts.TypeNotifs.TYPEDIR_HANDSHAKE,
shared_consts.TypeNotifs.ID_HANDSHAKE_ACCEPTED_MY_REQUEST);
-
- // Send a notification to the SENDER HANDSHAKEHIP !
- req = tools.getReqByPar(idapp, usernameDest);
- await SendNotif.createNewNotifToSingleUser(req, null, { usernameDest: usernameOrig }, true, shared_consts.TypeNotifs.TYPEDIR_HANDSHAKE,
- shared_consts.TypeNotifs.ID_HANDSHAKE_ACCEPTED);
-
}
- update = { $pull: { 'profile.req_handshake': { username: { $in: [usernameDest] } } } };
- ris = await User.updateOne({ idapp, username: usernameOrig }, update);
-
if (ris) {
try {
if (!disablenotif) {
@@ -2136,12 +2127,7 @@ UserSchema.statics.setFriendsCmd = async function (req, idapp, usernameOrig, use
} else if (cmd === shared_consts.FRIENDSCMD.REMOVE_FROM_MYHANDSHAKE) {
- // Rimuovi anche le eventuali richieste di Amicizia !
- await this.removeReqHandShake(idapp, usernameDest, usernameOrig); // Rimuovo la Richiesta di Amicizia da lui
- await this.removeReqHandShake(idapp, usernameOrig, usernameDest); // Rimuovo la Richiesta di Amicizia da me
-
- await this.removeHandShake(idapp, usernameDest, usernameOrig); // Rimuovo l'Amicizia da lui
- ris = await this.removeHandShake(idapp, usernameOrig, usernameDest); // Rimuovo l'Amicizia da me
+ ris = await this.removeHandShake(idapp, usernameDest, usernameOrig); // Rimuovo l'Amicizia da lui
} else if (cmd === shared_consts.FRIENDSCMD.CANCEL_REQ_FRIEND) {
@@ -2150,9 +2136,6 @@ UserSchema.statics.setFriendsCmd = async function (req, idapp, usernameOrig, use
await SendNotif.createNewNotifToSingleUser(req, null, { usernameDest }, true, shared_consts.TypeNotifs.TYPEDIR_FRIENDS,
shared_consts.TypeNotifs.ID_FRIENDS_REFUSED);
- await this.removeReqFriend(idapp, usernameDest, usernameOrig); // Rimuovo la Richiesta di Amicizia da lui
- ris = await this.removeFriend(idapp, usernameOrig, usernameDest); // Rimuovo l'Amicizia da me
-
} else if (cmd === shared_consts.FRIENDSCMD.CANCEL_REQ_HANDSHAKE) {
// CREATE NOTIFICATION IN TABLE SENDNOTIF
@@ -3946,6 +3929,18 @@ UserSchema.statics.getDiffusoriUsers = async function (idapp) {
};
+UserSchema.statics.getBestStretteDiManoUsers = async function (idapp) {
+ const User = this;
+
+ const lastn = 10;
+
+ return await User.aggregate(User.getQueryUsersStretteDiMano(idapp)).then(ris => {
+ // console.table(ris);
+ return ris;
+ });
+
+};
+
UserSchema.statics.checkUser = async function (idapp, username) {
const User = this;
@@ -4152,6 +4147,102 @@ UserSchema.statics.getQueryUsersDiffusori = function (idapp) {
return query;
};
+UserSchema.statics.getQueryUsersStretteDiMano = function (idapp) {
+
+ const query = [
+ {
+ $match: {
+ idapp,
+ $or: [
+ {
+ deleted: {
+ $exists: false,
+ },
+ },
+ {
+ deleted: {
+ $exists: true,
+ $eq: false,
+ },
+ },
+ ],
+ },
+ },
+ {
+ $group: {
+ _id: "$profile.handshake",
+ count: {
+ $sum: 1,
+ },
+ },
+ },
+ {
+ $match: { "count": { $gte: 2 } }
+ },
+ {
+ $sort: {
+ count: -1,
+ },
+ },
+ { $limit: 20 },
+ {
+ $lookup: {
+ from: "users",
+ let: {
+ username: "$_id",
+ idapp,
+ },
+ pipeline: [
+ {
+ $match: {
+ $expr: {
+ $and: [
+ {
+ $eq: [
+ "$$username",
+ "$username",
+ ],
+ },
+ {
+ $eq: [
+ "$$idapp",
+ "$idapp",
+ ],
+ },
+ ],
+ },
+ },
+ },
+ ],
+ as: "user",
+ },
+ },
+ { $unwind: "$user" },
+ {
+ $replaceRoot: {
+ newRoot: {
+ $mergeObjects: ["$user", "$$ROOT"],
+ },
+ },
+ },
+ {
+ $project: {
+ _id: 0,
+ count: 1,
+ aportador_solidario: 1,
+ username: 1,
+ name: 1,
+ surname: 1,
+ lasttimeonline: 1,
+ idapp: 1,
+ "profile.img": 1,
+ 'profile.handshake': 1,
+ },
+ },
+ ];
+ return query;
+};
+
UserSchema.statics.getUsersRegWeekly = function (idapp, nrec) {
const query = [
diff --git a/src/server/router/site_router.js b/src/server/router/site_router.js
index 7a27e38..08cf25e 100755
--- a/src/server/router/site_router.js
+++ b/src/server/router/site_router.js
@@ -50,6 +50,7 @@ router.post('/load', async (req, res) => {
lastsonline: await User.getLastOnlineUsers(idapp),
lastssharedlink: await User.getLastSharedLink(idapp),
diffusorilist: await User.getDiffusoriUsers(idapp),
+ strettelist: await User.getBestStretteDiManoUsers(idapp),
checkuser: await User.checkUser(idapp, username),
// navi_partite: await Nave.getNaviPartite(idapp),
// navi_in_partenza: await Nave.getNaviInPartenza(idapp),
diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js
index 5b9385f..0775c41 100755
--- a/src/server/telegram/telegrambot.js
+++ b/src/server/telegram/telegrambot.js
@@ -879,7 +879,7 @@ const MyTelegramBot = {
}
} else if (myfunc === shared_consts.CallFunz.RICHIESTA_GRUPPO) {
- domanda = printf(getstr(langdest, 'MSG_ACCEPT_NEWENTRY_INGROUP'), name) + '
' + struserinfomsg;
+ domanda = printf(getstr(langdest, 'MSG_ACCEPT_NEWENTRY_INGROUP'), name);
keyb = cl.getInlineKeyboard(myuser.lang, [
{
@@ -894,7 +894,7 @@ const MyTelegramBot = {
} else if (myfunc === shared_consts.CallFunz.RICHIESTA_CIRCUIT) {
if (groupname) {
- domanda = i18n.__({ phrase: 'CIRCUIT_ACCEPT_NEWENTRY_BYGROUP', locale: langdest }, groupname) + '
' + struserinfomsg;
+ domanda = i18n.__({ phrase: 'CIRCUIT_ACCEPT_NEWENTRY_BYGROUP', locale: langdest }, groupname);
keyb = cl.getInlineKeyboard(myuser.lang, [
{
@@ -909,7 +909,7 @@ const MyTelegramBot = {
},
]);
} else {
- domanda = i18n.__({ phrase: 'CIRCUIT_ACCEPT_NEWENTRY', locale: langdest }, name) + '
' + struserinfomsg;
+ domanda = i18n.__({ phrase: 'CIRCUIT_ACCEPT_NEWENTRY', locale: langdest }, name);
keyb = cl.getInlineKeyboard(myuser.lang, [
{
@@ -956,7 +956,7 @@ const MyTelegramBot = {
let typeid = 0;
let paramsObj = {};
- const struserinfomsg = tools.getUserInfoMsg(idapp, myuser);
+ const struserinfomsg = tools.getUserShortInfoMsg(idapp, myuser);
if (myfunc === shared_consts.CallFunz.RICHIESTA_AMICIZIA) {
sendnotif = true;
diff --git a/src/server/tools/general.js b/src/server/tools/general.js
index 259eefc..409a4dd 100755
--- a/src/server/tools/general.js
+++ b/src/server/tools/general.js
@@ -125,7 +125,7 @@ const textlang = {
'MSG_SEND_FROM': 'Msg Inviato da',
'ZOOM_CONFERMATO': 'Sei stato confermato ad aver visto la Video Conferenza di Benvenuto!',
'RICHIESTA_AMICIZIA': '๐ Richiesta d\'Amicizia da parte di %s',
- 'RICHIESTA_HANDSHAKE': '๐ Richiesta Stretta di mano da parte di %s',
+ 'RICHIESTA_HANDSHAKE': '๐ Confermi che hai conosciuto personalmente e dai la tua fiducia a %s ?',
'ACCETTATO_SUL_GRUPPO': 'โ
Sei stato accettato da %s a far parte del Gruppo %s',
'CREATO_NUOVO_GRUPPO': 'โ
Hai appena creato un nuovo Gruppo chiamato %s',
'ACCETTATO_NOTIFICA_ADMINS': 'โ
l\'utente %s รจ stato accettato a far parte del Gruppo %s (da parte di %s)',
@@ -3383,6 +3383,28 @@ module.exports = {
return msg;
},
+ getUserShortInfoMsg: function (idapp, myuser, usernametelegram = '', name_telegram = '',
+ surname_telegram = '') {
+
+ let msg = '';
+ try {
+ const name = myuser.username +
+ (myuser.name ? ` (${myuser.name} ${myuser.surname})` : '');
+ const linkuserprof = this.getHostByIdApp(idapp) + '/my/' +
+ myuser.username;
+
+ let u_tg = myuser.profile && myuser.profile.hasOwnProperty('username_telegram') ? myuser.profile.username_telegram : usernametelegram;
+
+ msg = `
Vedi Profilo sulla APP di ${name}`;
+ msg += `
Telegram: @${u_tg}`;
+
+ } catch (e) {
+ console.error('getUserInfoMsg', e);
+ }
+
+ return msg;
+ },
+
getlinkRelativeRequestNewPassword: function (idapp, email, tokenforgot) {
const strlinkreg = process.env.LINK_UPDATE_PASSWORD +
`?idapp=${idapp}&email=${email}&tokenforgot=${tokenforgot}`;
diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js
index 36496fb..5a839da 100755
--- a/src/server/tools/shared_nodejs.js
+++ b/src/server/tools/shared_nodejs.js
@@ -344,6 +344,8 @@ module.exports = {
STATUS_FRIENDS_ACCEPTED: 1,
STATUS_FRIENDS_REFUSED: 2,
STATUS_FRIENDS_REPORTED: 3,
+ STATUS_HANDSHAKE_ACCEPTED: 10,
+ STATUS_HANDSHAKE_REFUSED: 11,
},
GroupsNotifs: {