Friends, search

This commit is contained in:
paoloar77
2022-01-12 00:38:47 +01:00
parent 3b6218d2ba
commit 4158731731
5 changed files with 75 additions and 22 deletions

View File

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

View File

@@ -1585,7 +1585,7 @@ function uploadFile(req, res, version) {
form.on('file', async function(name, file) { form.on('file', async function(name, file) {
try { try {
console.log('Uploaded ' + file.name); console.log('Uploaded ' + file.name);
const mydir = tools.getdirByIdApp(idapp) + dirmain + '/upload/' + dir; const mydir = tools.getdirByIdApp(idapp) + dirmain + server_constants.DIR_UPLOAD + '/' + dir;
// Create Dir if doesn't exist: // Create Dir if doesn't exist:
tools.mkdirpath(mydir); tools.mkdirpath(mydir);

View File

@@ -1256,6 +1256,12 @@ module.exports = {
filtriadded.push(...params.filtersearch); filtriadded.push(...params.filtersearch);
} }
if (params.options) {
if (this.isBitActive(params.options, shared_consts.OPTIONS_SEARCH_ONLY_FULL_WORDS)) {
}
}
if (filtriadded) { if (filtriadded) {
if (filtriadded.length > 0) if (filtriadded.length > 0)
query.push({$match: {$and: filtriadded}}); query.push({$match: {$and: filtriadded}});

View File

@@ -94,6 +94,8 @@ module.exports = Object.freeze({
PREFIX_IMG: 'm_', PREFIX_IMG: 'm_',
PREFIX_IMG_SMALL: 'sm_', PREFIX_IMG_SMALL: 'sm_',
DIR_UPLOAD: '/upload', //'/upload'
Privacy: { Privacy: {
all: 'all', all: 'all',
friends: 'friends', friends: 'friends',

View File

@@ -32,6 +32,8 @@ module.exports = {
FILTER_MYSKILL_SKILL: 1, FILTER_MYSKILL_SKILL: 1,
OPTIONS_SEARCH_ONLY_FULL_WORDS: 1,
FRIENDSCMD: { FRIENDSCMD: {
SETTRUST: 121, SETTRUST: 121,
SETFRIEND: 132, SETFRIEND: 132,