- sistemato anche il users/profile ed aggiunto /users/activities

This commit is contained in:
Surya Paolo
2024-03-21 22:58:46 +01:00
parent bd95e4457f
commit 22771c1ea7
3 changed files with 762 additions and 680 deletions

View File

@@ -1727,8 +1727,8 @@ UserSchema.statics.getUserProfileByUsername = async function (
'profile.username_telegram': 1, 'profile.username_telegram': 1,
'profile.firstname_telegram': 1, 'profile.firstname_telegram': 1,
'profile.lastname_telegram': 1, 'profile.lastname_telegram': 1,
'profile.intcode_cell': 1, // 'profile.intcode_cell': 1,
'profile.cell': 1, // 'profile.cell': 1,
'profile.website': 1, 'profile.website': 1,
'profile.img': 1, 'profile.img': 1,
'profile.sex': 1, 'profile.sex': 1,
@@ -2061,7 +2061,7 @@ UserSchema.statics.addCircuitToUser = async function (idapp, usernameOrig, circu
} else { } else {
// prima di aggiungerlo controlla se esiste già ! // prima di aggiungerlo controlla se esiste già !
let update = { let update = {
$addToSet: { // Utilizziamo $addToSet invece di $push per garantire che l'elemento venga aggiunto solo se non esiste già $addToSet: { // Utilizziamo $addToSet invece di $push per garantire che l'elemento venga aggiunto solo se non esiste già
'profile.mycircuits': { 'profile.mycircuits': {
@@ -2072,7 +2072,7 @@ UserSchema.statics.addCircuitToUser = async function (idapp, usernameOrig, circu
} }
} }
}; };
ris = await User.updateOne({ idapp, username: usernameOrig, 'profile.mycircuits': { $not: { $elemMatch: { circuitname } } } }, update); ris = await User.updateOne({ idapp, username: usernameOrig, 'profile.mycircuits': { $not: { $elemMatch: { circuitname } } } }, update);
if (confido) { if (confido) {
@@ -4870,27 +4870,27 @@ function calculate30DayAverage(data) {
const averages = []; const averages = [];
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
const startDate = new Date(data[i]._id); const startDate = new Date(data[i]._id);
let sum = data[i].count; let sum = data[i].count;
let count = 1; let count = 1;
for (let j = i + 1; j < data.length; j++) { for (let j = i + 1; j < data.length; j++) {
const currentDate = new Date(data[j]._id); const currentDate = new Date(data[j]._id);
const diffInTime = Math.abs(startDate.getTime() - currentDate.getTime()); const diffInTime = Math.abs(startDate.getTime() - currentDate.getTime());
const diffInDays = Math.ceil(diffInTime / (1000 * 60 * 60 * 24)); const diffInDays = Math.ceil(diffInTime / (1000 * 60 * 60 * 24));
if (diffInDays <= 30) { if (diffInDays <= 30) {
sum += data[j].count; sum += data[j].count;
count++; count++;
} else { } else {
break; break;
}
} }
}
averages.push({ averages.push({
_id: data[i]._id, _id: data[i]._id,
dailyAverage: sum / count dailyAverage: sum / count
}); });
} }
return averages; return averages;
@@ -5202,6 +5202,24 @@ UserSchema.statics.getExtraInfoByUsername = async function (idapp, username) {
return null; return null;
}; };
UserSchema.statics.getProfilePerActivitiesByUsername = async function (idapp, username) {
const User = this;
try {
let myuser = await User.findOne({ idapp, username }).lean();
if (myuser) {
return {
mygroups: myuser.profile.mygroups,
mycircuits: myuser.profile.mycircuits };
}
} catch (e) {
console.error('e', e);
}
return null;
};
UserSchema.statics.addExtraInfo = async function (idapp, recUser, recUserSave, version) { UserSchema.statics.addExtraInfo = async function (idapp, recUser, recUserSave, version) {
try { try {
@@ -5566,7 +5584,7 @@ UserSchema.statics.addNewSite = async function (idappPass, body) {
// cerca un IdApp Libero // cerca un IdApp Libero
let idapp = await Site.generateNewSite_IdApp(idappPass, body, true); let idapp = await Site.generateNewSite_IdApp(idappPass, body, true);
if (idapp) { if (idapp) {
let arrSite = await Site.find({ idapp }).lean(); let arrSite = await Site.find({ idapp }).lean();
let numutenti = 0; let numutenti = 0;
@@ -5576,7 +5594,7 @@ UserSchema.statics.addNewSite = async function (idappPass, body) {
if (arrSite && arrSite.length === 1 && numutenti < 2) { if (arrSite && arrSite.length === 1 && numutenti < 2) {
const MyTelegramBot = require('../telegram/telegrambot'); const MyTelegramBot = require('../telegram/telegrambot');
// Nessun Sito Installato e Nessun Utente installato ! // Nessun Sito Installato e Nessun Utente installato !
let myuser = new User(); let myuser = new User();
myuser._id = new ObjectID(); myuser._id = new ObjectID();

View File

@@ -443,7 +443,7 @@ router.post('/receiveris', authenticate, (req, res) => {
}; };
}); });
router.post('/profile', authenticate_noerror, (req, res) => { router.post('/profile', authenticate, (req, res) => {
const usernameOrig = req.user ? req.user.username : ''; const usernameOrig = req.user ? req.user.username : '';
const perm = req.user ? req.user.perm : tools.Perm.PERM_NONE; const perm = req.user ? req.user.perm : tools.Perm.PERM_NONE;
const username = req.body['username']; const username = req.body['username'];
@@ -464,7 +464,7 @@ router.post('/profile', authenticate_noerror, (req, res) => {
return User.getFriendsByUsername(idapp, usernameOrig). return User.getFriendsByUsername(idapp, usernameOrig).
then(async (friends) => { then(async (friends) => {
if (username === usernameOrig) { if (username === usernameOrig) {
const userprofile = await User.getExtraInfoByUsername(idapp, username); const userprofile = await User.getExtraInfoByUsername(idapp, ris.username);
ris.profile = userprofile; ris.profile = userprofile;
} }
@@ -485,6 +485,54 @@ router.post('/profile', authenticate_noerror, (req, res) => {
}); });
router.post('/activities', authenticate_noerror, (req, res) => {
const usernameOrig = req.user ? req.user.username : '';
const perm = req.user ? req.user.perm : tools.Perm.PERM_NONE;
const username = req.body['username'];
const idapp = req.body.idapp;
const locale = req.body.locale;
//++Todo: controlla che tipo di dati ha il permesso di leggere
try {
// Check if ìs a Notif to read
const idnotif = req.body['idnotif'] ? req.body['idnotif'] : '';
SendNotif.setNotifAsRead(idapp, usernameOrig, idnotif);
return User.getUserProfileByUsername(idapp, username, usernameOrig,
false, perm).
then((ris) => {
return User.getFriendsByUsername(idapp, usernameOrig).
then(async (friends) => {
let userprofile = null;
if (req.user) {
userprofile = await User.getExtraInfoByUsername(idapp, ris.username);
} else {
userprofile = await User.getProfilePerActivitiesByUsername(idapp, ris.username);
ris.aportador_solidario = '';
ris.date_reg = '';
ris.email = '';
}
ris.profile = userprofile;
return { ris, friends };
}).then(tot => {
return res.send({ user: tot.ris, friends: tot.friends });
});
}).catch((e) => {
tools.mylog('ERRORE IN Profile: ' + e.message);
res.status(400).send();
});
} catch (e) {
tools.mylogserr('Error profile: ', e);
res.status(400).send();
}
});
router.post('/panel', authenticate, async (req, res) => { router.post('/panel', authenticate, async (req, res) => {
const username = req.body['username']; const username = req.body['username'];
idapp = req.body.idapp; idapp = req.body.idapp;

File diff suppressed because it is too large Load Diff