diff --git a/src/server/models/city.js b/src/server/models/city.js index 8ae837c..05eef5d 100755 --- a/src/server/models/city.js +++ b/src/server/models/city.js @@ -181,6 +181,7 @@ CitySchema.statics.executeQueryPickup = async function(idapp, params) { }; + CitySchema.statics.findAllIdApp = async function(idapp) { const myfind = {}; diff --git a/src/server/models/mygroup.js b/src/server/models/mygroup.js index b3edf97..d253428 100755 --- a/src/server/models/mygroup.js +++ b/src/server/models/mygroup.js @@ -368,6 +368,54 @@ MyGroupSchema.statics.getGroupsByUsername = async function(idapp, username, req) }; }; +MyGroupSchema.statics.extractCitiesName = async function(idapp, id) { + + try { + let aggr1 = [ + { + $match: {idapp, _id: id}, + }, + { + $lookup: { + from: 'cities', + localField: 'idCity', + foreignField: '_id', + as: 'mycities', + }, + }, + { + '$replaceRoot': { + 'newRoot': { + '$mergeObjects': [ + { + '$arrayElemAt': [ + '$mycities', + 0, + ], + }, + '$$ROOT', + ], + }, + }, + }, + { + $project: { + "mycities.comune": 1, + "mycities.prov": 1 + }, + }, + ]; + + ris = await this.aggregate(aggr1); + + return ris; + }catch (e) { + console.error('e', e); + } + +}; + + const MyGroup = mongoose.model('MyGroup', MyGroupSchema); module.exports = {MyGroup}; diff --git a/src/server/models/user.js b/src/server/models/user.js index b8b2c7a..3abd8c5 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -1925,6 +1925,9 @@ UserSchema.statics.setGroupsCmd = async function(idapp, usernameOrig, groupnameD } else if (cmd === shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUP) { + // Remove if is also an Admin + await MyGroup.removeAdminOfMyGroup(idapp, usernameOrig, groupnameDest); + ris = await User.removeFromMyGroups(idapp, usernameOrig, groupnameDest); // Rimuovo l'Amicizia da me console.log('ris', ris); @@ -2059,6 +2062,9 @@ UserSchema.statics.getWhatToShow_IfFriends = async function(idapp, username) { 'profile.sex': 1, 'profile.born_province': 1, 'profile.born_country': 1, + reported: 1, + date_report: 1, + username_who_report: 1, date_reg: 1, groups: 1, friends: 1, diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index c9b7649..b4539be 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -340,23 +340,29 @@ router.post('/settable', authenticate, async (req, res) => { let typeid = 0; let groupnameDest = ''; - if (shared_consts.TABLES_ADV_NOTIFICATION.includes(params.table)) { - typedir = shared_consts.TypeNotifs.TYPEDIR_BACHECA; - typeid = (params.table === shared_consts.TABLES_MYGOODS) ? shared_consts.TypeNotifs.ID_BACHECA_NEW_GOOD : shared_consts.TypeNotifs.ID_BACHECA_NEW_SERVICE - setnotif = true; - } + if (isnewrec) { + // New Record created - if (shared_consts.TABLES_EVENTS_NOTIFICATION.includes(params.table)) { - typedir = shared_consts.TypeNotifs.TYPEDIR_EVENTS; - typeid = shared_consts.TypeNotifs.ID_EVENTS_NEW_REC; - setnotif = true; - } + if (shared_consts.TABLES_ADV_NOTIFICATION.includes(params.table)) { + typedir = shared_consts.TypeNotifs.TYPEDIR_BACHECA; + typeid = (params.table === shared_consts.TABLES_MYGOODS) + ? shared_consts.TypeNotifs.ID_BACHECA_NEW_GOOD + : shared_consts.TypeNotifs.ID_BACHECA_NEW_SERVICE + setnotif = true; + } - if (shared_consts.TABLES_GROUPS_NOTIFICATION.includes(params.table)) { - typedir = shared_consts.TypeNotifs.TYPEDIR_GROUPS; - typeid = shared_consts.TypeNotifs.ID_GROUP_NEW_REC; - groupnameDest = myrec ? myrec.groupname : ''; - setnotif = true; + if (shared_consts.TABLES_EVENTS_NOTIFICATION.includes(params.table)) { + typedir = shared_consts.TypeNotifs.TYPEDIR_EVENTS; + typeid = shared_consts.TypeNotifs.ID_EVENTS_NEW_REC; + setnotif = true; + } + + if (shared_consts.TABLES_GROUPS_NOTIFICATION.includes(params.table)) { + typedir = shared_consts.TypeNotifs.TYPEDIR_GROUPS; + typeid = shared_consts.TypeNotifs.ID_GROUP_NEW_REC; + groupnameDest = myrec ? myrec.groupname : ''; + setnotif = true; + } } if (setnotif) { diff --git a/src/server/router/mygroups_router.js b/src/server/router/mygroups_router.js index 7031ed7..bbe18d8 100755 --- a/src/server/router/mygroups_router.js +++ b/src/server/router/mygroups_router.js @@ -44,6 +44,14 @@ router.post('/load', authenticate, async (req, res) => { const whatshow = MyGroup.getWhatToShow(idapp, req.user.username); let data = await MyGroup.findOne({idapp, groupname}, whatshow).lean(); + let cities = []; + if (data) { + cities = await MyGroup.extractCitiesName(idapp, data._id); + if (cities && cities.length > 0) { + cities = cities[0].mycities; + } + } + data = await getGroupRecAdminsInfo(idapp, data); const whatshowUsers = await User.getWhatToShow_IfFriends(idapp, req.user.username); @@ -56,9 +64,9 @@ router.post('/load', authenticate, async (req, res) => { }, }, whatshowUsers, - ); + ).lean(); - res.send({mygroup: data, users_in_group}); + res.send({mygroup: data, users_in_group, cities}); } catch (e) { console.error('Error in MyGroups', e); diff --git a/src/server/server.js b/src/server/server.js index 3ffc02f..47df4d3 100755 --- a/src/server/server.js +++ b/src/server/server.js @@ -192,7 +192,7 @@ myLoad().then(ris => { if (app.get('env') === 'development') { app.use(function(err, req, res, next) { - console.log('Error: ', err.message); + console.log('Server Error: ', err.message); // console.trace(); res.status(err.status || 500).send({error: err.message}); // res.render('error', { diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index bca3930..9f7ec5f 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -172,6 +172,12 @@ module.exports = { VISIB_ONLY_MANAGER: 2, VISIB_ONLY_ADMIN: 4, + Visibility_Group: { + PRIVATE: 1, + HIDDEN: 2, + // PASSWORD: 4, + }, + BOTTYPE_NONE: 0, BOTTYPE_PAGE: 1, BOTTYPE_LINK: 2,