- 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) {
|
||||
|
||||
const whatToShow = getWhatToShow(idapp, username);
|
||||
const arrUsernameFriends = await User.getUsernameFriendsByUsername(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({
|
||||
idapp,
|
||||
username: {$in: arrUsernameFriends},
|
||||
$or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}],
|
||||
}, whatToShow);
|
||||
let listFriends = await User.find({
|
||||
idapp,
|
||||
username: {$in: arrUsernameFriends},
|
||||
$or: [
|
||||
{deleted: {$exists: false}},
|
||||
{deleted: {$exists: true, $eq: false}}],
|
||||
}, whatToShow);
|
||||
|
||||
const listTrusted = await User.find({
|
||||
idapp, aportador_solidario: username,
|
||||
$or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}],
|
||||
}, whatToShow);
|
||||
let listRequestFriends = await User.find({
|
||||
idapp,
|
||||
username: {$in: arrUsernameReqFriends},
|
||||
$or: [
|
||||
{deleted: {$exists: false}},
|
||||
{deleted: {$exists: true, $eq: false}}],
|
||||
}, whatToShow_Unknown);
|
||||
|
||||
return ({listFriends, listTrusted});
|
||||
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}}],
|
||||
}, whatToShow);
|
||||
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user