diff --git a/mongodb/Members.mongodb b/mongodb/Members.mongodb
new file mode 100644
index 0000000..a444715
--- /dev/null
+++ b/mongodb/Members.mongodb
@@ -0,0 +1,203 @@
+use('test_FreePlanet');
+
+let aggregation = [
+ {
+ $match: {
+ idapp: "13",
+ "profile.mycircuits": {
+ $elemMatch: {
+ circuitname: {
+ $eq: "Circuito RIS Bologna",
+ },
+ },
+ },
+ },
+ },
+ {
+ $lookup: {
+ from: "circuits",
+ as: "circuit",
+ let: {
+ circuitname: "Circuito RIS Bologna",
+ idapp: "$idapp",
+ },
+ pipeline: [
+ {
+ $match: {
+ $expr: {
+ $and: [
+ {
+ $eq: [
+ "$name",
+ "$$circuitname",
+ ],
+ },
+ {
+ $eq: [
+ "$idapp",
+ "$$idapp",
+ ],
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ {
+ $unwind: "$circuit",
+ },
+ {
+ $project: {
+ username: 1,
+ name: 1,
+ surname: 1,
+ date_reg: 1,
+ profile: 1,
+ idapp: 1,
+ "circuit.name": 1,
+ "circuit._id": 1,
+ },
+ },
+ {
+ $lookup: {
+ from: "accounts",
+ as: "account",
+ let: {
+ username: "$username",
+ idapp: "$idapp",
+ circuitId: "$circuit._id",
+ },
+ pipeline: [
+ {
+ $match: {
+ $expr: {
+ $and: [
+ {
+ $eq: [
+ "$$username",
+ "$username",
+ ],
+ },
+ {
+ $eq: [
+ "$$idapp",
+ "$idapp",
+ ],
+ },
+ {
+ $eq: [
+ "$$circuitId",
+ "$circuitId",
+ ],
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ {
+ $unwind: "$account",
+ },
+ {
+ $match: {
+ idapp: "13",
+ },
+ },
+ {
+ $addFields: {
+ myId1: {
+ $toObjectId: "$userId",
+ },
+ namecomplete: {
+ $concat: [
+ {
+ $toLower: "$name",
+ },
+ {
+ $toLower: "$surname",
+ },
+ { $toLower: "$username" },
+ ],
+ },
+ },
+ },
+ {
+ $lookup: {
+ from: "users",
+ localField: "myId1",
+ foreignField: "_id",
+ as: "user",
+ },
+ },
+ {
+ $replaceRoot: {
+ newRoot: {
+ $mergeObjects: [
+ {
+ $arrayElemAt: [
+ "$user",
+ 0,
+ ],
+ },
+ "$$ROOT",
+ ],
+ },
+ },
+ },
+ {
+ $project: {
+ username: 1,
+ name: 1,
+ surname: 1,
+ "profile.img": 1,
+ "profile.mycircuits": 1,
+ "profile.qualifica": 1,
+ "profile.resid_province": 1,
+ "account._id": 1,
+ "account.saldo": 1,
+ "account.fidoConcesso": 1,
+ "account.qta_maxConcessa": 1,
+ "account.totTransato": 1,
+ reported: 1,
+ date_report: 1,
+ username_who_report: 1,
+ namecomplete: 1,
+ date_reg: 1,
+ },
+ },
+ {
+ $sort: {
+ date_reg: 1,
+ },
+ },
+ {
+ $group: {
+ _id: null,
+ count: {
+ $sum: 1,
+ },
+ results: {
+ $push: "$$ROOT",
+ },
+ },
+ },
+ {
+ $project: {
+ count: 1,
+ rows: {
+ $slice: [
+ "$results",
+ 1,
+ 15,
+ ],
+ },
+ },
+ },
+];
+
+db.users.aggregate(aggregation);
+
diff --git a/mongodb/favorite.mongodb.js b/mongodb/favorite.mongodb.js
new file mode 100644
index 0000000..a37211e
--- /dev/null
+++ b/mongodb/favorite.mongodb.js
@@ -0,0 +1,23 @@
+use('test_FreePlanet');
+
+let aggregation = [
+ {
+ $match: {
+ idapp: "13",
+ "profile.favorite": {
+ $elemMatch:
+ { id: '10256', tab: 4 }
+ }
+ },
+ },
+ {
+ $group:
+ {
+ _id: null,
+ count: { $sum: 1 },
+ }
+ },
+ { $project: { _id: 0 } }
+];
+
+db.users.aggregate(aggregation);
\ No newline at end of file
diff --git a/src/server/locales/it.json b/src/server/locales/it.json
index fc84609..a6cb5aa 100644
--- a/src/server/locales/it.json
+++ b/src/server/locales/it.json
@@ -86,5 +86,6 @@
"SALDO_VARIATO": "[Circuito %s] l'utente %s ha variato il Saldo di %s da %s a %s %s",
"FIDOCONCESSO_VARIATO": "[Circuito %s] l'utente %s ha variato il Fido Concesso di %s da %s a %s %s",
"QTAMAX_VARIATO": "[Circuito %s] l'utente %s ha variato la quantità massima concessa di %s da %s a %s %s",
- "CLICCA_QUI": "CLICCA QUI"
+ "SET_FAVORITE": "%s ha messo 'Mi Piace' al tuo post: %s",
+ "SET_FAVORITE_OTHERS": "%s e altre %s persone hanno messo 'Mi Piace' al tuo post: %s"
}
\ No newline at end of file
diff --git a/src/server/models/sendnotif.js b/src/server/models/sendnotif.js
index 0ecd094..cd2479a 100755
--- a/src/server/models/sendnotif.js
+++ b/src/server/models/sendnotif.js
@@ -96,6 +96,9 @@ const sendNotifSchema = new Schema({
options: {
type: Array,
},
+ textaddTelegram: {
+ type: String,
+ }
});
sendNotifSchema.statics.setNotifAsRead = function (idapp, username, idnotif) {
@@ -180,11 +183,11 @@ sendNotifSchema.statics.getDescrAndLinkByRecNotif = async function (recnotif, us
if (recnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_BACHECA) {
if (recnotif.typeid === shared_consts.TypeNotifs.ID_BACHECA_NEW_GOOD) {
newdescr = i18n.__('%s new Good: %s', userorig, mydescr);
- recnotif.openUrl = '/mygood/' + myidrec;
+ recnotif.openUrl = shared_consts.getDirectoryByTable(shared_consts.TABLES_MYGOODS, true) + myidrec;
tag = 'newgood';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_BACHECA_NEW_SERVICE) {
newdescr = i18n.__('%s new Service: %s', userorig, mydescr);
- recnotif.openUrl = '/myservice/' + myidrec;
+ recnotif.openUrl = shared_consts.getDirectoryByTable(shared_consts.TABLES_MYSKILLS, true) + myidrec;
tag = 'newservice';
}
} else if (recnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_FRIENDS) {
@@ -222,7 +225,7 @@ sendNotifSchema.statics.getDescrAndLinkByRecNotif = async function (recnotif, us
}
} else if (recnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_GROUPS) {
tag = 'group';
- recnotif.openUrl = '/grp/' + recnotif.paramsObj.groupnameDest;
+ recnotif.openUrl = shared_consts.getDirectoryByTable('mygroups', true) + recnotif.paramsObj.groupnameDest;
if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_NEW_REC) {
newdescr = i18n.__('GROUP_CREATED', sender, recnotif.paramsObj.groupnameDest);
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_ACCEPTED) {
@@ -280,7 +283,7 @@ sendNotifSchema.statics.getDescrAndLinkByRecNotif = async function (recnotif, us
}
} else if (recnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_CIRCUITS) {
tag = 'circuit';
- recnotif.openUrl = '/circuit/' + recnotif.paramsObj.path;
+ recnotif.openUrl = shared_consts.getDirectoryByTable(shared_consts.TAB_MYCIRCUITS, true) + recnotif.paramsObj.path;
strtipocontoOrig = recnotif.paramsObj.extrarec.contoComOrig ? i18n.__('COMUNITARIO') : i18n.__('COLLETTIVO');
strtipocontoDest = recnotif.paramsObj.extrarec.contoComDest ? i18n.__('COMUNITARIO') : i18n.__('COLLETTIVO');
let groupOComorig = recnotif.paramsObj.extrarec.contoComOrig ? recnotif.paramsObj.extrarec.contoComOrig : recnotif.paramsObj.extrarec.grouporig;
@@ -393,7 +396,7 @@ sendNotifSchema.statics.getDescrAndLinkByRecNotif = async function (recnotif, us
}
tag = 'sendcoin';
- recnotif.openUrl = '/circuit/' + recnotif.paramsObj.path; //++Todo: dove lo mando ?
+ recnotif.openUrl = shared_consts.getDirectoryByTable(shared_consts.TAB_MYCIRCUITS, true) + recnotif.paramsObj.path; //++Todo: dove lo mando ?
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ_SENT) {
if (myorig) {
@@ -411,7 +414,7 @@ sendNotifSchema.statics.getDescrAndLinkByRecNotif = async function (recnotif, us
}
tag = 'sendcoin';
- recnotif.openUrl = '/circuit/' + recnotif.paramsObj.path; //++Todo: dove lo mando ?
+ recnotif.openUrl = shared_consts.getDirectoryByTable(shared_consts.TAB_MYCIRCUITS, true) + recnotif.paramsObj.path; //++Todo: dove lo mando ?
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_COINS_ACCEPTED) {
newdescr = i18n.__('ID_CIRCUIT_COINS_ACCEPTED', qty, symbol,
username_action) + `\n` + i18n.__('SALDO_UPDATE', recnotif.paramsObj.extrarec.saldoDest, symbol);
@@ -456,6 +459,19 @@ sendNotifSchema.statics.getDescrAndLinkByRecNotif = async function (recnotif, us
newdescr = i18n.__('ID_CIRCUIT_COINS_REFUSED_TO_ME', qty, symbol, destinatario);
tag = 'sendcoin';
}
+ } else if (recnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_FAVORITE) {
+ // ++ Controlla se esiste già
+ let esitegia = recnotif.paramsObj.recObjCreator.exist; // ++
+
+ if (esitegia)
+ newdescr = i18n.__('SET_FAVORITE_OTHERS', recnotif.paramsObj.username_action, recnotif.paramsObj.recObjCreator.numfav - 1, recnotif.paramsObj.recObjCreator.descr);
+ else
+ newdescr = i18n.__('SET_FAVORITE', recnotif.paramsObj.username_action, recnotif.paramsObj.recObjCreator.descr);
+
+ tag = 'favorite';
+
+ recnotif.openUrl = shared_consts.getDirectoryByTable(recnotif.paramsObj.recObjCreator.table, true) + recnotif.paramsObj.recObjCreator.id;
+ recnotif.textaddTelegram = 'Vedi post';
}
recnotif.tag = recnotif.tag ? recnotif.tag : tag;
@@ -645,6 +661,8 @@ sendNotifSchema.statics.updateStatusAndDescr = async function (myrecnotif, onlys
newstatus = shared_consts.CircuitsNotif.STATUS_COINS_REFUSED_SENT;
}
+ } else if (myrecnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_FAVORITE) {
+ // typeidsearch = shared_consts.TypeNotifs.ID_FAVORITE_ADDED;
}
if (newstatus) {
@@ -877,24 +895,26 @@ sendNotifSchema.statics.sendToTheDestinations = async function (myrecnotifpass,
const mytable = globalTables.getTableByTableName(myrecnotifpass.tablerec);
- if (shared_consts.TABLES_ADV_NOTIFICATION.includes(myrecnotifpass.tablerec) ||
- shared_consts.TABLES_EVENTS_NOTIFICATION.includes(myrecnotifpass.tablerec)) {
+ if (myrecnotifpass.typedir === shared_consts.TypeNotifs.TYPEDIR_BACHECA || myrecnotifpass.typedir === shared_consts.TypeNotifs.TYPEDIR_EVENTS) {
+ if (shared_consts.TABLES_ADV_NOTIFICATION.includes(myrecnotifpass.tablerec) ||
+ shared_consts.TABLES_EVENTS_NOTIFICATION.includes(myrecnotifpass.tablerec)) {
+
+ const myrectableorig = await mytable.findOne({ _id: myrecnotifpass.idrec }).lean();
+ if (myrectableorig) {
+ for (const city of myrectableorig.idCity) {
+ arrprovinces.push(await City.getProvinceByIdCity(city));
+ arrregions.push(await City.getRegionByIdCity(city));
+ }
+
+ if (myrecnotifpass.tablerec === shared_consts.TABLES_MYGOODS) {
+ idSector = myrectableorig.idSectorGood;
+ } else {
+ idSector = myrectableorig.idSector;
+ }
- const myrectableorig = await mytable.findOne({ _id: myrecnotifpass.idrec }).lean();
- if (myrectableorig) {
- for (const city of myrectableorig.idCity) {
- arrprovinces.push(await City.getProvinceByIdCity(city));
- arrregions.push(await City.getRegionByIdCity(city));
}
-
- if (myrecnotifpass.tablerec === shared_consts.TABLES_MYGOODS) {
- idSector = myrectableorig.idSectorGood;
- } else {
- idSector = myrectableorig.idSector;
- }
-
+ myrecnotifpass.myrectableorig = myrectableorig;
}
- myrecnotifpass.myrectableorig = myrectableorig;
}
myrecnotifpass = await this.getDescrAndLinkByRecNotif(myrecnotifpass, req.user.username);
@@ -907,36 +927,45 @@ sendNotifSchema.statics.sendToTheDestinations = async function (myrecnotifpass,
let send = false;
- if (shared_consts.TABLES_ADV_NOTIFICATION.includes(myrecnotifpass.tablerec) ||
- shared_consts.TABLES_EVENTS_NOTIFICATION.includes(myrecnotifpass.tablerec)) {
- // Estrai la Città, la Provincia e la regione.
- if (usernotifprofile && tools.isBitActive(usernotifprofile.value, shared_consts.UsersNotif.NEW_ADV_PROVINCE) &&
- user.profile.notif_provinces && user.profile.notif_provinces.some(r => arrprovinces.indexOf(r) >= 0)) {
- send = true;
- }
-
- if (usernotifprofile && tools.isBitActive(usernotifprofile.value, shared_consts.UsersNotif.NEW_ADV_REGION) &&
- user.profile.notif_regions && user.profile.notif_regions.some(r => arrregions.indexOf(r) >= 0)) {
- send = true;
- }
-
- if (idSector && usernotifprofile && tools.isBitActive(usernotifprofile.value, shared_consts.UsersNotif.NEW_ADV_SECTOR)) {
- // Controlla se è del settore selezionato
- if (myrecnotifpass.tablerec === shared_consts.TABLES_MYGOODS) {
- if (user.profile.notif_sector_goods) {
- send = send && (user.profile.notif_sector_goods.includes(idSector));
- }
- } else if (user.profile.notif_sectors) {
- send = send && (user.profile.notif_sectors.includes(idSector));
+ if (myrecnotifpass.typedir === shared_consts.TypeNotifs.TYPEDIR_FAVORITE) {
+ if (shared_consts.TABLES_FAVORITE_BOOKMARK.includes(myrecnotifpass.tablerec)) {
+ if (usernotifprofile && tools.isBitActive(usernotifprofile.value, shared_consts.TypeNotifs.ID_FAVORITE_ADDED)) {
+ send = true;
}
}
+ } else if (myrecnotifpass.typedir === shared_consts.TypeNotifs.TYPEDIR_BACHECA || myrecnotifpass.typedir === shared_consts.TypeNotifs.TYPEDIR_EVENTS) {
+ if (shared_consts.TABLES_ADV_NOTIFICATION.includes(myrecnotifpass.tablerec) ||
+ shared_consts.TABLES_EVENTS_NOTIFICATION.includes(myrecnotifpass.tablerec)) {
+ // Estrai la Città, la Provincia e la regione.
- }
+ if (usernotifprofile && tools.isBitActive(usernotifprofile.value, shared_consts.UsersNotif.NEW_ADV_PROVINCE) &&
+ user.profile.notif_provinces && user.profile.notif_provinces.some(r => arrprovinces.indexOf(r) >= 0)) {
+ send = true;
+ }
- if (shared_consts.TABLES_GROUPS_NOTIFICATION.includes(myrecnotifpass.tablerec)) {
- if (usernotifprofile && tools.isBitActive(usernotifprofile.value, shared_consts.GroupsNotifs.STATUS_GROUPS_NEW)) {
- send = true;
+ if (usernotifprofile && tools.isBitActive(usernotifprofile.value, shared_consts.UsersNotif.NEW_ADV_REGION) &&
+ user.profile.notif_regions && user.profile.notif_regions.some(r => arrregions.indexOf(r) >= 0)) {
+ send = true;
+ }
+
+ if (idSector && usernotifprofile && tools.isBitActive(usernotifprofile.value, shared_consts.UsersNotif.NEW_ADV_SECTOR)) {
+ // Controlla se è del settore selezionato
+ if (myrecnotifpass.tablerec === shared_consts.TABLES_MYGOODS) {
+ if (user.profile.notif_sector_goods) {
+ send = send && (user.profile.notif_sector_goods.includes(idSector));
+ }
+ } else if (user.profile.notif_sectors) {
+ send = send && (user.profile.notif_sectors.includes(idSector));
+ }
+ }
+
+ }
+ } else if (myrecnotifpass.typedir === shared_consts.TypeNotifs.TYPEDIR_GROUPS) {
+ if (shared_consts.TABLES_GROUPS_NOTIFICATION.includes(myrecnotifpass.tablerec)) {
+ if (usernotifprofile && tools.isBitActive(usernotifprofile.value, shared_consts.GroupsNotifs.STATUS_GROUPS_NEW)) {
+ send = true;
+ }
}
}
@@ -999,6 +1028,9 @@ sendNotifSchema.statics.getSumPendingTransactions = async function (idapp, usern
};
+sendNotifSchema.statics.checkIfAlreadyExist = async function (idapp, tag, idpost, numtab) {
+
+};
const SendNotif = mongoose.model('SendNotif', sendNotifSchema);
module.exports = { SendNotif: SendNotif };
diff --git a/src/server/models/user.js b/src/server/models/user.js
index c07add0..5e4cce8 100755
--- a/src/server/models/user.js
+++ b/src/server/models/user.js
@@ -13,6 +13,8 @@ const { Graduatoria } = require('../models/graduatoria');
// const {NavePersistente} = require('../models/navepersistente');
// const { ExtraList } = require('../models/extralist');
+
+
const { MyGroup } = require('../models/mygroup');
const { Circuit } = require('../models/circuit');
@@ -464,6 +466,7 @@ const UserSchema = new mongoose.Schema({
tab: { type: Number },
},
],
+ version: { type: Number },
},
});
@@ -1911,9 +1914,24 @@ UserSchema.statics.removeFavorite = async function (
// Aggiungo il Favorite
UserSchema.statics.addFavorite = async function (
- idapp, username, id, tab) {
- return await User.updateOne({ idapp, username },
+ req, idapp, username, id, tab) {
+ const ris = await User.updateOne({ idapp, username },
{ $push: { 'profile.favorite': { id, tab } } });
+
+ const { SendNotif } = require('../models/sendnotif');
+
+ const globalTables = require('../tools/globalTables');
+
+ // Invia una Notifica al Destinatario
+ const recObjCreator = await globalTables.getUserCreatorByNumTabAndId(idapp, id, tab);
+
+ if (recObjCreator) {
+ await SendNotif.createNewNotifToSingleUser(req, null, { usernameDest: recObjCreator.username, recObjCreator, username_action: req.user.username }, false, shared_consts.TypeNotifs.TYPEDIR_FAVORITE,
+ shared_consts.TypeNotifs.ID_FAVORITE_ADDED);
+
+ }
+
+ return ris;
};
// Rimuovo il Bookmark
UserSchema.statics.removeBookmark = async function (
@@ -2782,7 +2800,7 @@ function getWhatToShow(idapp, username) {
'profile.handshake': 1,
'profile.favorite': 1,
'profile.bookmark': 1,
-};
+ };
}
@@ -2807,7 +2825,7 @@ function getWhatToShow_Unknown(idapp, username) {
'profile.friends': 1,
'profile.favorite': 1,
'profile.bookmark': 1,
-}
+ }
}
UserSchema.statics.getWhatToShow_IfFriends = async function (idapp, username) {
@@ -2835,7 +2853,7 @@ UserSchema.statics.getWhatToShow_IfFriends = async function (idapp, username) {
'profile.friends': 1,
'profile.favorite': 1,
'profile.bookmark': 1,
-};
+ };
};
@@ -3946,6 +3964,7 @@ UserSchema.statics.calculateStat = async function (idapp, username) {
const { MyGood } = require('../models/mygood');
const { MyBacheca } = require('../models/mybacheca');
const { MyGroup } = require('../models/mygroup');
+ const globalTables = require('../tools/globalTables');
const numUsersReg = await User.countDocuments(
{
@@ -3957,8 +3976,6 @@ UserSchema.statics.calculateStat = async function (idapp, username) {
let numByTab = {};
- const globalTables = require('../tools/globalTables');
-
for (let table of shared_consts.TABLES_VISU_STAT_IN_HOME) {
let mytable = globalTables.getTableByTableName(table);
if (mytable) {
@@ -4675,7 +4692,7 @@ UserSchema.statics.getExtraInfoByUsername = async function (idapp, username) {
return myuser.profile;
};
-UserSchema.statics.addExtraInfo = async function (idapp, recUser, recUserSave) {
+UserSchema.statics.addExtraInfo = async function (idapp, recUser, recUserSave, version) {
try {
@@ -4764,6 +4781,22 @@ UserSchema.statics.addExtraInfo = async function (idapp, recUser, recUserSave) {
recUser.profile.calc = await User.calcOtherByUser(idapp, recUser._id);
+ if (version) {
+ let versattualeuser = 0;
+ if (!recUser.profile.version) {
+ recUser.version = 0;
+ versattualeuser = 0;
+ } else {
+ versattualeuser = recUser.profile.version;
+ }
+
+ if (versattualeuser < version) {
+ // Aggiornamento versione
+ recUser = await User.updateVersion(versattualeuser, recUser);
+
+ await User.findOneAndUpdate({_id: recUser._id}, {$set: { 'profile.version' : version }});
+ }
+ }
return recUser;
@@ -4774,6 +4807,17 @@ UserSchema.statics.addExtraInfo = async function (idapp, recUser, recUserSave) {
return recUser;
};
+UserSchema.statics.updateVersion = async function (userversion, recUser) {
+
+ if (userversion < 063) {
+ recUser.profile.notifs.push( { dir: 11, value: 1 })
+
+ await User.findOneAndUpdate({_id: recUser._id}, {$set: { 'profile.notifs': recUser.profile.notifs }});
+ }
+
+ return recUser;
+};
+
UserSchema.statics.calcOtherByUser = async function (idapp, userId) {
const { MySkill } = require('../models/myskill');
diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js
index d9c1f42..cf081d7 100755
--- a/src/server/router/index_router.js
+++ b/src/server/router/index_router.js
@@ -1346,6 +1346,9 @@ function load(req, res, version) {
const permissions = Permission.findAllIdApp();
+ // const versionstr = User....
+ // let version = tools.getVersionint(versionstr);
+
let newstosent = Promise.resolve([]);
let mailinglist = Promise.resolve([]);
let mypage;
@@ -1406,7 +1409,7 @@ function load(req, res, version) {
let myuserextra = null;
if (req.user) {
// askedfriends = User.getAskedFriendsByUsername(idapp, req.user.username);
- myuserextra = User.addExtraInfo(idapp, req.user._doc, req.user);
+ myuserextra = User.addExtraInfo(idapp, req.user._doc, req.user, version);
}
return Promise.all([
diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js
index 8f8426b..debfb34 100755
--- a/src/server/router/users_router.js
+++ b/src/server/router/users_router.js
@@ -1557,7 +1557,7 @@ router.post('/cmd', authenticate, async (req, res) => {
if (cmd === shared_consts.CMD_USER.SET_FAVORITE) {
if (tab) {
if (value)
- ris = await User.addFavorite(idapp, username, id, tab);
+ ris = await User.addFavorite(req, idapp, username, id, tab);
else
ris = await User.removeFavorite(idapp, username, id, tab);
}
diff --git a/src/server/tools/general.js b/src/server/tools/general.js
index dc17a7d..c13b2b7 100755
--- a/src/server/tools/general.js
+++ b/src/server/tools/general.js
@@ -132,6 +132,7 @@ const textlang = {
'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)',
'GROUP_REQUEST': 'Richiesta di entrare nel Gruppo %s da parte di %s',
+ "CLICCA_QUI": "CLICCA QUI",
},
si: {},
es: {
@@ -883,7 +884,7 @@ module.exports = {
};
},
- sendNotificationByUsername: async function (idapp, username, cmd, telegram, usernameOrig) {
+ sendNotificationByUsername: async function (idapp, username, cmd, telegram, usernameOrig, recObjCreator) {
var { User } = require('../models/user');
const { SendNotif } = require('../models/sendnotif');
@@ -919,22 +920,7 @@ module.exports = {
}
} else if (cmd === shared_consts.FRIENDSCMD.SETHANDSHAKE) {
- descr = printf(this.get__('RICHIESTA_HANDSHAKE', lang), usernameOrig);
- openUrl = '/my/' + usernameOrig;
- tag = 'reqhandshake';
-
- const userrecDest = await User.getUserShortDataByUsername(idapp, usernameOrig);
-
- const foundIfAlreadyHandShake = await User.isMyHandShake(idapp, username, usernameOrig);
-
- if (userrecDest) {
- sendmynotif = false; // non lo rimandare 2 volte !
- if (!foundIfAlreadyHandShake) {
- // SEND TELEGRAM NOTIFICATION
- telegrambot.askConfirmationUserFriend(idapp, shared_consts.CallFunz.RICHIESTA_HANDSHAKE, userrecDest, username, usernameOrig);
- }
- }
-
+ // const foundIfAlready = await User.isMyHandShake(idapp, username, usernameOrig);
}
}
@@ -1770,6 +1756,11 @@ module.exports = {
return myrec ? myrec.id : -1
},
+ getTableByNumTab(numtab) {
+ const myrec = shared_consts.MYTABS.find((rec) => rec.id === numtab)
+ return myrec ? myrec.table : ''
+ },
+
getGroupnameLookupPipeLine(params, proj) {
let myquery = [
@@ -1811,6 +1802,17 @@ module.exports = {
if (params.af_objId_tab) {
const myobj = {};
myobj['myId' + num] = { '$toObjectId': '$' + params.lk_LF };
+
+ if (params.lk_tab === 'users') {
+ myobj.namecomplete = {
+ $concat: [
+ { $toLower: "$name" },
+ { $toLower: "$surname" },
+ { $toLower: "$username" },
+ ],
+ };
+ }
+
query.push(
{ '$addFields': myobj },
);
@@ -1971,7 +1973,7 @@ module.exports = {
{
$project: {
username: 1, name: 1, surname: 1, 'profile.resid_province': 1, 'profile.img': 1,
- 'profile.qualifica': 1,
+ 'profile.qualifica': 1,
}
},
],
@@ -2202,14 +2204,6 @@ module.exports = {
// console.log('QUERYMATCH', query[0].$match.or);
// console.log('filter', params.filter);
- if (params.sortBy) {
- // maybe we want to sort by blog title or something
- const mysort = { $sort: params.sortBy };
- // console.log('sortBy', params.sortBy);
- // console.table(mysort);
- query.push(mysort);
- }
-
let numrowend = params.endRow - params.startRow;
if (numrowend < 0)
numrowend = 1;
@@ -2611,6 +2605,14 @@ module.exports = {
if (q1) query = [...query, ...q1];
}
+ if (params.sortBy) {
+ // maybe we want to sort by blog title or something
+ const mysort = { $sort: params.sortBy };
+ // console.log('sortBy', params.sortBy);
+ // console.table(mysort);
+ query.push(mysort);
+ }
+
query.push(
{
$group: {
@@ -3854,6 +3856,11 @@ module.exports = {
let myhost = this.getHostByIdApp(params.idapp);
+ if (params.textaddTelegram) {
+ if (params.openUrl)
+ content = content + '\n' + '' + params.textaddTelegram + '';
+ }
+
/*if (params.openUrl)
content = content + '\n' + '' + i18n.__('OPEN PAGE') + '';
@@ -3867,5 +3874,5 @@ module.exports = {
return `${username}`;
},
-
+
};
diff --git a/src/server/tools/globalTables.js b/src/server/tools/globalTables.js
index 7277aff..6a5a2d6 100755
--- a/src/server/tools/globalTables.js
+++ b/src/server/tools/globalTables.js
@@ -227,6 +227,8 @@ module.exports = {
const sendemail = require('../sendemail');
+ const { User } = require('../models/user');
+
/// ... rivedere il crea gruppo... notifiche...
try {
if (!recnotif.typesend) {
@@ -248,7 +250,8 @@ module.exports = {
usernameDest: recnotif.usernameDest ? recnotif.usernameDest : recnotif.dest,
tag: recnotif.tag ? recnotif.tag : '',
actions: recnotif.actions ? recnotif.actions : [],
- id: recnotif._id
+ id: recnotif._id,
+ textaddTelegram: recnotif.textaddTelegram ? recnotif.textaddTelegram : '',
};
if (tools.isBitActive(recnotif.typesend, shared_consts.MessageOptions.Notify_ByPushNotification) && this.checkifSendPushNotification) {
@@ -287,6 +290,8 @@ module.exports = {
try {
console.log('SendMsgToParam', params.typesend);
+ const { User } = require('../models/user');
+
let textsent = '';
const telegrambot = require('../telegram/telegrambot');
@@ -536,5 +541,66 @@ module.exports = {
},
+ getNumFavoriteByIdObj: async function (idapp, numtab, id) {
+
+ const { User } = require('../models/user');
+
+ let query = [
+ {
+ $match: {
+ idapp,
+ "profile.favorite": {
+ $elemMatch:
+ { id, tab: numtab }
+ }
+ },
+ },
+ {
+ $group:
+ {
+ _id: null,
+ count: { $sum: 1 },
+ }
+ },
+ { $project: { _id: 0 } }
+ ];
+
+ try {
+ const [result] = await User.aggregate(query);
+
+ return result ? result.count : 0;
+ } catch (err) {
+ return 0;
+ }
+
+ return 0;
+
+ },
+
+ getUserCreatorByNumTabAndId: async function (idapp, id, numtab) {
+ try {
+ const table = tools.getTableByNumTab(numtab);
+ const mytable = this.getTableByTableName(table);
+
+ const { User } = require('../models/user');
+
+ if (mytable) {
+ const rec = await mytable.findOne({ _id: id, idapp }, { username: 1, lang: 1, userId: 1, descr: 1 });
+ if (rec) {
+ const recuser = await User.getUserById(idapp, rec.userId);
+
+ let numfav = await this.getNumFavoriteByIdObj(idapp, numtab, id);
+ let exist = numfav > 1;
+ if (recuser)
+ return { userId: rec.userId, username: recuser.username, descr: rec.descr, id: rec._id, table, exist, numfav };
+ }
+ }
+ } catch (e) {
+ console.error('Err:', e);
+ }
+
+ return null;
+ },
+
};
diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js
index 8266e12..a7ae73e 100755
--- a/src/server/tools/shared_nodejs.js
+++ b/src/server/tools/shared_nodejs.js
@@ -95,6 +95,10 @@ module.exports = {
SENDCOINS_REFUSE_SENT: 2222,
},
+ USERCMD: {
+ FAVORITE: 3001,
+ },
+
REPORT_FILT_RESP: 1,
REPORT_FILT_ATTIVITA: 2,
@@ -449,6 +453,9 @@ module.exports = {
TYPEDIR_HANDSHAKE: 10,
ID_HANDSHAKE_ACCEPTED: 2,
+ TYPEDIR_FAVORITE: 11,
+ ID_FAVORITE_ADDED: 1,
+
TYPEDIR_TEST: 444,
ID_TEST_NEW_REC: 1,
},
@@ -523,7 +530,11 @@ module.exports = {
{
'dir': 5,
'value': 1
- }
+ },
+ {
+ 'dir': 11,
+ 'value': 1
+ },
],
CIRCUIT_STATUS: {
@@ -569,6 +580,8 @@ module.exports = {
reported: 1,
date_report: 1,
username_who_report: 1,
+ namecomplete: 1,
+ date_reg: 1,
};
if (proj_add)
@@ -577,4 +590,26 @@ module.exports = {
return proj;
},
+ getDirectoryByTable(table, barre = false) {
+ let add = '';
+ if (barre)
+ add = '/';
+
+ if (table === 'myskills') {
+ return add + 'myservice' + add
+ } else if (table === 'mybachecas') {
+ return add + 'mypage' + add
+ } else if (table === 'myhosps') {
+ return add + 'myhosps' + add
+ } else if (table === 'mygoods') {
+ return add + 'mygood' + add
+ } else if (table === 'mygroups') {
+ return add + 'grp' + add
+ } else if (table === 'circuits') {
+ return add + 'circuit' + add
+ }
+
+ return ''
+ },
+
};