Circuit go on...
This commit is contained in:
@@ -15,13 +15,14 @@ mongoose.plugin(schema => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const CircuitSchema = new Schema({
|
const CircuitSchema = new Schema({
|
||||||
idapp: {
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
Num: {
|
Num: {
|
||||||
type: Number,
|
type: Number,
|
||||||
unique: true,
|
unique: true,
|
||||||
},
|
},
|
||||||
|
idapp: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
groupnameId: {
|
groupnameId: {
|
||||||
type: String,
|
type: String,
|
||||||
},
|
},
|
||||||
@@ -29,6 +30,10 @@ const CircuitSchema = new Schema({
|
|||||||
type: String,
|
type: String,
|
||||||
unique: true,
|
unique: true,
|
||||||
},
|
},
|
||||||
|
path: {
|
||||||
|
type: String,
|
||||||
|
unique: true,
|
||||||
|
},
|
||||||
subname: {
|
subname: {
|
||||||
type: String,
|
type: String,
|
||||||
},
|
},
|
||||||
@@ -188,7 +193,9 @@ CircuitSchema.statics.getWhatToShow = function(idapp, username) {
|
|||||||
// FOR ME, PERMIT ALL
|
// FOR ME, PERMIT ALL
|
||||||
return {
|
return {
|
||||||
Num: 1,
|
Num: 1,
|
||||||
|
circuitId: 1,
|
||||||
groupnameId: 1,
|
groupnameId: 1,
|
||||||
|
path: 1,
|
||||||
name: 1,
|
name: 1,
|
||||||
subname: 1,
|
subname: 1,
|
||||||
longdescr: 1,
|
longdescr: 1,
|
||||||
@@ -204,10 +211,20 @@ CircuitSchema.statics.getWhatToShow = function(idapp, username) {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Rimuovi dagli Admin del Circuito
|
||||||
|
MyGroupSchema.statics.removeAdminOfMyCircuit = async function(idapp, username, name) {
|
||||||
|
|
||||||
|
return Circuit.updateOne({idapp, name},
|
||||||
|
{$pull: {admins: {username: {$in: [username]}}}});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
CircuitSchema.statics.getWhatToShow_Unknown = function(idapp, username) {
|
CircuitSchema.statics.getWhatToShow_Unknown = function(idapp, username) {
|
||||||
return {
|
return {
|
||||||
Num: 1,
|
Num: 1,
|
||||||
|
circuitId: 1,
|
||||||
groupnameId: 1,
|
groupnameId: 1,
|
||||||
|
path: 1,
|
||||||
name: 1,
|
name: 1,
|
||||||
subname: 1,
|
subname: 1,
|
||||||
longdescr: 1,
|
longdescr: 1,
|
||||||
|
|||||||
@@ -1968,14 +1968,6 @@ UserSchema.statics.setGroupsCmd = async function(idapp, usernameOrig, groupnameD
|
|||||||
// Invia una notifica alla persona
|
// Invia una notifica alla persona
|
||||||
await tools.sendNotificationByGroupname(idapp, usernameOrig, groupnameDest, cmd, false, true, username_action);
|
await tools.sendNotificationByGroupname(idapp, usernameOrig, groupnameDest, cmd, false, true, username_action);
|
||||||
|
|
||||||
} else if (cmd === shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUP) {
|
|
||||||
|
|
||||||
ris = await User.removeFromMyGroups(idapp, usernameOrig, groupnameDest); // Rimuovo l'Amicizia da me
|
|
||||||
console.log('ris', ris);
|
|
||||||
|
|
||||||
// Invia una notifica alla persona
|
|
||||||
await tools.sendNotificationByGroupname(idapp, usernameOrig, groupnameDest, cmd, false, true, username_action);
|
|
||||||
|
|
||||||
} else if (cmd === shared_consts.GROUPSCMD.DELETE_GROUP) {
|
} else if (cmd === shared_consts.GROUPSCMD.DELETE_GROUP) {
|
||||||
|
|
||||||
ris = await User.removeFromMyGroups(idapp, usernameOrig, groupnameDest); // Rimuovo l'Amicizia da me
|
ris = await User.removeFromMyGroups(idapp, usernameOrig, groupnameDest); // Rimuovo l'Amicizia da me
|
||||||
@@ -2027,6 +2019,142 @@ UserSchema.statics.setGroupsCmd = async function(idapp, usernameOrig, groupnameD
|
|||||||
return ris;
|
return ris;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
UserSchema.statics.setCircuitCmd = async function(idapp, usernameOrig, name, cmd, value, username_action) {
|
||||||
|
|
||||||
|
let ris = null;
|
||||||
|
let update = {};
|
||||||
|
try {
|
||||||
|
if (cmd === shared_consts.CIRCUITCMD.SET) {
|
||||||
|
const foundIfAlreadyCircuit = await this.ifAlreadyInCircuit(idapp, usernameOrig, name);
|
||||||
|
|
||||||
|
if (!foundIfAlreadyCircuit) {
|
||||||
|
update = {
|
||||||
|
$push: {
|
||||||
|
'profile.mycircuits': {
|
||||||
|
circuitname: name,
|
||||||
|
date: new Date(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
ris = await User.updateOne({idapp, username: usernameOrig}, update);
|
||||||
|
|
||||||
|
// Elimina la richiesta:
|
||||||
|
update = {$pull: {req_users: {username: {$in: [usernameOrig]}}}};
|
||||||
|
await Circuit.updateOne({idapp, groupname: name}, update);
|
||||||
|
|
||||||
|
// Elimina eventualmente se era bloccato:
|
||||||
|
update = {$pull: {refused_users: {username: {$in: [usernameOrig]}}}};
|
||||||
|
await Circuit.updateOne({idapp, groupname: name}, update);
|
||||||
|
} else {
|
||||||
|
ris = false;
|
||||||
|
}
|
||||||
|
if (ris) {
|
||||||
|
// Invia una notifica alla persona e agli Admin
|
||||||
|
tools.sendNotificationByGroupname(idapp, usernameOrig, name, cmd, value, true, username_action);
|
||||||
|
ris = await Circuit.getInfoGroupByGroupname(idapp, name);
|
||||||
|
}
|
||||||
|
} else if (cmd === shared_consts.GROUPSCMD.REQGROUP) {
|
||||||
|
// Aggiungo la richiesta di Gruppo a me
|
||||||
|
const foundIfAlreadyAskGroup = await Circuit.findOne({
|
||||||
|
idapp,
|
||||||
|
groupname: name,
|
||||||
|
'req_users': {
|
||||||
|
$elemMatch: {username: {$eq: usernameOrig}},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
if (value) {
|
||||||
|
if (!foundIfAlreadyAskGroup) {
|
||||||
|
update = {
|
||||||
|
$push: {
|
||||||
|
'req_users': {
|
||||||
|
username: usernameOrig,
|
||||||
|
date: new Date(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
ris = await Circuit.updateOne({idapp, groupname: name},
|
||||||
|
update);
|
||||||
|
}
|
||||||
|
if (ris) {
|
||||||
|
// Invia una notifica alla persona
|
||||||
|
await tools.sendNotificationByGroupname(idapp, usernameOrig, name, cmd, true, true, username_action);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (foundIfAlreadyAskGroup) {
|
||||||
|
ris = await this.removeFromCircuits(idapp, usernameOrig, name); // Rimuovo il Gruppo da me
|
||||||
|
|
||||||
|
// Invia una notifica alla persona
|
||||||
|
await tools.sendNotificationByGroupname(idapp, usernameOrig, name, cmd, false, true, username_action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ris) {
|
||||||
|
ris = await Circuit.getInfoGroupByGroupname(idapp, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (cmd === shared_consts.GROUPSCMD.REMOVE_FROM_CIRCUIT) {
|
||||||
|
|
||||||
|
// Remove if is also an Admin
|
||||||
|
await Circuit.removeAdminOfMyCircuit(idapp, usernameOrig, name);
|
||||||
|
|
||||||
|
ris = await User.removeFromCircuits(idapp, usernameOrig, name); // Rimuovo l'Amicizia da me
|
||||||
|
console.log('ris', ris);
|
||||||
|
|
||||||
|
// Invia una notifica alla persona
|
||||||
|
await tools.sendNotificationByGroupname(idapp, usernameOrig, name, cmd, false, true, username_action);
|
||||||
|
|
||||||
|
} else if (cmd === shared_consts.GROUPSCMD.DELETE_GROUP) {
|
||||||
|
|
||||||
|
ris = await User.removeFromCircuits(idapp, usernameOrig, name); // Rimuovo l'Amicizia da me
|
||||||
|
|
||||||
|
if (ris) {
|
||||||
|
// Invia una notifica alla persona e agli Admin
|
||||||
|
await tools.sendNotificationByGroupname(idapp, usernameOrig, name, cmd, false, true, username_action);
|
||||||
|
|
||||||
|
}
|
||||||
|
ris = await Circuit.deleteGroup(idapp, usernameOrig, name); // Rimuovo l'Amicizia da me
|
||||||
|
console.log('ris', ris);
|
||||||
|
|
||||||
|
} else if (cmd === shared_consts.GROUPSCMD.CANCEL_REQ_GROUP) {
|
||||||
|
|
||||||
|
ris = await Circuit.removeReqGroup(idapp, usernameOrig, name); // Rimuovo l'Amicizia da me
|
||||||
|
|
||||||
|
} else if (cmd === shared_consts.GROUPSCMD.BLOCK_GROUP) {
|
||||||
|
|
||||||
|
await User.removeFromCircuits(idapp, usernameOrig, name); // Rimuovo l'Amicizia da me
|
||||||
|
|
||||||
|
// Blocco il Gruppo
|
||||||
|
ris = await Circuit.updateOne({idapp, groupname: name}, {
|
||||||
|
$set: {
|
||||||
|
blocked: true,
|
||||||
|
username_who_block: usernameOrig,
|
||||||
|
date_blocked: new Date(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
//++Todo: Send Notification to Admin and Group's manager
|
||||||
|
tools.sendNotificationByGroupname(idapp, usernameOrig, name, cmd, false, true, username_action);
|
||||||
|
|
||||||
|
} else if (cmd === shared_consts.GROUPSCMD.ADDADMIN_OFCIRCUIT) {
|
||||||
|
ris = await Circuit.addToAdminOfCircuit(idapp, usernameOrig, name); // Rimuovo la richiesta di entrare nel gruppo
|
||||||
|
|
||||||
|
// Invia una notifica alla persona
|
||||||
|
await tools.sendNotificationByGroupname(idapp, usernameOrig, name, cmd, false, true, username_action);
|
||||||
|
|
||||||
|
} else if (cmd === shared_consts.GROUPSCMD.REMOVEADMIN_OFCIRCUIT) {
|
||||||
|
ris = await Circuit.removeAdminOfCircuit(idapp, usernameOrig, name); // Rimuovo la richiesta di entrare nel gruppo
|
||||||
|
|
||||||
|
// Invia una notifica alla persona
|
||||||
|
await tools.sendNotificationByGroupname(idapp, usernameOrig, name, cmd, false, true, username_action);
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Error: ', e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ris;
|
||||||
|
};
|
||||||
|
|
||||||
function getWhatToShow(idapp, username) {
|
function getWhatToShow(idapp, username) {
|
||||||
return {
|
return {
|
||||||
username: 1,
|
username: 1,
|
||||||
|
|||||||
76
src/server/router/circuits_router.js
Executable file
76
src/server/router/circuits_router.js
Executable file
@@ -0,0 +1,76 @@
|
|||||||
|
const express = require('express');
|
||||||
|
const router = express.Router();
|
||||||
|
|
||||||
|
const tools = require('../tools/general');
|
||||||
|
|
||||||
|
const server_constants = require('../tools/server_constants');
|
||||||
|
|
||||||
|
const {authenticate} = require('../middleware/authenticate');
|
||||||
|
|
||||||
|
const mongoose = require('mongoose').set('debug', false);
|
||||||
|
|
||||||
|
const {User} = require('../models/user');
|
||||||
|
const {Circuit} = require('../models/circuit');
|
||||||
|
|
||||||
|
const _ = require('lodash');
|
||||||
|
|
||||||
|
const {ObjectID} = require('mongodb');
|
||||||
|
|
||||||
|
async function getCircuitRecAdminsInfo(idapp, data) {
|
||||||
|
|
||||||
|
if (data && data.admins) {
|
||||||
|
for (const admin of data.admins) {
|
||||||
|
const myuser = await User.findOne({idapp, username: admin.username}, {'profile.img': 1}).lean();
|
||||||
|
admin.profile = {img: myuser.profile.img};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
router.post('/load', authenticate, async (req, res) => {
|
||||||
|
const idapp = req.body.idapp;
|
||||||
|
const path = req.body.path;
|
||||||
|
const circuitId = req.body.circuitId;
|
||||||
|
const usernameOrig = req.user.username;
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
const {SendNotif} = require('../models/sendnotif');
|
||||||
|
|
||||||
|
// Check if ìs a Notif to read
|
||||||
|
const idnotif = req.body['idnotif'] ? req.body['idnotif'] : '';
|
||||||
|
SendNotif.setNotifAsRead(idapp, usernameOrig, idnotif);
|
||||||
|
|
||||||
|
const whatshow = Circuit.getWhatToShow(idapp, req.user.username);
|
||||||
|
let data = await Circuit.findOne({idapp, path}, whatshow).lean();
|
||||||
|
|
||||||
|
let cities = [];
|
||||||
|
let users_in_circuit = [];
|
||||||
|
if (data && data.circuitId) {
|
||||||
|
users_in_circuit = await User.find(
|
||||||
|
{
|
||||||
|
idapp,
|
||||||
|
circuitId: data.circuitId,
|
||||||
|
},
|
||||||
|
whatshowUsers,
|
||||||
|
).lean();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
data = await getCircuitRecAdminsInfo(idapp, data);
|
||||||
|
|
||||||
|
const whatshowUsers = await User.getWhatToShow_IfFriends(idapp, req.user.username);
|
||||||
|
|
||||||
|
res.send({circuit: data, users_in_circuit});
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Error in Circuits', e);
|
||||||
|
return res.status(400).send(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
const ris = null;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = router;
|
||||||
@@ -711,6 +711,34 @@ router.post('/groups/cmd', authenticate, (req, res) => {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.post('/circuits/cmd', authenticate, (req, res) => {
|
||||||
|
const usernameLogged = req.user.username;
|
||||||
|
const idapp = req.body.idapp;
|
||||||
|
const locale = req.body.locale;
|
||||||
|
const usernameOrig = req.body.usernameOrig;
|
||||||
|
const name = req.body.name;
|
||||||
|
const cmd = req.body.cmd;
|
||||||
|
const value = req.body.value;
|
||||||
|
|
||||||
|
/*if (!User.isAdmin(req.user.perm) || !User.isManager(req.user.perm)) {
|
||||||
|
// If without permissions, exit
|
||||||
|
if (usernameOrig !== usernameLogged) {
|
||||||
|
return res.status(404).
|
||||||
|
send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''});
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
return User.setCircuitCmd(idapp, usernameOrig, name, cmd, value, usernameLogged).
|
||||||
|
then((ris) => {
|
||||||
|
res.send(ris);
|
||||||
|
}).
|
||||||
|
catch((e) => {
|
||||||
|
tools.mylog('ERRORE IN groups/cmd: ' + e.message);
|
||||||
|
res.status(400).send();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
async function eseguiDbOp(idapp, mydata, locale) {
|
async function eseguiDbOp(idapp, mydata, locale) {
|
||||||
|
|
||||||
let ris = await User.DbOp(idapp, mydata);
|
let ris = await User.DbOp(idapp, mydata);
|
||||||
|
|||||||
@@ -107,6 +107,7 @@ myLoad().then(ris => {
|
|||||||
const report_router = require('./router/report_router');
|
const report_router = require('./router/report_router');
|
||||||
const users_router = require('./router/users_router');
|
const users_router = require('./router/users_router');
|
||||||
const mygroups_router = require('./router/mygroups_router');
|
const mygroups_router = require('./router/mygroups_router');
|
||||||
|
const circuits_router = require('./router/circuits_router');
|
||||||
const iscrittiConacreis_router = require('./router/iscrittiConacreis_router');
|
const iscrittiConacreis_router = require('./router/iscrittiConacreis_router');
|
||||||
const site_router = require('./router/site_router');
|
const site_router = require('./router/site_router');
|
||||||
const admin_router = require('./router/admin_router');
|
const admin_router = require('./router/admin_router');
|
||||||
@@ -166,6 +167,7 @@ myLoad().then(ris => {
|
|||||||
app.use('/projects', projects_router);
|
app.use('/projects', projects_router);
|
||||||
app.use('/users', users_router);
|
app.use('/users', users_router);
|
||||||
app.use('/mygroup', mygroups_router);
|
app.use('/mygroup', mygroups_router);
|
||||||
|
app.use('/circuit', circuits_router);
|
||||||
app.use('/iscritti_conacreis', iscrittiConacreis_router);
|
app.use('/iscritti_conacreis', iscrittiConacreis_router);
|
||||||
app.use('/report', report_router);
|
app.use('/report', report_router);
|
||||||
app.use('/site', site_router);
|
app.use('/site', site_router);
|
||||||
|
|||||||
@@ -1652,7 +1652,7 @@ module.exports = {
|
|||||||
if (numrowend < 0)
|
if (numrowend < 0)
|
||||||
numrowend = 1;
|
numrowend = 1;
|
||||||
|
|
||||||
if (params.querytype === shared_consts.QUERYTYPE_MYGROUP) {
|
if (params.querytype === shared_consts.QUERYTYPE_MYGROUP || params.querytype === shared_consts.QUERYTYPE_CIRCUIT) {
|
||||||
query.push({
|
query.push({
|
||||||
$match: {
|
$match: {
|
||||||
$expr: {
|
$expr: {
|
||||||
@@ -1690,7 +1690,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
} else if (params.querytype === shared_consts.QUERYTYPE_REFUSED_USER_GRP) {
|
} else if (params.querytype === shared_consts.QUERYTYPE_REFUSED_USER_GRP || params.querytype === shared_consts.QUERYTYPE_REFUSED_USER_CIRCUIT) {
|
||||||
query.push({
|
query.push({
|
||||||
$match: {
|
$match: {
|
||||||
$expr: {
|
$expr: {
|
||||||
|
|||||||
@@ -6,8 +6,9 @@ module.exports = {
|
|||||||
|
|
||||||
QUERYTYPE_MYGROUP: 1,
|
QUERYTYPE_MYGROUP: 1,
|
||||||
QUERYTYPE_REFUSED_USER_GRP: 2,
|
QUERYTYPE_REFUSED_USER_GRP: 2,
|
||||||
|
|
||||||
ALL_SAW_AND_ACCEPTED: 3,
|
ALL_SAW_AND_ACCEPTED: 3,
|
||||||
|
QUERYTYPE_CIRCUIT: 10,
|
||||||
|
QUERYTYPE_REFUSED_USER_CIRCUIT: 12,
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
|
||||||
FILTER_EXTRALIST_NOT_REGISTERED: 1,
|
FILTER_EXTRALIST_NOT_REGISTERED: 1,
|
||||||
@@ -66,6 +67,13 @@ module.exports = {
|
|||||||
REMOVEADMIN_OFMYGROUP: 1185,
|
REMOVEADMIN_OFMYGROUP: 1185,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
CIRCUITCMD: {
|
||||||
|
REQ: 2000,
|
||||||
|
SET: 2001,
|
||||||
|
REMOVE_FROM_MYLIST: 2144,
|
||||||
|
DELETE: 2170,
|
||||||
|
},
|
||||||
|
|
||||||
REPORT_FILT_RESP: 1,
|
REPORT_FILT_RESP: 1,
|
||||||
REPORT_FILT_ATTIVITA: 2,
|
REPORT_FILT_ATTIVITA: 2,
|
||||||
|
|
||||||
@@ -139,8 +147,8 @@ module.exports = {
|
|||||||
'circuits',
|
'circuits',
|
||||||
'movements'],
|
'movements'],
|
||||||
TABLES_USER_ID: ['mygroups', 'myskills', 'mybachecas', 'myhosps', 'mygoods'],
|
TABLES_USER_ID: ['mygroups', 'myskills', 'mybachecas', 'myhosps', 'mygoods'],
|
||||||
TABLES_CREATEDBY: ['mygroups'],
|
TABLES_CREATEDBY: ['mygroups', 'circuits'],
|
||||||
TABLES_UPDATE_LASTMODIFIED: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'bots', 'mygroups'],
|
TABLES_UPDATE_LASTMODIFIED: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'bots', 'mygroups', 'circuits'],
|
||||||
|
|
||||||
TABLES_PERM_CHANGE_FOR_USERS: ['myskills', 'mybachecas', 'myhosps', 'mygoods'],
|
TABLES_PERM_CHANGE_FOR_USERS: ['myskills', 'mybachecas', 'myhosps', 'mygoods'],
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user