|
|
|
|
@@ -1211,62 +1211,79 @@ UserSchema.statics.getUsernameFriendsByUsername = async function(
|
|
|
|
|
}, {'profile.friends': 1}).then((rec) => rec ? rec._doc.profile.friends : []);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
UserSchema.statics.setFriendsCmd = async function(idapp, usernameOrig, usernameDest, cmd, value) {
|
|
|
|
|
UserSchema.statics.setFriendsCmd = async function(
|
|
|
|
|
idapp, usernameOrig, usernameDest, cmd, value) {
|
|
|
|
|
|
|
|
|
|
let ris = null;
|
|
|
|
|
let update = { };
|
|
|
|
|
let update = {};
|
|
|
|
|
if (cmd === shared_consts.FRIENDSCMD.SETTRUST) {
|
|
|
|
|
|
|
|
|
|
return User.updateOne({idapp, username: usernameDest},
|
|
|
|
|
{ $set: { verified_by_aportador: value } }, { new: false } );
|
|
|
|
|
{$set: {verified_by_aportador: value}}, {new: false});
|
|
|
|
|
|
|
|
|
|
} else if (cmd === shared_consts.FRIENDSCMD.SETFRIEND) {
|
|
|
|
|
// Aggiungo l'Amicizia a me
|
|
|
|
|
const foundIfAlreadyFriend = await User.findOne({
|
|
|
|
|
idapp,
|
|
|
|
|
username: usernameOrig,
|
|
|
|
|
members: {
|
|
|
|
|
$elemMatch: { 'profile.friends': usernameOrig }
|
|
|
|
|
}
|
|
|
|
|
$elemMatch: {'profile.friends': usernameDest},
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
update = { $push: { 'profile.friends': [usernameOrig] } };
|
|
|
|
|
if (!foundIfAlreadyFriend) {
|
|
|
|
|
update = {$push: {'profile.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 }
|
|
|
|
|
}
|
|
|
|
|
$elemMatch: {'profile.friends': usernameOrig},
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
update = { $push: { 'profile.friends': [usernameOrig] } };
|
|
|
|
|
if (!foundIfAlreadyFriend) {
|
|
|
|
|
ris = await User.updateOne({idapp, username: usernameOrig}, update);
|
|
|
|
|
if (!foundIfAlreadyFriend2) {
|
|
|
|
|
update = {$push: {'profile.friends': [usernameOrig]}};
|
|
|
|
|
ris = await User.updateOne({idapp, username: usernameDest}, update);
|
|
|
|
|
}
|
|
|
|
|
if (ris) {
|
|
|
|
|
ris = await User.getInfoFriendByUsername(idapp, usernameDest);
|
|
|
|
|
}
|
|
|
|
|
} else if (cmd === shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS) {
|
|
|
|
|
// Rimuovo l'Amicizia da lui
|
|
|
|
|
await User.updateOne({idapp, username: usernameDest}, { $pullAll: { 'profile.friends': [usernameOrig] } });
|
|
|
|
|
await User.updateOne({idapp, username: usernameDest},
|
|
|
|
|
{$pullAll: {'profile.friends': [usernameOrig]}});
|
|
|
|
|
// Rimuovo l'Amicizia da me
|
|
|
|
|
ris = await User.updateOne({idapp, username: usernameOrig}, { $pullAll: { 'profile.friends': [usernameDest] } });
|
|
|
|
|
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}, { $pullAll: { 'profile.friends': [usernameOrig] } });
|
|
|
|
|
await User.updateOne({idapp, username: usernameDest},
|
|
|
|
|
{$pullAll: {'profile.friends': [usernameOrig]}});
|
|
|
|
|
// Rimuovo l'Amicizia da me
|
|
|
|
|
await User.updateOne({idapp, username: usernameOrig}, { $pullAll: { 'profile.friends': [usernameDest] } });
|
|
|
|
|
await User.updateOne({idapp, username: usernameOrig},
|
|
|
|
|
{$pullAll: {'profile.friends': [usernameDest]}});
|
|
|
|
|
|
|
|
|
|
// Blocco la persona
|
|
|
|
|
ris = await User.updateOne({idapp, username: usernameDest}, { $set: { blocked: true, sospeso: true, username_who_block: usernameOrig, date_blocked: new Date() } });
|
|
|
|
|
ris = await User.updateOne({idapp, username: usernameDest}, {
|
|
|
|
|
$set: {
|
|
|
|
|
blocked: true,
|
|
|
|
|
sospeso: true,
|
|
|
|
|
username_who_block: usernameOrig,
|
|
|
|
|
date_blocked: new Date(),
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ris;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UserSchema.statics.getFriendsByUsername = async function(idapp, username) {
|
|
|
|
|
|
|
|
|
|
const whatToShow = {
|
|
|
|
|
function getWhatToShow(idapp, username) {
|
|
|
|
|
//++Todo: check which data to show
|
|
|
|
|
return {
|
|
|
|
|
username: 1,
|
|
|
|
|
aportador_solidario: 1,
|
|
|
|
|
name: 1,
|
|
|
|
|
@@ -1288,7 +1305,24 @@ UserSchema.statics.getFriendsByUsername = async function(idapp, username) {
|
|
|
|
|
date_reg: 1,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const arrUsernameFriends = await User.getUsernameFriendsByUsername(idapp, username);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UserSchema.statics.getInfoFriendByUsername = async function(idapp, username) {
|
|
|
|
|
|
|
|
|
|
const whatToShow = getWhatToShow(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.getFriendsByUsername = async function(idapp, username) {
|
|
|
|
|
|
|
|
|
|
const whatToShow = getWhatToShow(idapp, username);
|
|
|
|
|
const arrUsernameFriends = await User.getUsernameFriendsByUsername(idapp,
|
|
|
|
|
username);
|
|
|
|
|
|
|
|
|
|
const listFriends = await User.find({
|
|
|
|
|
idapp,
|
|
|
|
|
@@ -1728,8 +1762,17 @@ UserSchema.statics.getFieldsForSearch = function() {
|
|
|
|
|
{field: 'aportador_solidario', type: tools.FieldType.string}];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
UserSchema.statics.getFieldsForSearchUserFriend = function() {
|
|
|
|
|
return [{field: 'username', type: tools.FieldType.exact}];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
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)) {
|
|
|
|
|
params.fieldsearch = this.getFieldsForSearchUserFriend();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return tools.executeQueryTable(this, idapp, params);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|