- Griglia Orizzontale a Carosello
- Aggiornato Tabella Eventi - Lista Ultimi Movimenti - Ultime strette di mano - Ultimi Invitanti alla App
This commit is contained in:
5
.vscode/launch.json
vendored
5
.vscode/launch.json
vendored
@@ -1,13 +1,14 @@
|
|||||||
{
|
{
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
|
|
||||||
{
|
{
|
||||||
"type": "node",
|
"type": "node",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"name": "Launch via Nodemon",
|
"name": "Launch via Nodemon",
|
||||||
"program": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js",
|
"program": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js",
|
||||||
"restart": true,
|
"restart": true,
|
||||||
"runtimeExecutable": "node",
|
"runtimeExecutable": "/usr/local/bin/node",
|
||||||
"runtimeArgs": [
|
"runtimeArgs": [
|
||||||
"--inspect=9229" // Use "--inspect=0.0.0.0:9229" for remote debugging
|
"--inspect=9229" // Use "--inspect=0.0.0.0:9229" for remote debugging
|
||||||
],
|
],
|
||||||
@@ -30,7 +31,7 @@
|
|||||||
"name": "Launch Trace Warning",
|
"name": "Launch Trace Warning",
|
||||||
"program": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js",
|
"program": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js",
|
||||||
"restart": true,
|
"restart": true,
|
||||||
"runtimeExecutable": "node",
|
"runtimeExecutable": "/usr/local/bin/node",
|
||||||
"runtimeArgs": [
|
"runtimeArgs": [
|
||||||
"--trace-warnings" // Use "--inspect=0.0.0.0:9229" for remote debugging
|
"--trace-warnings" // Use "--inspect=0.0.0.0:9229" for remote debugging
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -35,8 +35,8 @@
|
|||||||
"CIRCUIT_REQUEST_TO_ENTER": "%s ha chiesto di entrare nel circuito %s",
|
"CIRCUIT_REQUEST_TO_ENTER": "%s ha chiesto di entrare nel circuito %s",
|
||||||
"CIRCUIT_CREATED": "✅ %s ha creato un nuovo Circuito chiamato %s",
|
"CIRCUIT_CREATED": "✅ %s ha creato un nuovo Circuito chiamato %s",
|
||||||
"CIRCUIT_REQUEST": "Richiesta di entrare nel Circuito %s da parte di %s",
|
"CIRCUIT_REQUEST": "Richiesta di entrare nel Circuito %s da parte di %s",
|
||||||
"CIRCUIT_ADDED_ADMIN": "E' stato aggiunto %s come Amministratore del circuito %s da parte di %s",
|
"CIRCUIT_ADDED_ADMIN": "E' stato aggiunto %s come Amministratore/Amministratrice del circuito %s da parte di %s",
|
||||||
"CIRCUIT_ADDED_ADMIN_YOU": "Sei stato aggiunto come Amministratore del circuito %s da parte di %s",
|
"CIRCUIT_ADDED_ADMIN_YOU": "Sei stato aggiunto come Amministratore/Amministratrice del circuito %s da parte di %s",
|
||||||
"CIRCUIT_REMOVED_ADMIN": "E' stato rimosso l'incarico di Amministratore a %s del circuito %s da parte di %s",
|
"CIRCUIT_REMOVED_ADMIN": "E' stato rimosso l'incarico di Amministratore a %s del circuito %s da parte di %s",
|
||||||
"CIRCUIT_REMOVED_ADMIN_YOU": "Ti è stato rimosso l'incarico di Amministratore del circuito %s da parte di %s",
|
"CIRCUIT_REMOVED_ADMIN_YOU": "Ti è stato rimosso l'incarico di Amministratore del circuito %s da parte di %s",
|
||||||
"RICHIESTA_BLOCCO_CIRCUIT": "Richiesta di bloccare il Circuito %s da parte di %s",
|
"RICHIESTA_BLOCCO_CIRCUIT": "Richiesta di bloccare il Circuito %s da parte di %s",
|
||||||
|
|||||||
@@ -37,8 +37,8 @@
|
|||||||
"GROUP_REQUEST_TO_ENTER": "%s ha chiesto di entrare nel gruppo %s",
|
"GROUP_REQUEST_TO_ENTER": "%s ha chiesto di entrare nel gruppo %s",
|
||||||
"GROUP_CREATED": "✅ %s ha creato un nuovo Gruppo chiamato %s",
|
"GROUP_CREATED": "✅ %s ha creato un nuovo Gruppo chiamato %s",
|
||||||
"GROUP_REQUEST": "Richiesta di entrare nel Gruppo %s da parte di %s",
|
"GROUP_REQUEST": "Richiesta di entrare nel Gruppo %s da parte di %s",
|
||||||
"GROUPS_ADDED_ADMIN_GROUP": "E' stato aggiunto %s come Amministratore del gruppo %s da parte di %s",
|
"GROUPS_ADDED_ADMIN_GROUP": "E' stato aggiunto %s come Amministratore/Amministratrice del gruppo %s da parte di %s",
|
||||||
"GROUPS_ADDED_ADMIN_GROUP_YOU": "Sei stato aggiunto come Amministratore del gruppo %s da parte di %s",
|
"GROUPS_ADDED_ADMIN_GROUP_YOU": "Sei stato aggiunto come Amministratore/Amministratrice del gruppo %s da parte di %s",
|
||||||
"GROUPS_REMOVED_ADMIN_GROUP": "E' stato rimosso l'incarico di Amministratore a %s del gruppo %s da parte di %s",
|
"GROUPS_REMOVED_ADMIN_GROUP": "E' stato rimosso l'incarico di Amministratore a %s del gruppo %s da parte di %s",
|
||||||
"GROUPS_REMOVED_ADMIN_GROUP_YOU": "Ti è stato rimosso l'incarico di Amministratore del gruppo %s da parte di %s",
|
"GROUPS_REMOVED_ADMIN_GROUP_YOU": "Ti è stato rimosso l'incarico di Amministratore del gruppo %s da parte di %s",
|
||||||
"RICHIESTA_BLOCCO_GRUPPO": "Richiesta di bloccare il Gruppo %s da parte di %s",
|
"RICHIESTA_BLOCCO_GRUPPO": "Richiesta di bloccare il Gruppo %s da parte di %s",
|
||||||
@@ -58,9 +58,9 @@
|
|||||||
"CIRCUIT_REQUEST_TO_ENTER_WITH_GROUP": "il gruppo %s ha chiesto di entrare nel %s (con %s iscritti)",
|
"CIRCUIT_REQUEST_TO_ENTER_WITH_GROUP": "il gruppo %s ha chiesto di entrare nel %s (con %s iscritti)",
|
||||||
"CIRCUIT_CREATED": "✅ %s ha creato un nuovo Circuito chiamato %s",
|
"CIRCUIT_CREATED": "✅ %s ha creato un nuovo Circuito chiamato %s",
|
||||||
"CIRCUIT_REQUEST": "Richiesta di entrare nel %s da parte di %s",
|
"CIRCUIT_REQUEST": "Richiesta di entrare nel %s da parte di %s",
|
||||||
"CIRCUIT_ADDED_ADMIN": "E' stato aggiunto %s come Amministratore del %s da parte di %s",
|
"CIRCUIT_ADDED_ADMIN": "E' stato aggiunto %s come Amministratore/Amministratrice del %s da parte di %s",
|
||||||
"CIRCUIT_ADDED_ADMIN_YOU": "%s sei stato aggiunto come Amministratore del %s da parte di %s",
|
"CIRCUIT_ADDED_ADMIN_YOU": "%s sei stato aggiunto come Amministratore/Amministratrice del %s da parte di %s",
|
||||||
"CIRCUIT_REMOVED_ADMIN": "E' stato rimosso l'incarico di Amministratore a %s del %s da parte di %s",
|
"CIRCUIT_REMOVED_ADMIN": "E' stato rimosso l'incarico di Amministratore/Amministratrice a %s del %s da parte di %s",
|
||||||
"CIRCUIT_REMOVED_ADMIN_YOU": "%s ti è stato rimosso l'incarico di Amministratore del %s da parte di %s",
|
"CIRCUIT_REMOVED_ADMIN_YOU": "%s ti è stato rimosso l'incarico di Amministratore del %s da parte di %s",
|
||||||
"RICHIESTA_BLOCCO_CIRCUIT": "Richiesta di bloccare il %s da parte di %s",
|
"RICHIESTA_BLOCCO_CIRCUIT": "Richiesta di bloccare il %s da parte di %s",
|
||||||
"CIRCUIT_ELIMINATO": "Il %s è stato eliminato da parte di %s",
|
"CIRCUIT_ELIMINATO": "Il %s è stato eliminato da parte di %s",
|
||||||
|
|||||||
@@ -105,7 +105,10 @@ const MyElemSchema = new Schema({
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
},
|
},
|
||||||
number: {
|
number: {
|
||||||
type: String,
|
type: Number,
|
||||||
|
},
|
||||||
|
num2: {
|
||||||
|
type: Number,
|
||||||
},
|
},
|
||||||
imgback: {
|
imgback: {
|
||||||
type: String,
|
type: String,
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ StatSchema.statics.calculateStats = async function (idapp) {
|
|||||||
diffusorilist: await User.getDiffusoriUsers(idapp),
|
diffusorilist: await User.getDiffusoriUsers(idapp),
|
||||||
receiveRislist: await User.getReceiveRISUsers(idapp),
|
receiveRislist: await User.getReceiveRISUsers(idapp),
|
||||||
receiveRislistgroup: await MyGroup.getReceiveRISGroups(idapp),
|
receiveRislistgroup: await MyGroup.getReceiveRISGroups(idapp),
|
||||||
strettelist: await User.getBestStretteDiManoUsers(idapp),
|
strettelist: await User.getLastStretteDiManoUsers(idapp),
|
||||||
num_transaz_tot: await Movement.getTotal_Transactions(idapp),
|
num_transaz_tot: await Movement.getTotal_Transactions(idapp),
|
||||||
tot_RIS_transati: await Movement.getTot_RIS_Transati(idapp),
|
tot_RIS_transati: await Movement.getTot_RIS_Transati(idapp),
|
||||||
num_circuiti: await Circuit.getnumCircuits(idapp),
|
num_circuiti: await Circuit.getnumCircuits(idapp),
|
||||||
@@ -113,7 +113,7 @@ StatSchema.statics.calculateStats = async function (idapp) {
|
|||||||
if (trova_se_oggi) {
|
if (trova_se_oggi) {
|
||||||
// Aggiorna il record di oggi:
|
// Aggiorna il record di oggi:
|
||||||
const ris = await Stat.findOneAndUpdate({ _id: trova_se_oggi._id }, { $set: datastat }, { new: true });
|
const ris = await Stat.findOneAndUpdate({ _id: trova_se_oggi._id }, { $set: datastat }, { new: true });
|
||||||
console.log('ris', ris);
|
// console.log('ris', ris);
|
||||||
} else {
|
} else {
|
||||||
// Aggiungi un nuovo record:
|
// Aggiungi un nuovo record:
|
||||||
await Stat.insertMany([datastat]);
|
await Stat.insertMany([datastat]);
|
||||||
@@ -154,6 +154,10 @@ StatSchema.statics.getStats = async function (idapp) {
|
|||||||
|
|
||||||
let datastat = null;
|
let datastat = null;
|
||||||
|
|
||||||
|
if (tools.testing()) {
|
||||||
|
isOld = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (isOld) {
|
if (isOld) {
|
||||||
datastat = await Stat.calculateStats(idapp);
|
datastat = await Stat.calculateStats(idapp);
|
||||||
|
|
||||||
|
|||||||
@@ -4542,28 +4542,94 @@ UserSchema.statics.getLastUsers = async function (idapp) {
|
|||||||
|
|
||||||
const lastn = await Settings.getValDbSettings(idapp, 'SHOW_LAST_N_USERS', 20);
|
const lastn = await Settings.getValDbSettings(idapp, 'SHOW_LAST_N_USERS', 20);
|
||||||
|
|
||||||
return await User.find(
|
const myquery = [
|
||||||
{
|
{
|
||||||
idapp,
|
$match: {
|
||||||
$or: [
|
idapp,
|
||||||
{ deleted: { $exists: false } },
|
$or: [
|
||||||
{ deleted: { $exists: true, $eq: false } }],
|
{ deleted: { $exists: false } },
|
||||||
|
{ deleted: { $exists: true, $eq: false } }],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
username: 1,
|
$lookup: {
|
||||||
name: 1,
|
from: "users",
|
||||||
surname: 1,
|
let: {
|
||||||
lasttimeonline: 1,
|
username: "$aportador_solidario",
|
||||||
verified_by_aportador: 1,
|
idapp,
|
||||||
idMyGroup: 1,
|
},
|
||||||
'profile.img': 1,
|
pipeline: [
|
||||||
date_reg: 1,
|
{
|
||||||
index: 1,
|
$match: {
|
||||||
'profile.nationality': 1,
|
$expr: {
|
||||||
}).sort({ date_reg: -1 }).limit(lastn).lean().then((arr) => {
|
$and: [
|
||||||
//return JSON.stringify(arr)
|
{
|
||||||
return arr;
|
$eq: [
|
||||||
});
|
"$$username",
|
||||||
|
"$username",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$eq: [
|
||||||
|
"$$idapp",
|
||||||
|
"$idapp",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
as: "user_aportador",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$unwind: "$user_aportador",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$replaceRoot: {
|
||||||
|
newRoot: {
|
||||||
|
$mergeObjects: [
|
||||||
|
"$user_aportador",
|
||||||
|
"$$ROOT",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$project: {
|
||||||
|
username: 1,
|
||||||
|
name: 1,
|
||||||
|
surname: 1,
|
||||||
|
lasttimeonline: 1,
|
||||||
|
aportador_solidario: 1,
|
||||||
|
idMyGroup: 1,
|
||||||
|
"profile.img": 1,
|
||||||
|
"profile.resid_province": 1,
|
||||||
|
date_reg: 1,
|
||||||
|
index: 1,
|
||||||
|
"profile.nationality": 1,
|
||||||
|
"user_aportador.username": 1,
|
||||||
|
"user_aportador.name": 1,
|
||||||
|
"user_aportador.lasttimeonline": 1,
|
||||||
|
"user_aportador.surname": 1,
|
||||||
|
"user_aportador.profile.resid_province": 1,
|
||||||
|
"user_aportador.profile.img": 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$sort: { date_reg: -1 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$limit: lastn,
|
||||||
|
},
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
return await User.aggregate(myquery).then((arr) => {
|
||||||
|
//return JSON.stringify(arr)
|
||||||
|
return arr;
|
||||||
|
});
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -4588,6 +4654,7 @@ UserSchema.statics.getLastOnlineUsers = async function (idapp) {
|
|||||||
verified_by_aportador: 1,
|
verified_by_aportador: 1,
|
||||||
idMyGroup: 1,
|
idMyGroup: 1,
|
||||||
'profile.img': 1,
|
'profile.img': 1,
|
||||||
|
'profile.resid_province': 1,
|
||||||
index: 1,
|
index: 1,
|
||||||
}).sort({ lasttimeonline: -1 }).limit(lastn).lean().then((arr) => {
|
}).sort({ lasttimeonline: -1 }).limit(lastn).lean().then((arr) => {
|
||||||
//return JSON.stringify(arr)
|
//return JSON.stringify(arr)
|
||||||
@@ -4601,26 +4668,94 @@ UserSchema.statics.getLastSharedLink = async function (idapp) {
|
|||||||
|
|
||||||
const lastn = 10;
|
const lastn = 10;
|
||||||
|
|
||||||
return await User.find(
|
const myquery = [
|
||||||
{
|
{
|
||||||
idapp,
|
$match: {
|
||||||
$or: [
|
idapp,
|
||||||
{ deleted: { $exists: false } },
|
$or: [
|
||||||
{ deleted: { $exists: true, $eq: false } }],
|
{ deleted: { $exists: false } },
|
||||||
|
{ deleted: { $exists: true, $eq: false } }],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
username: 1,
|
$lookup: {
|
||||||
name: 1,
|
from: "users",
|
||||||
surname: 1,
|
let: {
|
||||||
lasttimeonline: 1,
|
username: "$aportador_solidario",
|
||||||
verified_by_aportador: 1,
|
idapp,
|
||||||
idMyGroup: 1,
|
},
|
||||||
date_reg: 1,
|
pipeline: [
|
||||||
'profile.img': 1,
|
{
|
||||||
index: 1,
|
$match: {
|
||||||
}).sort({ date_tokenreg: -1 }).limit(lastn).lean().then((arr) => {
|
$expr: {
|
||||||
return arr;
|
$and: [
|
||||||
});
|
{
|
||||||
|
$eq: [
|
||||||
|
"$$username",
|
||||||
|
"$username",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$eq: [
|
||||||
|
"$$idapp",
|
||||||
|
"$idapp",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
as: "user_aportador",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$unwind: "$user_aportador",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$replaceRoot: {
|
||||||
|
newRoot: {
|
||||||
|
$mergeObjects: [
|
||||||
|
"$user_aportador",
|
||||||
|
"$$ROOT",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$project: {
|
||||||
|
username: 1,
|
||||||
|
name: 1,
|
||||||
|
surname: 1,
|
||||||
|
lasttimeonline: 1,
|
||||||
|
aportador_solidario: 1,
|
||||||
|
idMyGroup: 1,
|
||||||
|
"profile.img": 1,
|
||||||
|
"profile.resid_province": 1,
|
||||||
|
date_reg: 1,
|
||||||
|
index: 1,
|
||||||
|
"profile.nationality": 1,
|
||||||
|
"user_aportador.username": 1,
|
||||||
|
"user_aportador.name": 1,
|
||||||
|
"user_aportador.lasttimeonline": 1,
|
||||||
|
"user_aportador.surname": 1,
|
||||||
|
"user_aportador.profile.resid_province": 1,
|
||||||
|
"user_aportador.profile.img": 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$sort: { date_reg: -1 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$limit: lastn,
|
||||||
|
},
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
return await User.aggregate(myquery).then((arr) => {
|
||||||
|
//return JSON.stringify(arr)
|
||||||
|
return arr;
|
||||||
|
});
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -4648,6 +4783,20 @@ UserSchema.statics.getBestStretteDiManoUsers = async function (idapp) {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
UserSchema.statics.getLastStretteDiManoUsers = async function (idapp) {
|
||||||
|
const User = this;
|
||||||
|
|
||||||
|
const lastn = 10;
|
||||||
|
|
||||||
|
const myquery = await User.getQueryLastUsersStretteDiMano(idapp);
|
||||||
|
|
||||||
|
return await User.aggregate(myquery).then(ris => {
|
||||||
|
// console.table(ris);
|
||||||
|
return ris;
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
UserSchema.statics.getReceiveRISUsers = async function (idapp) {
|
UserSchema.statics.getReceiveRISUsers = async function (idapp) {
|
||||||
const User = this;
|
const User = this;
|
||||||
|
|
||||||
@@ -5005,6 +5154,113 @@ UserSchema.statics.getQueryUsersStretteDiMano = async function (idapp) {
|
|||||||
return query;
|
return query;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
UserSchema.statics.getQueryLastUsersStretteDiMano = async function (idapp) {
|
||||||
|
|
||||||
|
const lastn = await Settings.getValDbSettings(idapp, 'SHOW_LAST_N_USERS', 20);
|
||||||
|
|
||||||
|
const query = [
|
||||||
|
{
|
||||||
|
$match: {
|
||||||
|
idapp,
|
||||||
|
'profile.handshake': { $exists: true },
|
||||||
|
$or: [
|
||||||
|
{
|
||||||
|
deleted: {
|
||||||
|
$exists: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deleted: {
|
||||||
|
$exists: true,
|
||||||
|
$eq: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ $unwind: "$profile.handshake" },
|
||||||
|
|
||||||
|
// Ordiniamo in base alla data della handshake in modo decrescente
|
||||||
|
{ $sort: { "profile.handshake.date": -1 } },
|
||||||
|
|
||||||
|
{
|
||||||
|
$lookup: {
|
||||||
|
from: "users",
|
||||||
|
let: {
|
||||||
|
username: "$profile.handshake.username",
|
||||||
|
idapp: idapp,
|
||||||
|
},
|
||||||
|
pipeline: [
|
||||||
|
{
|
||||||
|
$match: {
|
||||||
|
$expr: {
|
||||||
|
$and: [
|
||||||
|
{
|
||||||
|
$eq: [
|
||||||
|
"$$username",
|
||||||
|
"$username",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$eq: [
|
||||||
|
"$$idapp",
|
||||||
|
"$idapp",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
as: "userfriend",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ $unwind: "$userfriend" },
|
||||||
|
|
||||||
|
// Raggruppiamo nuovamente gli utenti dopo l'ordinamento
|
||||||
|
{
|
||||||
|
$group: {
|
||||||
|
_id: "$_id",
|
||||||
|
userId: { $first: "$userId" },
|
||||||
|
idapp: { $first: "$idapp" },
|
||||||
|
username: { $first: "$username" },
|
||||||
|
aportador_solidario: { $first: "$aportador_solidario" },
|
||||||
|
name: { $first: "$name" },
|
||||||
|
surname: { $first: "$surname" },
|
||||||
|
lasttimeonline: { $first: "$lasttimeonline" },
|
||||||
|
date_reg: { $first: "$date_reg" },
|
||||||
|
userfriend: {
|
||||||
|
$first: {
|
||||||
|
profile: {
|
||||||
|
img: "$userfriend.profile.img",
|
||||||
|
resid_province: "$userfriend.profile.resid_province",
|
||||||
|
},
|
||||||
|
username: "$userfriend.username",
|
||||||
|
name: "$userfriend.name",
|
||||||
|
surname: "$userfriend.surname",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
profile: {
|
||||||
|
$first: {
|
||||||
|
img: "$profile.img",
|
||||||
|
handshake: "$profile.handshake",
|
||||||
|
resid_province: "$profile.resid_province",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
handshakeDate: { $first: "$profile.handshake.date" },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$sort: {
|
||||||
|
handshakeDate: -1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ $limit: lastn },
|
||||||
|
];
|
||||||
|
return query;
|
||||||
|
};
|
||||||
|
|
||||||
UserSchema.statics.getQueryReceiveRISUsers = function (idapp, hours) {
|
UserSchema.statics.getQueryReceiveRISUsers = function (idapp, hours) {
|
||||||
|
|
||||||
const query = [
|
const query = [
|
||||||
|
|||||||
Reference in New Issue
Block a user