- Sistemato problema del Circuito ITALIA, quando veniva fatta la richiesta di entrare, ancora non si era entrati nel circuito territoriale.
- Ora pertanto viene inviata la richiesta agli admin solo dopo che l'utente viene abilitato al Circuito provinciale.
This commit is contained in:
@@ -539,6 +539,7 @@ const UserSchema = new mongoose.Schema({
|
||||
},
|
||||
],
|
||||
version: { type: Number },
|
||||
insert_circuito_ita: { type: Boolean },
|
||||
},
|
||||
});
|
||||
|
||||
@@ -2850,31 +2851,45 @@ UserSchema.statics.sendCmd = async function (req, idapp, usernameOrig, usernameD
|
||||
try {
|
||||
if (cmd === shared_consts.CallFunz.ENTRA_RIS_ITALIA) {
|
||||
mycircuitOrig = await Circuit.getCircuitMyProvince(idapp, usernameOrig);
|
||||
descr = i18n.__(
|
||||
{ phrase: 'SENDMSG_ENTRA_IN_RISO_ITALIA', locale: langdest },
|
||||
usernameDest,
|
||||
usernameOrig,
|
||||
mycircuitOrig
|
||||
);
|
||||
msgtelegram = descr;
|
||||
|
||||
openUrl = '/circuit/ris_italia';
|
||||
bottone = i18n.__({ phrase: 'CIRCUIT_OPEN_RISITALIA', locale: langdest });
|
||||
tag = 'risitalia';
|
||||
let enableOnlyIf1CircuitExist = false;
|
||||
let foundIfAlreadyCircuit = false;
|
||||
|
||||
send_notif = true;
|
||||
send_msgTelegramBot = true;
|
||||
if (mycircuitOrig) {
|
||||
// Fai la richiesta solo se appartieni già al tuo Circuito Territoriale
|
||||
foundIfAlreadyCircuit = await User.ifAlreadyInCircuit(idapp, usernameOrig, mycircuitOrig);
|
||||
}
|
||||
|
||||
keyb = cl.getInlineKeyboard(langdest, [
|
||||
{
|
||||
text: bottone,
|
||||
url: tools.getHostByIdApp(idapp) + openUrl,
|
||||
// callback_data: InlineConferma.RISPOSTA_SI + myfunc + tools.SEP + myuser.username + tools.SEP + '' + tools.SEP + '' + tools.SEP +
|
||||
// groupid,
|
||||
},
|
||||
]);
|
||||
if (!foundIfAlreadyCircuit) {
|
||||
// Se non sono dentro ad un circuito Provinciale, setto come flag la possibilità di inserire il Circuito ITA
|
||||
await User.setInseriscimiAncheInCircuitoITA(idapp, usernameOrig);
|
||||
} else {
|
||||
descr = i18n.__(
|
||||
{ phrase: 'SENDMSG_ENTRA_IN_RISO_ITALIA', locale: langdest },
|
||||
usernameDest,
|
||||
usernameOrig,
|
||||
mycircuitOrig
|
||||
);
|
||||
msgtelegram = descr;
|
||||
|
||||
popupOnApp = 'Messaggio inviato al destinatario';
|
||||
openUrl = '/circuit/ris_italia';
|
||||
bottone = i18n.__({ phrase: 'CIRCUIT_OPEN_RISITALIA', locale: langdest });
|
||||
tag = 'risitalia';
|
||||
|
||||
send_notif = true;
|
||||
send_msgTelegramBot = true;
|
||||
|
||||
keyb = cl.getInlineKeyboard(langdest, [
|
||||
{
|
||||
text: bottone,
|
||||
url: tools.getHostByIdApp(idapp) + openUrl,
|
||||
// callback_data: InlineConferma.RISPOSTA_SI + myfunc + tools.SEP + myuser.username + tools.SEP + '' + tools.SEP + '' + tools.SEP +
|
||||
// groupid,
|
||||
},
|
||||
]);
|
||||
|
||||
popupOnApp = 'Messaggio inviato al destinatario';
|
||||
}
|
||||
}
|
||||
|
||||
if (send_notif) {
|
||||
@@ -2930,6 +2945,29 @@ UserSchema.statics.ifAlreadyInCircuit = async function (idapp, usernameOrig, cir
|
||||
}).lean();
|
||||
};
|
||||
|
||||
UserSchema.statics.ifAlreadyInCircuitItalia = async function (idapp, usernameOrig) {
|
||||
try {
|
||||
const circuitoItalia = await Circuit.getCircuitoItalia(idapp);
|
||||
|
||||
if (circuitoItalia) {
|
||||
const circuitname = circuitoItalia.name;
|
||||
|
||||
// Controllo se è stato già inserito in Circuito Italia
|
||||
return await User.findOne({
|
||||
idapp,
|
||||
username: usernameOrig,
|
||||
'profile.mycircuits': {
|
||||
$elemMatch: { circuitname: { $eq: circuitname } },
|
||||
},
|
||||
}).lean();
|
||||
}
|
||||
|
||||
return false;
|
||||
} catch (e) {
|
||||
console.error('ifAlreadyInCircuitItalia', e);
|
||||
}
|
||||
};
|
||||
|
||||
//** Get true if in 'profile.mycircuits' exist at least one circuit */
|
||||
UserSchema.statics.ExistAtLeastOneCircuit = async function (idapp, username) {
|
||||
// Controllo se è stato più inserito
|
||||
@@ -3213,130 +3251,164 @@ UserSchema.statics.setCircuitCmd = async function (
|
||||
username_action,
|
||||
extrarec
|
||||
);
|
||||
|
||||
// Se gli è stato abilitato il Fido ad un Circuito Provinciale,
|
||||
// se non è ancora dentro al Circuito Italia
|
||||
const giainItalia = await User.ifAlreadyInCircuitItalia(idapp, usernameOrig);
|
||||
|
||||
if (!giainItalia) {
|
||||
// allora ora attiva la richiesta per il circuito Italia
|
||||
const inseriscimiInCircuitoItalia = await User.getInseriscimiAncheInCircuitoITA(idapp, usernameOrig);
|
||||
|
||||
const circuitItalia = await Circuit.getCircuitoItalia(idapp);
|
||||
|
||||
if (inseriscimiInCircuitoItalia) {
|
||||
const mycmd = shared_consts.CIRCUITCMD.REQ;
|
||||
await User.setCircuitCmd(idapp, usernameOrig, circuitItalia.name, mycmd, true, usernameOrig, {
|
||||
groupname: groupname,
|
||||
abilitaveramente: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
outres.result = await Circuit.getInfoCircuitByName(idapp, circuitname);
|
||||
}
|
||||
} else {
|
||||
// errore !?
|
||||
}
|
||||
} else if (cmd === shared_consts.CIRCUITCMD.REQ) {
|
||||
if (groupname) {
|
||||
// Aggiungo la richiesta di Gruppo a me
|
||||
const foundIfAlreadyAskCircuit = await Circuit.findOne({
|
||||
idapp,
|
||||
name: circuitname,
|
||||
req_groups: {
|
||||
$elemMatch: { groupname: { $eq: groupname } },
|
||||
},
|
||||
});
|
||||
let abilitareq = true;
|
||||
|
||||
if (value) {
|
||||
ris = await this.addCircuitToUser(idapp, usernameOrig, circuitname, false, groupname, '');
|
||||
const thiscircuit = await Circuit.findOne({
|
||||
idapp,
|
||||
name: circuitname,
|
||||
});
|
||||
|
||||
if (!foundIfAlreadyAskCircuit) {
|
||||
update = {
|
||||
$push: {
|
||||
req_groups: {
|
||||
groupname,
|
||||
date: new Date(),
|
||||
// se è il circuito Italia e !extrarec.abilitoveramente allora
|
||||
if (thiscircuit.isCircItalia && !extrarec.abilitaveramente) {
|
||||
abilitareq = false;
|
||||
}
|
||||
// abilito il set
|
||||
|
||||
if (abilitareq) {
|
||||
if (groupname) {
|
||||
// Aggiungo la richiesta di Gruppo a me
|
||||
const foundIfAlreadyAskCircuit = await Circuit.findOne({
|
||||
idapp,
|
||||
name: circuitname,
|
||||
req_groups: {
|
||||
$elemMatch: { groupname: { $eq: groupname } },
|
||||
},
|
||||
});
|
||||
|
||||
if (value) {
|
||||
ris = await this.addCircuitToUser(idapp, usernameOrig, circuitname, false, groupname, '');
|
||||
|
||||
if (!foundIfAlreadyAskCircuit) {
|
||||
update = {
|
||||
$push: {
|
||||
req_groups: {
|
||||
groupname,
|
||||
date: new Date(),
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
ris = await Circuit.updateOne({ idapp, name: circuitname }, update);
|
||||
}
|
||||
if (ris) {
|
||||
// Invia una notifica alla persona
|
||||
await tools.sendNotificationByCircuit(
|
||||
idapp,
|
||||
usernameOrig,
|
||||
circuitname,
|
||||
cmd,
|
||||
true,
|
||||
true,
|
||||
username_action,
|
||||
extrarec
|
||||
);
|
||||
};
|
||||
ris = await Circuit.updateOne({ idapp, name: circuitname }, update);
|
||||
}
|
||||
if (ris) {
|
||||
// Invia una notifica alla persona
|
||||
await tools.sendNotificationByCircuit(
|
||||
idapp,
|
||||
usernameOrig,
|
||||
circuitname,
|
||||
cmd,
|
||||
true,
|
||||
true,
|
||||
username_action,
|
||||
extrarec
|
||||
);
|
||||
}
|
||||
} else {
|
||||
if (foundIfAlreadyAskCircuit) {
|
||||
outres.result = await MyGroup.removeCircuitFromGroup(idapp, groupname, circuitname); // Rimuovo il Circuito dal gruppo
|
||||
|
||||
// Invia una notifica alla persona
|
||||
await tools.sendNotificationByCircuit(
|
||||
idapp,
|
||||
usernameOrig,
|
||||
circuitname,
|
||||
cmd,
|
||||
false,
|
||||
true,
|
||||
username_action,
|
||||
extrarec
|
||||
);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (foundIfAlreadyAskCircuit) {
|
||||
outres.result = await MyGroup.removeCircuitFromGroup(idapp, groupname, circuitname); // Rimuovo il Circuito dal gruppo
|
||||
// Aggiungo la richiesta di Circuito a me
|
||||
const foundIfAlreadyAskCircuit = await Circuit.findOne({
|
||||
idapp,
|
||||
name: circuitname,
|
||||
req_users: {
|
||||
$elemMatch: { username: { $eq: usernameOrig } },
|
||||
},
|
||||
});
|
||||
|
||||
// Invia una notifica alla persona
|
||||
await tools.sendNotificationByCircuit(
|
||||
idapp,
|
||||
usernameOrig,
|
||||
circuitname,
|
||||
cmd,
|
||||
false,
|
||||
true,
|
||||
username_action,
|
||||
extrarec
|
||||
);
|
||||
if (value) {
|
||||
if (!thiscircuit.askManagerToEnter) {
|
||||
// Aggiungi intanto l'utente al Circuito (senza fido)
|
||||
ris = await this.addCircuitToUser(idapp, usernameOrig, circuitname, false);
|
||||
}
|
||||
|
||||
if (!foundIfAlreadyAskCircuit) {
|
||||
update = {
|
||||
$push: {
|
||||
req_users: {
|
||||
username: usernameOrig,
|
||||
date: new Date(),
|
||||
},
|
||||
},
|
||||
};
|
||||
// Aggiungi la richiesta per ottenere il fido (o per entrare nel circuito)
|
||||
ris = await Circuit.updateOne({ idapp, name: circuitname }, update);
|
||||
}
|
||||
|
||||
if (ris) {
|
||||
// Invia una notifica alla persona
|
||||
await tools.sendNotificationByCircuit(
|
||||
idapp,
|
||||
usernameOrig,
|
||||
circuitname,
|
||||
cmd,
|
||||
true,
|
||||
true,
|
||||
username_action,
|
||||
extrarec
|
||||
);
|
||||
}
|
||||
} else {
|
||||
if (foundIfAlreadyAskCircuit) {
|
||||
outres.result = await this.removeFromCircuits(idapp, usernameOrig, circuitname); // Rimuovo il Gruppo da me
|
||||
|
||||
// Invia una notifica alla persona
|
||||
await tools.sendNotificationByCircuit(
|
||||
idapp,
|
||||
usernameOrig,
|
||||
circuitname,
|
||||
cmd,
|
||||
false,
|
||||
true,
|
||||
username_action,
|
||||
extrarec
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Aggiungo la richiesta di Circuito a me
|
||||
const foundIfAlreadyAskCircuit = await Circuit.findOne({
|
||||
idapp,
|
||||
name: circuitname,
|
||||
req_users: {
|
||||
$elemMatch: { username: { $eq: usernameOrig } },
|
||||
},
|
||||
});
|
||||
|
||||
const thiscircuit = await Circuit.findOne({
|
||||
idapp,
|
||||
name: circuitname,
|
||||
});
|
||||
|
||||
if (value) {
|
||||
if (!thiscircuit.askManagerToEnter) {
|
||||
// Aggiungi intanto l'utente al Circuito (senza fido)
|
||||
ris = await this.addCircuitToUser(idapp, usernameOrig, circuitname, false);
|
||||
}
|
||||
|
||||
if (!foundIfAlreadyAskCircuit) {
|
||||
update = {
|
||||
$push: {
|
||||
req_users: {
|
||||
username: usernameOrig,
|
||||
date: new Date(),
|
||||
},
|
||||
},
|
||||
};
|
||||
// Aggiungi la richiesta per ottenere il fido (o per entrare nel circuito)
|
||||
ris = await Circuit.updateOne({ idapp, name: circuitname }, update);
|
||||
}
|
||||
|
||||
if (ris) {
|
||||
// Invia una notifica alla persona
|
||||
await tools.sendNotificationByCircuit(
|
||||
idapp,
|
||||
usernameOrig,
|
||||
circuitname,
|
||||
cmd,
|
||||
true,
|
||||
true,
|
||||
username_action,
|
||||
extrarec
|
||||
);
|
||||
}
|
||||
} else {
|
||||
if (foundIfAlreadyAskCircuit) {
|
||||
outres.result = await this.removeFromCircuits(idapp, usernameOrig, circuitname); // Rimuovo il Gruppo da me
|
||||
|
||||
// Invia una notifica alla persona
|
||||
await tools.sendNotificationByCircuit(
|
||||
idapp,
|
||||
usernameOrig,
|
||||
circuitname,
|
||||
cmd,
|
||||
false,
|
||||
true,
|
||||
username_action,
|
||||
extrarec
|
||||
);
|
||||
}
|
||||
}
|
||||
// imposta che quando lo attiveranno al circuito territoriale, allora verrà fatta anche la richiesta per il circuito Italia
|
||||
await User.setInseriscimiAncheInCircuitoITA(idapp, usernameOrig);
|
||||
ris = true;
|
||||
}
|
||||
} else if (cmd === shared_consts.CIRCUITCMD.REMOVE_FROM_MYLIST) {
|
||||
if (groupname) {
|
||||
@@ -4074,6 +4146,44 @@ UserSchema.statics.NonVoglioImbarcarmi = async function (idapp, username) {
|
||||
});
|
||||
};
|
||||
|
||||
UserSchema.statics.getInseriscimiAncheInCircuitoITA = async function (idapp, username) {
|
||||
const User = this;
|
||||
|
||||
return await User.findOne(
|
||||
{
|
||||
idapp,
|
||||
username,
|
||||
$or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
|
||||
},
|
||||
{ 'profile.insert_circuito_ita': 1 }
|
||||
)
|
||||
.lean()
|
||||
.then((rec) => {
|
||||
return !!rec ? rec.profile.insert_circuito_ita : null;
|
||||
})
|
||||
.catch((e) => {
|
||||
console.error('getInseriscimiAncheInCircuitoITA', e);
|
||||
});
|
||||
};
|
||||
UserSchema.statics.setInseriscimiAncheInCircuitoITA = async function (idapp, username) {
|
||||
const User = this;
|
||||
|
||||
const fields_to_update = {
|
||||
'profile.insert_circuito_ita': true,
|
||||
};
|
||||
|
||||
return await User.findOneAndUpdate(
|
||||
{
|
||||
idapp,
|
||||
username,
|
||||
},
|
||||
{ $set: fields_to_update },
|
||||
{ new: false }
|
||||
).then((record) => {
|
||||
return !!record;
|
||||
});
|
||||
};
|
||||
|
||||
UserSchema.statics.SetTelegramIdSuccess = async function (idapp, id, teleg_id) {
|
||||
const User = this;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user