- fix zona provinciale
- email abilitazione circuito: invio email ad admin - admin che abilita la fiducia cliccando sul bottone
This commit is contained in:
@@ -1030,8 +1030,10 @@ CircuitSchema.statics.getCircuitByCircuitId = async function (circuitId) {
|
||||
return await Circuit.findOne({ _id: circuitId });
|
||||
};
|
||||
|
||||
// getListAdminsByCircuitPath - ritorna oggetti interi + USER_ADMIN_CIRCUITS
|
||||
// getListAdminsByCircuitPath - ritorna oggetti interi senza duplicati
|
||||
CircuitSchema.statics.getListAdminsByCircuitPath = async function (idapp, circuitPath) {
|
||||
let arr = await Circuit.findOne(
|
||||
let circuit = await Circuit.findOne(
|
||||
{
|
||||
idapp,
|
||||
path: circuitPath,
|
||||
@@ -1040,9 +1042,22 @@ CircuitSchema.statics.getListAdminsByCircuitPath = async function (idapp, circui
|
||||
{ admins: 1 }
|
||||
).lean();
|
||||
|
||||
let myarr = arr && arr.admins ? arr.admins : [];
|
||||
let adminObjects = circuit && circuit.admins ? circuit.admins : [];
|
||||
|
||||
return [...myarr, ...shared_consts.USER_ADMIN_CIRCUITS];
|
||||
// Aggiungi USER_ADMIN_CIRCUITS come oggetti
|
||||
let systemAdmins = shared_consts.USER_ADMIN_CIRCUITS.map(username => ({
|
||||
username,
|
||||
date: null,
|
||||
_id: null
|
||||
}));
|
||||
|
||||
// Unisci e rimuovi duplicati per username
|
||||
let allAdmins = [...adminObjects, ...systemAdmins];
|
||||
let uniqueAdmins = allAdmins.filter((admin, index, self) =>
|
||||
index === self.findIndex(a => a.username === admin.username)
|
||||
);
|
||||
|
||||
return uniqueAdmins;
|
||||
};
|
||||
|
||||
// Imposta a tutti i Conti Collettivi, i seguenti minimi e massimi
|
||||
@@ -1177,7 +1192,7 @@ CircuitSchema.statics.createCircuitIfNotExist = async function (req, idapp, prov
|
||||
date_created: new Date(),
|
||||
admins: admins.map((username) => ({ username })),
|
||||
askManagerToEnter: false,
|
||||
sendEmailAfterAskingToEnter: false,
|
||||
sendEmailAfterAskingToEnter: true,
|
||||
circuitoIndipendente: false,
|
||||
});
|
||||
|
||||
|
||||
@@ -465,6 +465,7 @@ const UserSchema = new mongoose.Schema({
|
||||
_id: false,
|
||||
circuitname: { type: String },
|
||||
date: { type: Date },
|
||||
token: { type: String },
|
||||
},
|
||||
],
|
||||
last_circuitpath: {
|
||||
@@ -2489,25 +2490,38 @@ UserSchema.statics.addCircuitToUser = async function (idapp, usernameOrig, circu
|
||||
} else {
|
||||
// prima di aggiungerlo controlla se esiste già !
|
||||
|
||||
let update = {
|
||||
$addToSet: {
|
||||
// Utilizziamo $addToSet invece di $push per garantire che l'elemento venga aggiunto solo se non esiste già
|
||||
'profile.mycircuits': {
|
||||
$each: [
|
||||
{
|
||||
circuitname,
|
||||
date: new Date(),
|
||||
},
|
||||
],
|
||||
},
|
||||
const token = tools.getTokenRandom();
|
||||
|
||||
let update = null;
|
||||
|
||||
const updateparams = {
|
||||
$set: {
|
||||
'profile.mycircuits.$[elem].date': new Date(),
|
||||
'profile.mycircuits.$[elem].token': token,
|
||||
},
|
||||
};
|
||||
|
||||
ris = await User.updateOne(
|
||||
{ idapp, username: usernameOrig, 'profile.mycircuits': { $not: { $elemMatch: { circuitname } } } },
|
||||
update
|
||||
let ris = await User.updateOne(
|
||||
{ idapp, username: usernameOrig, 'profile.mycircuits.circuitname': circuitname },
|
||||
updateparams,
|
||||
{ arrayFilters: [{ 'elem.circuitname': circuitname }] }
|
||||
);
|
||||
|
||||
// Se non ha modificato nulla (nModified === 0), significa che non esiste, quindi lo aggiungiamo
|
||||
if (ris.modifiedCount === 0) {
|
||||
const insertUpdate = {
|
||||
$push: {
|
||||
'profile.mycircuits': {
|
||||
circuitname,
|
||||
date: new Date(),
|
||||
token,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
ris = await User.updateOne({ idapp, username: usernameOrig }, insertUpdate);
|
||||
}
|
||||
|
||||
if (confido) {
|
||||
// Elimina la richiesta:
|
||||
update = { $pull: { req_users: { username: { $in: [usernameOrig] } } } };
|
||||
@@ -2525,6 +2539,24 @@ UserSchema.statics.addCircuitToUser = async function (idapp, usernameOrig, circu
|
||||
};
|
||||
|
||||
// Rimuovo il Gruppo per Tutti gli Utenti
|
||||
UserSchema.statics.getCircuitByTokenAndUsername = async function (idapp, username, token) {
|
||||
try {
|
||||
const user = await User.findOne({
|
||||
idapp,
|
||||
username,
|
||||
'profile.mycircuits.token': token,
|
||||
});
|
||||
|
||||
// Il circuito sarà in: circuit?.profile?.mycircuits?.[0]
|
||||
const foundCircuit = user?.profile?.mycircuits?.[0];
|
||||
if (foundCircuit) {
|
||||
return { circuitname: foundCircuit.circuitname, user };
|
||||
}
|
||||
} catch (e) {
|
||||
return { circuitname: '', user: null };
|
||||
}
|
||||
return { circuitname: '', user: null };
|
||||
};
|
||||
UserSchema.statics.removeAllUsersFromMyGroups = async function (idapp, groupnameDest) {
|
||||
return await User.updateMany({ idapp }, { $pull: { 'profile.mygroups': { groupname: { $in: [groupnameDest] } } } });
|
||||
};
|
||||
@@ -2630,7 +2662,7 @@ UserSchema.statics.setFriendsCmd = async function (req, idapp, usernameOrig, use
|
||||
);
|
||||
msgDest = i18n.__({ phrase: '✅ Sei stato Ammesso correttamente da %s!', locale: lang }, usernameOrig);
|
||||
msgAdmin = i18n.__(
|
||||
{ phrase: '✅ %s è stato Ammesso correttamente (da %s)!', locale: userDest.lang },
|
||||
{ phrase: '✅ %s è stato Ammesso/a correttamente (da %s) tramite Email!', locale: userDest.lang },
|
||||
userDest.username,
|
||||
usernameOrig
|
||||
);
|
||||
@@ -6912,6 +6944,25 @@ UserSchema.statics.createNewSubRecord = async function (idapp, req) {
|
||||
return rec;
|
||||
};
|
||||
|
||||
// Nel tuo User schema, aggiungi questo metodo statico:
|
||||
|
||||
UserSchema.statics.getTokenByUsernameAndCircuitName = async function (idapp, username, circuitname) {
|
||||
const User = this;
|
||||
|
||||
const user = await User.findOne(
|
||||
{
|
||||
idapp,
|
||||
username,
|
||||
'profile.mycircuits.circuitname': circuitname,
|
||||
},
|
||||
{
|
||||
'profile.mycircuits.$': 1,
|
||||
}
|
||||
);
|
||||
|
||||
return user?.profile?.mycircuits?.[0]?.token || null;
|
||||
};
|
||||
|
||||
const User = mongoose.model('User', UserSchema);
|
||||
|
||||
class Hero {
|
||||
|
||||
Reference in New Issue
Block a user