Richieste d'Amicizia: aggiunto data di richiesta e di amicizia
This commit is contained in:
@@ -138,6 +138,9 @@ const UserSchema = new mongoose.Schema({
|
||||
verified_by_aportador: {
|
||||
type: Boolean,
|
||||
},
|
||||
trust_modified: {
|
||||
type: Date,
|
||||
},
|
||||
aportador_iniziale: {
|
||||
type: String,
|
||||
},
|
||||
@@ -311,10 +314,19 @@ const UserSchema = new mongoose.Schema({
|
||||
description: {type: String},
|
||||
rating: {type: Number},
|
||||
}],
|
||||
friends: [], // username
|
||||
req_friends: [], // username
|
||||
friends: [
|
||||
{
|
||||
_id: false,
|
||||
username: {type: String},
|
||||
date: {type: Date},
|
||||
}], // username
|
||||
req_friends: [
|
||||
{
|
||||
_id: false,
|
||||
username: {type: String},
|
||||
date: {type: Date},
|
||||
}], // username
|
||||
},
|
||||
|
||||
})
|
||||
;
|
||||
|
||||
@@ -1203,23 +1215,50 @@ UserSchema.statics.getUserProfileByUsername = async function(idapp, username) {
|
||||
|
||||
};
|
||||
|
||||
UserSchema.statics.getUsernameFriendsByUsername = async function(
|
||||
idapp, username) {
|
||||
UserSchema.statics.getArrUsernameFromFieldByUsername = async function(
|
||||
idapp, username, field, subfield) {
|
||||
|
||||
return User.findOne({
|
||||
const myobj = {};
|
||||
myobj[field + '.' + subfield] = 1;
|
||||
|
||||
let arrrec = await User.findOne({
|
||||
idapp, 'username': username,
|
||||
$or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}],
|
||||
}, {'profile.friends': 1}).then((rec) => rec ? rec._doc.profile.friends : []);
|
||||
}, myobj).then((ris) => ris ? ris._doc[field][subfield] : []);
|
||||
|
||||
if (arrrec.length > 0) {
|
||||
return arrrec.map(m => m.username);
|
||||
}
|
||||
return [];
|
||||
|
||||
};
|
||||
|
||||
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 : []);
|
||||
return this.getArrUsernameFromFieldByUsername(idapp, username, 'profile',
|
||||
'req_friends');
|
||||
|
||||
};
|
||||
|
||||
UserSchema.statics.getUsernameFriendsByUsername = async function(
|
||||
idapp, username) {
|
||||
|
||||
return this.getArrUsernameFromFieldByUsername(idapp, username, 'profile',
|
||||
'friends');
|
||||
|
||||
};
|
||||
|
||||
// Rimuovo l'Amicizia
|
||||
UserSchema.statics.removeFriend = async function(idapp, username, usernameDest) {
|
||||
return User.updateOne({idapp, username},
|
||||
{$pull: {'profile.friends': {username: {$in: [usernameDest]}}}});
|
||||
};
|
||||
|
||||
// Rimuovo la Richiesta di Amicizia
|
||||
UserSchema.statics.removeReqFriend = async function(idapp, username, usernameDest) {
|
||||
return User.updateOne({idapp, username: username},
|
||||
{$pull: {'profile.req_friends': {username: {$in: [usernameDest]}}}});
|
||||
};
|
||||
|
||||
UserSchema.statics.setFriendsCmd = async function(
|
||||
@@ -1227,114 +1266,130 @@ UserSchema.statics.setFriendsCmd = async function(
|
||||
|
||||
let ris = null;
|
||||
let update = {};
|
||||
if (cmd === shared_consts.FRIENDSCMD.SETTRUST) {
|
||||
try {
|
||||
if (cmd === shared_consts.FRIENDSCMD.SETTRUST) {
|
||||
|
||||
// Aggiungi alle amicizie
|
||||
await this.setFriendsCmd(idapp, usernameOrig, usernameDest, shared_consts.FRIENDSCMD.SETFRIEND, value);
|
||||
// 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});
|
||||
return User.updateOne({idapp, username: usernameDest},
|
||||
{$set: {verified_by_aportador: value, trust_modified: new Date()}},
|
||||
{new: false});
|
||||
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.SETFRIEND) {
|
||||
// Aggiungo l'Amicizia a me
|
||||
const foundIfAlreadyFriend = await User.findOne({
|
||||
idapp,
|
||||
username: usernameOrig,
|
||||
'profile.friends': {
|
||||
$elemMatch: {$eq: usernameDest},
|
||||
},
|
||||
});
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.SETFRIEND) {
|
||||
// Aggiungo l'Amicizia a me
|
||||
const foundIfAlreadyFriend = await User.findOne({
|
||||
idapp,
|
||||
username: usernameOrig,
|
||||
'profile.friends': {
|
||||
$elemMatch: {$eq: {username: usernameDest}},
|
||||
},
|
||||
});
|
||||
|
||||
if (!foundIfAlreadyFriend) {
|
||||
update = {$push: {'profile.friends': [usernameDest]}};
|
||||
ris = await User.updateOne({idapp, username: usernameOrig}, update);
|
||||
if (!foundIfAlreadyFriend) {
|
||||
update = {
|
||||
$push: {
|
||||
'profile.friends': {
|
||||
username: usernameDest,
|
||||
date: new Date(),
|
||||
},
|
||||
},
|
||||
};
|
||||
ris = await User.updateOne({idapp, username: usernameOrig}, update);
|
||||
|
||||
update = {$pullAll: {'profile.req_friends': [usernameDest]}};
|
||||
ris = await User.updateOne({idapp, username: usernameOrig}, update);
|
||||
}
|
||||
update = {$pull: {'profile.req_friends': {username: {$in: [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,
|
||||
'profile.friends': {
|
||||
$elemMatch: {$eq: usernameOrig},
|
||||
},
|
||||
});
|
||||
// Controlla se lui aveva già la mia amicizia
|
||||
const foundIfAlreadyFriend2 = await User.findOne({
|
||||
idapp,
|
||||
username: usernameDest,
|
||||
'profile.friends': {
|
||||
$elemMatch: {$eq: {username: 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]}};
|
||||
if (!foundIfAlreadyFriend2) {
|
||||
update = {
|
||||
$push: {
|
||||
'profile.friends': {
|
||||
username: usernameOrig,
|
||||
date: new Date(),
|
||||
},
|
||||
},
|
||||
};
|
||||
ris = await User.updateOne({idapp, username: usernameDest}, update);
|
||||
|
||||
this.removeReqFriend(idapp, usernameDest, usernameOrig); // Rimuovo l'Amicizia da me
|
||||
}
|
||||
if (ris) {
|
||||
// Invia una notifica alla persona
|
||||
tools.sendNotificationByUsername(idapp, usernameDest, cmd, true);
|
||||
ris = await User.getInfoFriendByUsername(idapp, usernameDest);
|
||||
}
|
||||
} else {
|
||||
if (foundIfAlreadyAskFriend) {
|
||||
update = {$pullAll: {'profile.req_friends': [usernameOrig]}};
|
||||
ris = await User.updateOne({idapp, username: usernameDest}, update);
|
||||
} 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: {username: usernameOrig}},
|
||||
},
|
||||
});
|
||||
|
||||
if (value) {
|
||||
if (!foundIfAlreadyAskFriend) {
|
||||
update = {
|
||||
$push: {
|
||||
'profile.req_friends': {
|
||||
username: usernameOrig,
|
||||
date: new Date(),
|
||||
},
|
||||
},
|
||||
};
|
||||
ris = await User.updateOne({idapp, username: usernameDest}, update);
|
||||
}
|
||||
if (ris) {
|
||||
// Invia una notifica alla persona
|
||||
tools.sendNotificationByUsername(idapp, usernameDest, cmd, true);
|
||||
}
|
||||
} else {
|
||||
if (foundIfAlreadyAskFriend) {
|
||||
ris = await this.removeFriend(idapp, usernameDest, usernameOrig); // Rimuovo l'Amicizia da me
|
||||
}
|
||||
}
|
||||
|
||||
if (ris) {
|
||||
ris = await User.getInfoAskFriendByUsername(idapp, usernameDest);
|
||||
}
|
||||
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS) {
|
||||
|
||||
await this.removeFriend(idapp, usernameDest, usernameOrig); // Rimuovo l'Amicizia da lui
|
||||
ris = await this.removeFriend(idapp, usernameOrig, usernameDest); // Rimuovo l'Amicizia da me
|
||||
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.CANCEL_REQ_FRIEND) {
|
||||
|
||||
await this.removeReqFriend(idapp, usernameDest, usernameOrig); // Rimuovo la Richiesta di Amicizia da lui
|
||||
ris = await this.removeFriend(idapp, usernameOrig, usernameDest); // Rimuovo l'Amicizia da me
|
||||
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.BLOCK_USER) {
|
||||
|
||||
await this.removeFriend(idapp, usernameDest, usernameOrig); // Rimuovo l'Amicizia da lui
|
||||
await this.removeFriend(idapp, usernameOrig, usernameDest); // Rimuovo l'Amicizia da me
|
||||
|
||||
// Blocco la persona
|
||||
ris = await User.updateOne({idapp, username: usernameDest}, {
|
||||
$set: {
|
||||
blocked: true,
|
||||
sospeso: true,
|
||||
username_who_block: usernameOrig,
|
||||
date_blocked: new Date(),
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
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},
|
||||
{$pullAll: {'profile.friends': [usernameOrig]}});
|
||||
// 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},
|
||||
{$pullAll: {'profile.friends': [usernameOrig]}});
|
||||
// Rimuovo l'Amicizia da me
|
||||
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(),
|
||||
},
|
||||
});
|
||||
} catch (e) {
|
||||
console.error('Error: ', e);
|
||||
}
|
||||
|
||||
return ris;
|
||||
@@ -1416,7 +1471,7 @@ UserSchema.statics.getAskedFriendsByUsername = async function(idapp, username) {
|
||||
return User.find({
|
||||
idapp,
|
||||
'profile.req_friends': {
|
||||
$elemMatch: {$eq: username},
|
||||
$elemMatch: {$eq: {username: username}},
|
||||
},
|
||||
$or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}],
|
||||
}, whatToShow_Unknown).then((rec) => {
|
||||
@@ -1455,7 +1510,7 @@ UserSchema.statics.getFriendsByUsername = async function(idapp, username) {
|
||||
let listSentRequestFriends = await User.find({
|
||||
idapp,
|
||||
'profile.req_friends': {
|
||||
$elemMatch: {$eq: username},
|
||||
$elemMatch: {$eq: {username: username}},
|
||||
},
|
||||
$or: [
|
||||
{deleted: {$exists: false}},
|
||||
@@ -1469,7 +1524,6 @@ UserSchema.statics.getFriendsByUsername = async function(idapp, username) {
|
||||
{deleted: {$exists: true, $eq: false}}],
|
||||
}, whatToShow);
|
||||
|
||||
|
||||
return {
|
||||
listFriends,
|
||||
listRequestFriends,
|
||||
@@ -1487,7 +1541,7 @@ UserSchema.statics.getFriendsByUsername = async function(idapp, username) {
|
||||
listTrusted: [],
|
||||
listSentRequestFriends: [],
|
||||
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
UserSchema.statics.getAportadorSolidarioByUsername = async function(
|
||||
|
||||
Reference in New Issue
Block a user