- Add to Friends
- remove from Friend list - Cancel Ask Friend .... OK !
This commit is contained in:
@@ -312,6 +312,7 @@ const UserSchema = new mongoose.Schema({
|
||||
rating: {type: Number},
|
||||
}],
|
||||
friends: [], // username
|
||||
req_friends: [], // username
|
||||
},
|
||||
|
||||
})
|
||||
@@ -1211,6 +1212,16 @@ UserSchema.statics.getUsernameFriendsByUsername = async function(
|
||||
}, {'profile.friends': 1}).then((rec) => rec ? rec._doc.profile.friends : []);
|
||||
};
|
||||
|
||||
UserSchema.statics.getUsernameReqFriendsByUsername = async function(
|
||||
idapp, username) {
|
||||
|
||||
return User.findOne({
|
||||
idapp, 'username': username,
|
||||
$or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}],
|
||||
}, {'profile.req_friends': 1}).
|
||||
then((rec) => rec ? rec._doc.profile.req_friends : []);
|
||||
};
|
||||
|
||||
UserSchema.statics.setFriendsCmd = async function(
|
||||
idapp, usernameOrig, usernameDest, cmd, value) {
|
||||
|
||||
@@ -1218,6 +1229,9 @@ UserSchema.statics.setFriendsCmd = async function(
|
||||
let update = {};
|
||||
if (cmd === shared_consts.FRIENDSCMD.SETTRUST) {
|
||||
|
||||
// Aggiungi alle amicizie
|
||||
await this.setFriendsCmd(idapp, usernameOrig, usernameDest, shared_consts.FRIENDSCMD.SETFRIEND, value);
|
||||
|
||||
return User.updateOne({idapp, username: usernameDest},
|
||||
{$set: {verified_by_aportador: value}}, {new: false});
|
||||
|
||||
@@ -1226,32 +1240,68 @@ UserSchema.statics.setFriendsCmd = async function(
|
||||
const foundIfAlreadyFriend = await User.findOne({
|
||||
idapp,
|
||||
username: usernameOrig,
|
||||
members: {
|
||||
$elemMatch: {'profile.friends': usernameDest},
|
||||
'profile.friends': {
|
||||
$elemMatch: {$eq: usernameDest},
|
||||
},
|
||||
});
|
||||
|
||||
if (!foundIfAlreadyFriend) {
|
||||
update = {$push: {'profile.friends': [usernameDest]}};
|
||||
ris = await User.updateOne({idapp, username: usernameOrig}, update);
|
||||
|
||||
update = {$pullAll: {'profile.req_friends': [usernameDest]}};
|
||||
ris = await User.updateOne({idapp, username: usernameOrig}, update);
|
||||
}
|
||||
|
||||
// Controlla se lui aveva già la mia amicizia
|
||||
const foundIfAlreadyFriend2 = await User.findOne({
|
||||
idapp,
|
||||
username: usernameDest,
|
||||
members: {
|
||||
$elemMatch: {'profile.friends': usernameOrig},
|
||||
'profile.friends': {
|
||||
$elemMatch: {$eq: usernameOrig},
|
||||
},
|
||||
});
|
||||
|
||||
if (!foundIfAlreadyFriend2) {
|
||||
update = {$push: {'profile.friends': [usernameOrig]}};
|
||||
ris = await User.updateOne({idapp, username: usernameDest}, update);
|
||||
|
||||
update = {$pullAll: {'profile.req_friends': [usernameOrig]}};
|
||||
ris = await User.updateOne({idapp, username: usernameDest}, update);
|
||||
}
|
||||
if (ris) {
|
||||
ris = await User.getInfoFriendByUsername(idapp, usernameDest);
|
||||
}
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.REQFRIEND) {
|
||||
// Aggiungo l'Amicizia a me
|
||||
const foundIfAlreadyAskFriend = await User.findOne({
|
||||
idapp,
|
||||
username: usernameDest,
|
||||
'profile.req_friends': {
|
||||
$elemMatch: {$eq: usernameOrig},
|
||||
},
|
||||
});
|
||||
|
||||
if (value) {
|
||||
if (!foundIfAlreadyAskFriend) {
|
||||
update = {$push: {'profile.req_friends': [usernameOrig]}};
|
||||
ris = await User.updateOne({idapp, username: usernameDest}, update);
|
||||
}
|
||||
if (ris) {
|
||||
// Invia una notifica alla persona
|
||||
tools.sendNotificationByUsername(idapp, usernameDest, cmd, true);
|
||||
}
|
||||
} else {
|
||||
if (foundIfAlreadyAskFriend) {
|
||||
update = {$pullAll: {'profile.req_friends': [usernameOrig]}};
|
||||
ris = await User.updateOne({idapp, username: usernameDest}, update);
|
||||
}
|
||||
}
|
||||
|
||||
if (ris) {
|
||||
ris = await User.getInfoAskFriendByUsername(idapp, usernameDest);
|
||||
}
|
||||
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS) {
|
||||
// Rimuovo l'Amicizia da lui
|
||||
await User.updateOne({idapp, username: usernameDest},
|
||||
@@ -1259,6 +1309,15 @@ UserSchema.statics.setFriendsCmd = async function(
|
||||
// Rimuovo l'Amicizia da me
|
||||
ris = await User.updateOne({idapp, username: usernameOrig},
|
||||
{$pullAll: {'profile.friends': [usernameDest]}});
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.CANCEL_REQ_FRIEND) {
|
||||
|
||||
// Rimuovo la Richiesta di Amicizia da lui
|
||||
await User.updateOne({idapp, username: usernameDest},
|
||||
{$pullAll: {'profile.req_friends': [usernameOrig]}});
|
||||
// Rimuovo l'Amicizia da me
|
||||
ris = await User.updateOne({idapp, username: usernameOrig},
|
||||
{$pullAll: {'profile.friends': [usernameDest]}});
|
||||
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.BLOCK_USER) {
|
||||
// Rimuovo l'Amicizia da lui
|
||||
await User.updateOne({idapp, username: usernameDest},
|
||||
@@ -1307,6 +1366,24 @@ function getWhatToShow(idapp, username) {
|
||||
|
||||
}
|
||||
|
||||
function getWhatToShow_Unknown(idapp, username) {
|
||||
return {
|
||||
username: 1,
|
||||
aportador_solidario: 1,
|
||||
name: 1,
|
||||
// deleted: 1,
|
||||
// sospeso: 1,
|
||||
verified_email: 1,
|
||||
verified_by_aportador: 1,
|
||||
'profile.img': 1,
|
||||
'profile.sex': 1,
|
||||
'profile.born_province': 1,
|
||||
'profile.born_country': 1,
|
||||
date_reg: 1,
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
UserSchema.statics.getInfoFriendByUsername = async function(idapp, username) {
|
||||
|
||||
const whatToShow = getWhatToShow(idapp, username);
|
||||
@@ -1318,25 +1395,99 @@ UserSchema.statics.getInfoFriendByUsername = async function(idapp, username) {
|
||||
}, whatToShow).then((rec) => !!rec ? rec._doc : null);
|
||||
|
||||
};
|
||||
|
||||
UserSchema.statics.getInfoAskFriendByUsername = async function(
|
||||
idapp, username) {
|
||||
|
||||
const whatToShow = getWhatToShow_Unknown(idapp, username);
|
||||
|
||||
return User.findOne({
|
||||
idapp,
|
||||
username,
|
||||
$or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}],
|
||||
}, whatToShow).then((rec) => !!rec ? rec._doc : null);
|
||||
|
||||
};
|
||||
|
||||
UserSchema.statics.getAskedFriendsByUsername = async function(idapp, username) {
|
||||
|
||||
const whatToShow_Unknown = getWhatToShow_Unknown(idapp, username);
|
||||
|
||||
return User.find({
|
||||
idapp,
|
||||
'profile.req_friends': {
|
||||
$elemMatch: {$eq: username},
|
||||
},
|
||||
$or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}],
|
||||
}, whatToShow_Unknown).then((rec) => {
|
||||
|
||||
//return rec.map(m => m.username);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
UserSchema.statics.getFriendsByUsername = async function(idapp, username) {
|
||||
|
||||
try {
|
||||
const whatToShow = getWhatToShow(idapp, username);
|
||||
const whatToShow_Unknown = getWhatToShow_Unknown(idapp, username);
|
||||
const arrUsernameFriends = await User.getUsernameFriendsByUsername(idapp,
|
||||
username);
|
||||
const arrUsernameReqFriends = await User.getUsernameReqFriendsByUsername(
|
||||
idapp, username);
|
||||
|
||||
const listFriends = await User.find({
|
||||
let listFriends = await User.find({
|
||||
idapp,
|
||||
username: {$in: arrUsernameFriends},
|
||||
$or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}],
|
||||
$or: [
|
||||
{deleted: {$exists: false}},
|
||||
{deleted: {$exists: true, $eq: false}}],
|
||||
}, whatToShow);
|
||||
|
||||
const listTrusted = await User.find({
|
||||
let listRequestFriends = await User.find({
|
||||
idapp,
|
||||
username: {$in: arrUsernameReqFriends},
|
||||
$or: [
|
||||
{deleted: {$exists: false}},
|
||||
{deleted: {$exists: true, $eq: false}}],
|
||||
}, whatToShow_Unknown);
|
||||
|
||||
let listSentRequestFriends = await User.find({
|
||||
idapp,
|
||||
'profile.req_friends': {
|
||||
$elemMatch: {$eq: username},
|
||||
},
|
||||
$or: [
|
||||
{deleted: {$exists: false}},
|
||||
{deleted: {$exists: true, $eq: false}}],
|
||||
}, whatToShow_Unknown);
|
||||
|
||||
let listTrusted = await User.find({
|
||||
idapp, aportador_solidario: username,
|
||||
$or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}],
|
||||
$or: [
|
||||
{deleted: {$exists: false}},
|
||||
{deleted: {$exists: true, $eq: false}}],
|
||||
}, whatToShow);
|
||||
|
||||
return ({listFriends, listTrusted});
|
||||
|
||||
return {
|
||||
listFriends,
|
||||
listRequestFriends,
|
||||
listTrusted,
|
||||
listSentRequestFriends,
|
||||
};
|
||||
|
||||
} catch (e) {
|
||||
console.log('Error', e);
|
||||
}
|
||||
|
||||
return {
|
||||
listFriends: [],
|
||||
listRequestFriends: [],
|
||||
listTrusted: [],
|
||||
listSentRequestFriends: [],
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
UserSchema.statics.getAportadorSolidarioByUsername = async function(
|
||||
@@ -1769,7 +1920,8 @@ UserSchema.statics.getFieldsForSearchUserFriend = function() {
|
||||
UserSchema.statics.executeQueryTable = function(idapp, params) {
|
||||
params.fieldsearch = this.getFieldsForSearch();
|
||||
if (params.options) {
|
||||
if (tools.isBitActive(params.options, shared_consts.OPTIONS_SEARCH_ONLY_FULL_WORDS)) {
|
||||
if (tools.isBitActive(params.options,
|
||||
shared_consts.OPTIONS_SEARCH_ONLY_FULL_WORDS)) {
|
||||
params.fieldsearch = this.getFieldsForSearchUserFriend();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1333,6 +1333,10 @@ function load(req, res, version) {
|
||||
orderscart = OrdersCart.getOrdersCartByUserId(req.user.id, idapp, 0);
|
||||
}
|
||||
}
|
||||
let askedfriends = []
|
||||
if (req.user) {
|
||||
// askedfriends = User.getAskedFriendsByUsername(idapp, req.user.username);
|
||||
}
|
||||
|
||||
return Promise.all([
|
||||
bookedevent,
|
||||
@@ -1368,8 +1372,11 @@ function load(req, res, version) {
|
||||
// console.table(arrdata);
|
||||
const myuser = req.user;
|
||||
if (myuser) {
|
||||
try {
|
||||
myuser.password = '';
|
||||
myuser._doc.calcstat = arrdata[13];
|
||||
// myuser._doc.profile.asked_friends = arrdata[30];
|
||||
} catch (e) {}
|
||||
}
|
||||
if (version < 91) {
|
||||
res.send({
|
||||
|
||||
@@ -8,6 +8,8 @@ require('../config/config');
|
||||
|
||||
require('../models/subscribers');
|
||||
|
||||
const printf = require('util').format;
|
||||
|
||||
const Site = require('../models/site');
|
||||
|
||||
const CryptoJS = require('crypto-js');
|
||||
@@ -117,9 +119,9 @@ const textlang = {
|
||||
'NAVE': 'NAVE',
|
||||
'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',
|
||||
},
|
||||
si: {
|
||||
},
|
||||
si: {},
|
||||
es: {
|
||||
'L\'Email è già stata Verificata': 'El correo electrónico ya ha sido verificado',
|
||||
'Nuova Registrazione': 'Nuevo Registro',
|
||||
@@ -670,11 +672,12 @@ module.exports = {
|
||||
publicKey: process.env.PUBLIC_VAPI_KEY,
|
||||
},
|
||||
TTL: payload.ttl,
|
||||
headers: {}
|
||||
headers: {},
|
||||
};
|
||||
|
||||
// Pass object into sendNotification
|
||||
return webpush.sendNotification(subscription, JSON.stringify(payload), pushOptions).
|
||||
return webpush.sendNotification(subscription, JSON.stringify(payload),
|
||||
pushOptions).
|
||||
catch(err => {
|
||||
if (err.statusCode === 410) {
|
||||
// Gone: is not valid anymore (Expired probably!), so I have to delete from my db
|
||||
@@ -794,6 +797,45 @@ module.exports = {
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
sendNotificationByUsername: async function(idapp, username, cmd, telegram) {
|
||||
|
||||
var {User} = require('../models/user');
|
||||
|
||||
const user = await User.findOne({idapp, username}, {_id: 1, lang: 1});
|
||||
if (!user)
|
||||
return;
|
||||
|
||||
let userId = user._id;
|
||||
let lang = user.lang;
|
||||
|
||||
let title = this.getNomeAppByIdApp(idapp);
|
||||
let descr = '';
|
||||
let openUrl = '/';
|
||||
let tag = '';
|
||||
let actions = [];
|
||||
if (cmd) {
|
||||
if (cmd === shared_consts.FRIENDSCMD.REQFRIEND) {
|
||||
descr = printf(this.get__('RICHIESTA_AMICIZIA', lang) , username);
|
||||
openUrl = '/my/' + username;
|
||||
tag = 'reqfriends';
|
||||
}
|
||||
}
|
||||
|
||||
if (userId) {
|
||||
this.sendNotificationToUser(userId, title, descr, openUrl, '', tag, actions);
|
||||
}
|
||||
|
||||
if (telegram) {
|
||||
const telegrambot = require('../telegram/telegrambot');
|
||||
|
||||
const idtelegram = await User.TelegIdByUsername(idapp, username);
|
||||
|
||||
await telegrambot.sendMsgTelegramByIdTelegram(idapp, idtelegram, descr);
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
// **********************
|
||||
// SORT WITH PREV_ID
|
||||
// **********************
|
||||
@@ -929,7 +971,8 @@ module.exports = {
|
||||
const myapp =
|
||||
this.getApps().find(item => item.idapp === idapp);
|
||||
if (myapp) {
|
||||
let siteport = (myapp.portapp && myapp.portapp !== '0') ? (':' + myapp.portapp) : '';
|
||||
let siteport = (myapp.portapp && myapp.portapp !== '0') ? (':' +
|
||||
myapp.portapp) : '';
|
||||
|
||||
if (process.env.NODE_ENV === 'test')
|
||||
return myapp.host_test + siteport;
|
||||
@@ -1035,14 +1078,14 @@ module.exports = {
|
||||
},
|
||||
|
||||
getLookup: function(params, num, pass_proj) {
|
||||
const query = []
|
||||
const query = [];
|
||||
|
||||
if (!params)
|
||||
return;
|
||||
|
||||
let mylkLF = params.lk_LF;
|
||||
if (params.af_objId_tab) {
|
||||
const myobj = {}
|
||||
const myobj = {};
|
||||
myobj['myId' + num] = {'$toObjectId': '$' + params.lk_LF};
|
||||
query.push(
|
||||
{'$addFields': myobj},
|
||||
@@ -1053,9 +1096,9 @@ module.exports = {
|
||||
}
|
||||
|
||||
if (params.lk_tab) {
|
||||
let proj = params.lk_proj
|
||||
let proj = params.lk_proj;
|
||||
if (!!pass_proj) {
|
||||
proj = pass_proj
|
||||
proj = pass_proj;
|
||||
}
|
||||
query.push(
|
||||
{
|
||||
@@ -1096,7 +1139,6 @@ module.exports = {
|
||||
|
||||
let query = [];
|
||||
|
||||
|
||||
if (params.filter && params.fieldsearch) {
|
||||
|
||||
let myregexp = {};
|
||||
@@ -1160,9 +1202,11 @@ module.exports = {
|
||||
if (params.filterand.includes(
|
||||
shared_consts.FILTER_USER_CODICE_AUTH_TELEGRAM))
|
||||
filtriadded.push({'profile.teleg_checkcode': {$gt: 1}});
|
||||
if (params.filterand.includes(shared_consts.FILTER_USER_NO_EMAIL_VERIFICATA))
|
||||
if (params.filterand.includes(
|
||||
shared_consts.FILTER_USER_NO_EMAIL_VERIFICATA))
|
||||
filtriadded.push({verified_email: false});
|
||||
if (params.filterand.includes(shared_consts.FILTER_USER_NO_VERIFIED_APORTADOR))
|
||||
if (params.filterand.includes(
|
||||
shared_consts.FILTER_USER_NO_VERIFIED_APORTADOR))
|
||||
filtriadded.push({
|
||||
$or: [
|
||||
{verified_by_aportador: {$exists: false}},
|
||||
@@ -1245,8 +1289,8 @@ module.exports = {
|
||||
|
||||
if (params.filtercustom) {
|
||||
for (const myfilter of params.filtercustom) {
|
||||
if (myfilter["userId"]) {
|
||||
myfilter["userId"] = ObjectID(myfilter["userId"]);
|
||||
if (myfilter['userId']) {
|
||||
myfilter['userId'] = ObjectID(myfilter['userId']);
|
||||
}
|
||||
filtriadded.push(myfilter);
|
||||
}
|
||||
@@ -1257,7 +1301,8 @@ module.exports = {
|
||||
}
|
||||
|
||||
if (params.options) {
|
||||
if (this.isBitActive(params.options, shared_consts.OPTIONS_SEARCH_ONLY_FULL_WORDS)) {
|
||||
if (this.isBitActive(params.options,
|
||||
shared_consts.OPTIONS_SEARCH_ONLY_FULL_WORDS)) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1286,13 +1331,12 @@ module.exports = {
|
||||
if (numrowend < 0)
|
||||
numrowend = 1;
|
||||
|
||||
|
||||
if (newvers) {
|
||||
// NUOVA VERSIONE
|
||||
let proj = params.lookup2 ? params.lookup2.lk_proj : null;
|
||||
|
||||
const q1 = this.getLookup(params.lookup1, 1, proj);
|
||||
if (q1) query = [...query, ...q1]
|
||||
if (q1) query = [...query, ...q1];
|
||||
|
||||
const q2 = this.getLookup(params.lookup2, 2, proj);
|
||||
if (q2) query = [...query, ...q2];
|
||||
@@ -1312,10 +1356,9 @@ module.exports = {
|
||||
} else {
|
||||
// VECCHIA VERSIONE
|
||||
const q1 = this.getLookup(params, 1);
|
||||
if (q1) query = [...query, ...q1]
|
||||
if (q1) query = [...query, ...q1];
|
||||
}
|
||||
|
||||
|
||||
query.push(
|
||||
{
|
||||
$group: {
|
||||
@@ -1919,12 +1962,12 @@ module.exports = {
|
||||
}
|
||||
},
|
||||
|
||||
extractFileName: function (filename) {
|
||||
return path.basename(filename)
|
||||
extractFileName: function(filename) {
|
||||
return path.basename(filename);
|
||||
},
|
||||
|
||||
extractFilePath: function (filename) {
|
||||
return path.dirname(filename)
|
||||
extractFilePath: function(filename) {
|
||||
return path.dirname(filename);
|
||||
},
|
||||
|
||||
delete(mypath, alsothumb, callback) {
|
||||
@@ -1932,7 +1975,8 @@ module.exports = {
|
||||
fs.unlink(mypath, function(err) {
|
||||
if (alsothumb) {
|
||||
try {
|
||||
let img_small = path.dirname(mypath) + '/' + server_constants.PREFIX_IMG_SMALL + path.basename(mypath);
|
||||
let img_small = path.dirname(mypath) + '/' +
|
||||
server_constants.PREFIX_IMG_SMALL + path.basename(mypath);
|
||||
fs.unlink(img_small, () => {});
|
||||
} catch (e) {
|
||||
console.error(err);
|
||||
@@ -2212,7 +2256,7 @@ module.exports = {
|
||||
versionarr = versionarr.reverse();
|
||||
|
||||
for (let i = 0; i < versionarr.length; i++) {
|
||||
version += versionarr[i] * Math.pow(10, i*2);
|
||||
version += versionarr[i] * Math.pow(10, i * 2);
|
||||
}
|
||||
|
||||
return parseInt(version);
|
||||
@@ -2222,8 +2266,8 @@ module.exports = {
|
||||
return mystr.replace(/-/g, '/');
|
||||
},
|
||||
|
||||
isNumber(n){
|
||||
return typeof(n) != "boolean" && !isNaN(n) && n;
|
||||
isNumber(n) {
|
||||
return typeof (n) != 'boolean' && !isNaN(n) && n;
|
||||
},
|
||||
getNumObj(obj) {
|
||||
let count = 0;
|
||||
|
||||
@@ -36,9 +36,13 @@ module.exports = {
|
||||
|
||||
FRIENDSCMD: {
|
||||
SETTRUST: 121,
|
||||
REQFRIEND: 125,
|
||||
SETFRIEND: 132,
|
||||
REMOVE_FROM_MYFRIENDS: 144,
|
||||
REFUSE_REQ_FRIEND: 145,
|
||||
CANCEL_REQ_FRIEND: 146,
|
||||
BLOCK_USER: 155,
|
||||
FIND_PEOPLE: 166,
|
||||
},
|
||||
|
||||
REPORT_FILT_RESP: 1,
|
||||
|
||||
Reference in New Issue
Block a user