Circuit go on...

This commit is contained in:
paoloar77
2022-08-30 17:00:48 +02:00
parent a2019c6ac9
commit f55d69b7fe
7 changed files with 275 additions and 16 deletions

View File

@@ -15,13 +15,14 @@ mongoose.plugin(schema => {
});
const CircuitSchema = new Schema({
idapp: {
type: String,
},
Num: {
type: Number,
unique: true,
},
idapp: {
type: String,
required: true,
},
groupnameId: {
type: String,
},
@@ -29,6 +30,10 @@ const CircuitSchema = new Schema({
type: String,
unique: true,
},
path: {
type: String,
unique: true,
},
subname: {
type: String,
},
@@ -188,7 +193,9 @@ CircuitSchema.statics.getWhatToShow = function(idapp, username) {
// FOR ME, PERMIT ALL
return {
Num: 1,
circuitId: 1,
groupnameId: 1,
path: 1,
name: 1,
subname: 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) {
return {
Num: 1,
circuitId: 1,
groupnameId: 1,
path: 1,
name: 1,
subname: 1,
longdescr: 1,

View File

@@ -1968,14 +1968,6 @@ UserSchema.statics.setGroupsCmd = async function(idapp, usernameOrig, groupnameD
// Invia una notifica alla persona
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) {
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;
};
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) {
return {
username: 1,