diff --git a/.env.prod.pcb b/.env.prod.pcb
index 5cc47aa..d833b55 100644
--- a/.env.prod.pcb
+++ b/.env.prod.pcb
@@ -30,8 +30,8 @@ PATH_SERVER_CRT=fullchain.pem
PROD=1
PROJECT_DESCR_MAIN='__PROJECTS'
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
-TOKEN_LIFE=2h
-REFRESH_TOKEN_LIFE=14d
+TOKEN_LIFE=30d
+REFRESH_TOKEN_LIFE=30d
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNVZZ
DOMAINS=[{"hostname":"piuchebuono.app","port":"3030"},{"hostname":"gruppomacro.app","port":"3010"}]
DOMAINS_ALLOWED=["gruppomacro.app","piuchebuono.app"]
diff --git a/.env.prod.riso b/.env.prod.riso
index d3ad1fc..49e075c 100644
--- a/.env.prod.riso
+++ b/.env.prod.riso
@@ -27,8 +27,8 @@ PATH_SERVER_CRT=fullchain.pem
PROD=1
PROJECT_DESCR_MAIN='__PROJECTS'
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
-TOKEN_LIFE=2h
-REFRESH_TOKEN_LIFE=14d
+TOKEN_LIFE=30d
+REFRESH_TOKEN_LIFE=30d
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
DOMAINS=[{"hostname":"riso.app","port":"3006"},{"hostname":"freeplanet.app","port":"3000"},{"hostname":"nuovomondo.app","port":"3032"}]
DOMAINS_ALLOWED=["riso.app","comunitanuovomondo.app","nuovomondo.app","kolibrilab.it","artenergetica.org","freeplanet.app","www.freeplanet.app","freeplanet.app:3000","freeplanet.app:3001","www.freeplanet.app:3000","www.freeplanet.app:3001"]
diff --git a/src/models/circuit.js b/src/models/circuit.js
index 5334575..db31343 100755
--- a/src/models/circuit.js
+++ b/src/models/circuit.js
@@ -14,11 +14,10 @@ const { Account } = require('../models/account');
const { Province } = require('../models/province');
const shared_consts = require('../tools/shared_nodejs');
-
const i18n = require('i18n');
// Resolving error Unknown modifier: $pushAll
-mongoose.plugin(schema => {
+mongoose.plugin((schema) => {
schema.options.usePushEach = true;
});
@@ -53,17 +52,17 @@ const CircuitSchema = new Schema({
idCity: [
{
type: Number,
- }],
- strProv:
- {
+ },
+ ],
+ strProv: {
type: String,
},
- card: // Punti cardinali
- {
+ // Punti cardinali
+ card: {
type: String,
},
pub_to_share: {
- type: Number, // PUB_TO_SHARE_ALL, PUB_TO_SHARE_ONLY_TABLE_FOLLOW
+ type: Number, // PUB_TO_SHARE_ALL, PUB_TO_SHARE_ONLY_TABLE_FOLLOW
},
visibility: [
{
@@ -139,7 +138,8 @@ const CircuitSchema = new Schema({
deperimento: {
type: Boolean,
},
- freq_deper: { // H, D, W, M, Y
+ freq_deper: {
+ // H, D, W, M, Y
type: String,
},
minuto_deper: {
@@ -187,31 +187,36 @@ const CircuitSchema = new Schema({
description: {
type: String,
},
- }],
+ },
+ ],
req_users: [
{
_id: false,
username: { type: String },
date: { type: Date },
- }], // username
+ },
+ ], // username
refused_users: [
{
_id: false,
username: { type: String },
date: { type: Date },
- }], // username
+ },
+ ], // username
req_groups: [
{
_id: false,
groupname: { type: String },
date: { type: Date },
- }], // username
+ },
+ ], // username
refused_groups: [
{
_id: false,
groupname: { type: String },
date: { type: Date },
- }], // username
+ },
+ ], // username
deleted: {
type: Boolean,
default: false,
@@ -282,10 +287,11 @@ CircuitSchema.statics.findAllIdApp = async function (idapp) {
CircuitSchema.statics.isCircuitAdmin = async function (idrec, username) {
const Circuit = this;
-
const mycirc = await Circuit.findOne({ _id: idrec }).lean();
if (mycirc) {
- return mycirc.admins.some(admin => (admin.username === username) || (shared_consts.USER_ADMIN_CIRCUITS.includes(admin.username)));
+ return mycirc.admins.some(
+ (admin) => admin.username === username || shared_consts.USER_ADMIN_CIRCUITS.includes(admin.username)
+ );
}
return false;
@@ -358,32 +364,28 @@ CircuitSchema.statics.getWhatToShow = function (idapp, username) {
refused_users: 1,
req_groups: 1,
refused_groups: 1,
- 'mycities': 1,
+ mycities: 1,
};
-
};
// Aggiungi agli Admin del Circuito
CircuitSchema.statics.addToAdminOfMyCircuit = async function (idapp, username, name) {
-
- return await Circuit.updateOne({ idapp, name },
+ return await Circuit.updateOne(
+ { idapp, name },
{
- $push:
- {
+ $push: {
admins: {
username,
date: new Date(),
},
},
- });
-
+ }
+ );
};
// Rimuovi dagli Admin del Circuito
CircuitSchema.statics.removeAdminOfMyCircuit = async function (idapp, username, name) {
-
- return await Circuit.updateOne({ idapp, name },
- { $pull: { admins: { username: { $in: [username] } } } });
+ return await Circuit.updateOne({ idapp, name }, { $pull: { admins: { username: { $in: [username] } } } });
};
CircuitSchema.statics.getWhatToShow_Unknown = function (idapp, username) {
@@ -436,12 +438,11 @@ CircuitSchema.statics.getWhatToShow_Unknown = function (idapp, username) {
refused_groups: 1,
transactionsEnabled: 1,
status: 1,
- 'mycities': 1,
+ mycities: 1,
};
};
CircuitSchema.statics.getCircuitsByUsername = async function (idapp, username, user, nummovTodownload) {
-
try {
const { User } = require('../models/user');
const { Account } = require('../models/account');
@@ -453,42 +454,57 @@ CircuitSchema.statics.getCircuitsByUsername = async function (idapp, username, u
const manage_mycircuits = await Circuit.find({
idapp,
- 'admins': {
+ admins: {
$elemMatch: { username: { $eq: username } },
},
- $or: [
- { deleted: { $exists: false } },
- { deleted: { $exists: true, $eq: false } }],
- }).sort({ status: -1, numMembers: -1, name: 1 }).lean();
+ $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
+ })
+ .sort({ status: -1, numMembers: -1, name: 1 })
+ .lean();
- let listcircuits = await Circuit.find({
- idapp,
- $or: [
- { deleted: { $exists: false } },
- { deleted: { $exists: true, $eq: false } }],
- }, whatToShow_Unknown).sort({ name: 1 }).lean();
-
- let asked_circuits = await Circuit.find({
- idapp,
- 'req_users': {
- $elemMatch: { username: { $eq: username } },
+ let listcircuits = await Circuit.find(
+ {
+ idapp,
+ $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
},
- $or: [
- { deleted: { $exists: false } },
- { deleted: { $exists: true, $eq: false } }],
- }, whatToShow_Unknown).sort({ status: -1 }).lean();
+ whatToShow_Unknown
+ )
+ .sort({ name: 1 })
+ .lean();
- let refused_circuits = await Circuit.find({
- idapp,
- 'refused_users': {
- $elemMatch: { username: { $eq: username } },
+ let asked_circuits = await Circuit.find(
+ {
+ idapp,
+ req_users: {
+ $elemMatch: { username: { $eq: username } },
+ },
+ $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
},
- $or: [
- { deleted: { $exists: false } },
- { deleted: { $exists: true, $eq: false } }],
- }, whatToShow_Unknown).sort({ status: -1 }).lean();
+ whatToShow_Unknown
+ )
+ .sort({ status: -1 })
+ .lean();
- const last_my_transactions = await Movement.getLastN_Transactions(idapp, nummovTodownload, nummovTodownload, username, '');
+ let refused_circuits = await Circuit.find(
+ {
+ idapp,
+ refused_users: {
+ $elemMatch: { username: { $eq: username } },
+ },
+ $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
+ },
+ whatToShow_Unknown
+ )
+ .sort({ status: -1 })
+ .lean();
+
+ const last_my_transactions = await Movement.getLastN_Transactions(
+ idapp,
+ nummovTodownload,
+ nummovTodownload,
+ username,
+ ''
+ );
const total_transactions = await Movement.getNumTotalTransactions(idapp, username, '');
return {
@@ -498,9 +514,8 @@ CircuitSchema.statics.getCircuitsByUsername = async function (idapp, username, u
manage_mycircuits,
mycircuits: user.profile.mycircuits,
last_my_transactions,
- total_transactions
+ total_transactions,
};
-
} catch (e) {
console.log('Error getCircuitsByUsername', e);
}
@@ -511,12 +526,10 @@ CircuitSchema.statics.getCircuitsByUsername = async function (idapp, username, u
listTrusted: [],
asked_circuits: [],
refused_circuits: [],
-
};
};
CircuitSchema.statics.getInfoCircuitByName = async function (idapp, name) {
-
const whatToShow = this.getWhatToShow(idapp, '');
const myfind = {
@@ -526,15 +539,12 @@ CircuitSchema.statics.getInfoCircuitByName = async function (idapp, name) {
try {
return await Circuit.findOne(myfind, whatToShow).lean();
-
} catch (e) {
return null;
}
-
};
CircuitSchema.statics.getCircuitByName = async function (idapp, name) {
-
if (name === 'Circuito RIS Benevento') {
name = 'Circuito RIS Campania';
} else if (name === 'RIS Pesaro e Urbino') {
@@ -552,15 +562,12 @@ CircuitSchema.statics.getCircuitByName = async function (idapp, name) {
try {
return await Circuit.findOne(myfind);
-
} catch (e) {
return null;
}
-
};
CircuitSchema.statics.getCircuitIdByName = async function (idapp, name) {
-
const myfind = {
idapp,
name,
@@ -568,23 +575,20 @@ CircuitSchema.statics.getCircuitIdByName = async function (idapp, name) {
try {
const circuit = await Circuit.findOne(myfind);
- return (!!circuit ? circuit._id : 0);
-
+ return !!circuit ? circuit._id : 0;
} catch (e) {
return null;
}
-
};
CircuitSchema.statics.getCircuitByProvinceAndCard = async function (idapp, strProv, card) {
-
let myfind = {};
if (card) {
myfind = {
idapp,
strProv,
- card
+ card,
};
} else {
myfind = {
@@ -595,26 +599,21 @@ CircuitSchema.statics.getCircuitByProvinceAndCard = async function (idapp, strPr
try {
return await Circuit.findOne(myfind);
-
} catch (e) {
return null;
}
-
};
CircuitSchema.statics.getCircuitById = async function (circuitId) {
-
const myfind = {
_id: circuitId,
};
try {
return await Circuit.findOne(myfind);
-
} catch (e) {
return null;
}
-
};
CircuitSchema.statics.deleteCircuit = async function (idapp, usernameOrig, name) {
@@ -622,9 +621,7 @@ CircuitSchema.statics.deleteCircuit = async function (idapp, usernameOrig, name)
return await Circuit.findOneAndDelete({ idapp, name });
};
-
CircuitSchema.statics.getUsersSingleCircuit = async function (idapp, username, circuitname, circuitId) {
-
const { User } = require('../models/user');
try {
@@ -671,9 +668,8 @@ CircuitSchema.statics.getUsersSingleCircuit = async function (idapp, username, c
name: 1,
surname: 1,
profile: 1,
- idapp: 1 /*, 'circuit.name': 1, 'circuit._id': 1*/
+ idapp: 1 /*, 'circuit.name': 1, 'circuit._id': 1*/,
},
-
},
{
$lookup: {
@@ -682,16 +678,13 @@ CircuitSchema.statics.getUsersSingleCircuit = async function (idapp, username, c
let: { username: '$username', idapp: '$idapp', circuitId: circuitId /*, circuitId: '$circuit._id' */ },
pipeline: [
{
- $match:
- {
- $expr:
- {
- $and:
- [
- { $eq: ['$$username', '$username'] },
- { $eq: ['$$idapp', '$idapp'] },
- { $eq: ['$$circuitId', '$circuitId'] },
- ],
+ $match: {
+ $expr: {
+ $and: [
+ { $eq: ['$$username', '$username'] },
+ { $eq: ['$$idapp', '$idapp'] },
+ { $eq: ['$$circuitId', '$circuitId'] },
+ ],
},
},
},
@@ -707,22 +700,17 @@ CircuitSchema.statics.getUsersSingleCircuit = async function (idapp, username, c
} catch (e) {
console.error('e', e);
}
-
};
CircuitSchema.statics.getCircolanteSingolaTransaz = function (accountorigTable, accountdestTable) {
-
let circolante = 0;
- if (accountdestTable.saldo > 0)
- circolante += accountdestTable.saldo;
- if (accountorigTable.saldo > 0)
- circolante += accountorigTable.saldo;
+ if (accountdestTable.saldo > 0) circolante += accountdestTable.saldo;
+ if (accountorigTable.saldo > 0) circolante += accountorigTable.saldo;
return circolante;
};
CircuitSchema.statics.sendCoins = async function (onlycheck, idapp, usernameOrig, extrarec) {
-
const { User } = require('../models/user');
const { MyGroup } = require('./mygroup');
@@ -740,20 +728,30 @@ CircuitSchema.statics.sendCoins = async function (onlycheck, idapp, usernameOrig
try {
let circuittable = null;
- if (extrarec.circuitname)
- circuittable = await Circuit.getCircuitByName(idapp, extrarec.circuitname);
- if (extrarec.circuitId)
- circuittable = await Circuit.getCircuitById(idapp, extrarec.circuitId);
+ if (extrarec.circuitname) circuittable = await Circuit.getCircuitByName(idapp, extrarec.circuitname);
+ if (extrarec.circuitId) circuittable = await Circuit.getCircuitById(idapp, extrarec.circuitId);
if (circuittable) {
const myqty = Math.abs(extrarec.qty);
- const esisteDest = await Account.isExistAccountByUsernameAndCircuitId(idapp, extrarec.dest, circuittable._id, extrarec.groupdest, extrarec.contoComDest);
-
+ const esisteDest = await Account.isExistAccountByUsernameAndCircuitId(
+ idapp,
+ extrarec.dest,
+ circuittable._id,
+ extrarec.groupdest,
+ extrarec.contoComDest
+ );
if (!esisteDest) {
// Fallo entrare anche sul Circuito (oltre ad aver creato l'Account).
- await User.addCircuitToUser(idapp, usernameOrig, extrarec.circuitname, false, extrarec.groupdest, extrarec.contoComDest);
+ await User.addCircuitToUser(
+ idapp,
+ usernameOrig,
+ extrarec.circuitname,
+ false,
+ extrarec.groupdest,
+ extrarec.contoComDest
+ );
}
if (extrarec.dest) {
const foundIfAlreadyCircuit = await User.ifAlreadyInCircuit(idapp, extrarec.dest, extrarec.circuitname);
@@ -770,9 +768,24 @@ CircuitSchema.statics.sendCoins = async function (onlycheck, idapp, usernameOrig
}
}
- const accountdestTable = await Account.getAccountByUsernameAndCircuitId(idapp, extrarec.dest, circuittable._id, true, false, extrarec.groupdest, extrarec.contoComDest);
- const accountorigTable = await Account.getAccountByUsernameAndCircuitId(idapp, usernameOrig, circuittable._id, true, true, extrarec.grouporig, extrarec.contoComOrig);
-
+ const accountdestTable = await Account.getAccountByUsernameAndCircuitId(
+ idapp,
+ extrarec.dest,
+ circuittable._id,
+ true,
+ false,
+ extrarec.groupdest,
+ extrarec.contoComDest
+ );
+ const accountorigTable = await Account.getAccountByUsernameAndCircuitId(
+ idapp,
+ usernameOrig,
+ circuittable._id,
+ true,
+ true,
+ extrarec.grouporig,
+ extrarec.contoComOrig
+ );
const circolantePrec = this.getCircolanteSingolaTransaz(accountorigTable, accountdestTable);
@@ -794,11 +807,19 @@ CircuitSchema.statics.sendCoins = async function (onlycheck, idapp, usernameOrig
if (!onlycheck) {
// Add a Transaction !
if (ris.cansend) {
- ris.rec = await Movement.addMov(idapp, accountorigTable, accountdestTable, myqty, extrarec.causal, extrarec.causalDest, extrarec.notifId, extrarec.idOrdersCart);
+ ris.rec = await Movement.addMov(
+ idapp,
+ accountorigTable,
+ accountdestTable,
+ myqty,
+ extrarec.causal,
+ extrarec.causalDest,
+ extrarec.notifId,
+ extrarec.idOrdersCart
+ );
}
if (ris.cansend && ris.rec) {
-
const circolanteAtt = this.getCircolanteSingolaTransaz(accountorigTable, accountdestTable);
// Somma di tutte le transazioni
@@ -817,17 +838,43 @@ CircuitSchema.statics.sendCoins = async function (onlycheck, idapp, usernameOrig
let orig = usernameOrig;
if (extrarec.grouporig) {
- orig = extrarec.grouporig + ' (' + usernameOrig + ')'
+ orig = extrarec.grouporig + ' (' + usernameOrig + ')';
}
if (extrarec.contoComOrig) {
- orig = extrarec.contoComOrig + ' (' + usernameOrig + ')'
+ orig = extrarec.contoComOrig + ' (' + usernameOrig + ')';
}
- let dest = (extrarec.dest ? extrarec.dest : '') + (extrarec.groupdest ? extrarec.groupdest : '') + (extrarec.contoComDest ? extrarec.contoComDest : '');
+ let dest =
+ (extrarec.dest ? extrarec.dest : '') +
+ (extrarec.groupdest ? extrarec.groupdest : '') +
+ (extrarec.contoComDest ? extrarec.contoComDest : '');
ris.result = true;
- let causalDest = extrarec.causalDest ? 'Causale Destinatario: ' + extrarec.causalDest : ''
- let msg = '[' + circuittable.name + ']: Inviate Monete da ' + orig + ' a ' + dest + ' ' + myqty + ' ' + circuittable.symbol + ' [causale: ' + extrarec.causal +
- `]\n` + causalDest+ `\nSaldi:\n${orig}: ` + extrarec.saldoOrig + ' ' + circuittable.symbol + '] ' + `\n${dest}: ` + extrarec.saldoDest + ' ' + circuittable.symbol + ']';
+ let causalDest = extrarec.causalDest ? 'Causale Destinatario: ' + extrarec.causalDest : '';
+ let msg =
+ '[' +
+ circuittable.name +
+ ']: Inviate Monete da ' +
+ orig +
+ ' a ' +
+ dest +
+ ' ' +
+ myqty +
+ ' ' +
+ circuittable.symbol +
+ ' [causale: ' +
+ extrarec.causal +
+ `]\n` +
+ causalDest +
+ `\nSaldi:\n${orig}: ` +
+ extrarec.saldoOrig +
+ ' ' +
+ circuittable.symbol +
+ '] ' +
+ `\n${dest}: ` +
+ extrarec.saldoDest +
+ ' ' +
+ circuittable.symbol +
+ ']';
console.log(msg);
ris.useraccounts = await Account.getUserAccounts(idapp, usernameOrig);
@@ -840,8 +887,10 @@ CircuitSchema.statics.sendCoins = async function (onlycheck, idapp, usernameOrig
try {
const paramsrec = {
- mittente, nomecircuito: circuittable.name,
- symbol: circuittable.symbol, qty: myqty,
+ mittente,
+ nomecircuito: circuittable.name,
+ symbol: circuittable.symbol,
+ qty: myqty,
transactionDate: ris.rec.transactionDate,
causale: extrarec.causal,
causalDest: extrarec.causalDest,
@@ -851,94 +900,83 @@ CircuitSchema.statics.sendCoins = async function (onlycheck, idapp, usernameOrig
// Invia una email al destinatario !
await sendemail.sendEmail_RisRicevuti(myuserDest.lang, myuserDest, myuserDest.email, idapp, paramsrec);
-
} else if (extrarec.groupdest || extrarec.contoComDest) {
- const groupDestoContoCom = extrarec.groupdest ? extrarec.groupdest : (extrarec && extrarec.contoComDest ? extrarec.contoComDest : '');
+ const groupDestoContoCom = extrarec.groupdest
+ ? extrarec.groupdest
+ : extrarec && extrarec.contoComDest
+ ? extrarec.contoComDest
+ : '';
let arrusers = await MyGroup.getListAdminsByGroupName(idapp, groupDestoContoCom);
- if (arrusers.length <= 0)
- arrusers = await Circuit.getListAdminsByCircuitPath(idapp, groupDestoContoCom);
+ if (arrusers.length <= 0) arrusers = await Circuit.getListAdminsByCircuitPath(idapp, groupDestoContoCom);
paramsrec.groupDestoContoCom = groupDestoContoCom;
for (let i = 0; i < arrusers.length; i++) {
-
let myuserDest = await User.getUserByUsername(idapp, arrusers[i].username);
// Invia una email al destinatario !
await sendemail.sendEmail_RisRicevuti(myuserDest.lang, myuserDest, myuserDest.email, idapp, paramsrec);
-
}
}
} catch (e) {
console.error('Err Email sendCoins', e);
}
-
} else {
// console.log('NON Inviate Monete da', usernameOrig, extrarec.grouporig, extrarec.dest, extrarec.groupdest, myqty, extrarec.causal);
}
}
return ris;
-
}
} catch (e) {
console.error('Err sendCoins', e);
ris.result = false;
return ris;
}
-
};
// Rimuovo la Richiesta del Circuito
CircuitSchema.statics.removeReqCircuit = async function (idapp, username, name) {
-
- return await Circuit.updateOne({ idapp, name },
- { $pull: { req_users: { username: { $in: [username] } } } });
+ return await Circuit.updateOne({ idapp, name }, { $pull: { req_users: { username: { $in: [username] } } } });
};
// Rimuovo la Richiesta del Gruppo sul Circuito
CircuitSchema.statics.removeReqGroupCircuit = async function (idapp, groupname, name) {
-
- return await Circuit.updateOne({ idapp, name },
- { $pull: { req_groups: { groupname: { $in: [groupname] } } } });
+ return await Circuit.updateOne({ idapp, name }, { $pull: { req_groups: { groupname: { $in: [groupname] } } } });
};
// Aggiungi agli utenti Rifiutati del Circuito
CircuitSchema.statics.refuseReqCircuit = async function (idapp, username, name) {
-
- return await Circuit.updateOne({ idapp, name },
+ return await Circuit.updateOne(
+ { idapp, name },
{
- $push:
- {
+ $push: {
refused_users: {
username,
date: new Date(),
},
},
- });
-
+ }
+ );
};
CircuitSchema.statics.refuseReqGroupCircuit = async function (idapp, groupname, name) {
-
- return await Circuit.updateOne({ idapp, name },
+ return await Circuit.updateOne(
+ { idapp, name },
{
- $push:
- {
+ $push: {
refused_groups: {
groupname,
date: new Date(),
},
},
- });
-
+ }
+ );
};
CircuitSchema.statics.updateData = async function (idapp, circuitname) {
-
try {
-
const { User } = require('./user');
let aggr1 = [
@@ -958,10 +996,7 @@ CircuitSchema.statics.updateData = async function (idapp, circuitname) {
let numMembers = 0;
try {
numMembers = ris && tools.isArray(ris) ? ris[0].count : 0;
- } catch (e) {
-
- };
-
+ } catch (e) {}
let paramstoupdate = {
numMembers: numMembers,
@@ -969,62 +1004,47 @@ CircuitSchema.statics.updateData = async function (idapp, circuitname) {
const risult = await this.updateOne({ idapp, name: circuitname }, { $set: paramstoupdate });
console.log('risult', risult);
-
} catch (e) {
console.error('Err', e);
}
-
};
CircuitSchema.statics.setDeperimentoOff = async function () {
-
- return await Circuit.updateMany({}, { $set: { 'deperimento': false } },
- { new: false });
-
+ return await Circuit.updateMany({}, { $set: { deperimento: false } }, { new: false });
};
CircuitSchema.statics.getNameByCircuitId = async function (circuitId) {
-
let circuit = await Circuit.findOne({ _id: circuitId });
- if (circuit)
- return circuit.name;
+ if (circuit) return circuit.name;
return '';
-
};
CircuitSchema.statics.getPathByCircuitName = async function (idapp, circuitName) {
-
let circuit = await Circuit.findOne({ idapp, name: circuitName }).lean();
- if (circuit)
- return '/' + shared_consts.getDirectoryByTable('circuits') + '/' + circuit.path;
+ if (circuit) return '/' + shared_consts.getDirectoryByTable('circuits') + '/' + circuit.path;
return '';
-
};
CircuitSchema.statics.getCircuitByCircuitId = async function (circuitId) {
-
return await Circuit.findOne({ _id: circuitId });
-
};
CircuitSchema.statics.getListAdminsByCircuitPath = async function (idapp, circuitPath) {
-
- let arr = await Circuit.findOne({
- idapp,
- path: circuitPath,
- $or: [
- { deleted: { $exists: false } },
- { deleted: { $exists: true, $eq: false } }],
- }, { admins: 1 }).lean();
+ let arr = await Circuit.findOne(
+ {
+ idapp,
+ path: circuitPath,
+ $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
+ },
+ { admins: 1 }
+ ).lean();
let myarr = arr && arr.admins ? arr.admins : [];
- return [...myarr, ...shared_consts.USER_ADMIN_CIRCUITS]
-
+ return [...myarr, ...shared_consts.USER_ADMIN_CIRCUITS];
};
-
// Imposta a tutti i Conti Collettivi, i seguenti minimi e massimi
CircuitSchema.statics.setstrProvByIdCityCircuits = async function (idapp) {
const { City } = require('../models/city');
@@ -1034,68 +1054,63 @@ CircuitSchema.statics.setstrProvByIdCityCircuits = async function (idapp) {
for (const rec of arrcircuits) {
let recstrProv = await City.findOne({ _id: rec.idCity[0] });
if (recstrProv) {
- let objProv = {}
+ let objProv = {};
objProv['strProv'] = recstrProv.prov;
await Circuit.updateOne({ _id: rec._id }, { $set: objProv });
}
}
- } catch (e) {
-
- }
-
+ } catch (e) {}
};
-
CircuitSchema.statics.AbilitaTuttiCircuiti = async function (idapp) {
-
- const ris = await Circuit.updateMany({ idapp },
+ const ris = await Circuit.updateMany(
+ { idapp },
{
- $set:
- {
- transactionsEnabled: true
- }
- });
+ $set: {
+ transactionsEnabled: true,
+ },
+ }
+ );
return ris;
};
CircuitSchema.statics.AzzeraRegolamentiTuttiCircuiti = async function (idapp) {
-
- const ris = await Circuit.updateMany({ idapp },
+ const ris = await Circuit.updateMany(
+ { idapp },
{
- $set:
- {
+ $set: {
regulation: '',
- }
- });
+ },
+ }
+ );
return ris;
};
// Imposta a tutti i Conti Personali, i seguenti minimi e massimi
CircuitSchema.statics.SetDefMinMaxPersonali = async function (idapp, valmin, valmax, circuitId) {
-
if (circuitId) {
- const ris = await Circuit.updateOne({ _id: circuitId },
+ const ris = await Circuit.updateOne(
+ { _id: circuitId },
{
- $set:
- {
+ $set: {
fido_scoperto_default: valmin,
qta_max_default: valmax,
- }
- });
+ },
+ }
+ );
} else {
-
- const ris = await Circuit.updateMany({ idapp },
+ const ris = await Circuit.updateMany(
+ { idapp },
{
- $set:
- {
+ $set: {
fido_scoperto_default: valmin,
qta_max_default: valmax,
- }
- });
+ },
+ }
+ );
}
-
};
// Imposta a tutti i Conti Collettivi, i seguenti minimi e massimi
@@ -1105,7 +1120,11 @@ CircuitSchema.statics.getCircuitMyProvince = async function (idapp, username) {
const myuser = await User.getUserByUsername(idapp, username);
try {
- const circuit = await this.getCircuitByProvinceAndCard(idapp, myuser.profile.resid_province, myuser.profile.resid_card);
+ const circuit = await this.getCircuitByProvinceAndCard(
+ idapp,
+ myuser.profile.resid_province,
+ myuser.profile.resid_card
+ );
if (circuit) {
if (await User.ifAlreadyInCircuit(idapp, username, circuit.name)) {
@@ -1114,7 +1133,6 @@ CircuitSchema.statics.getCircuitMyProvince = async function (idapp, username) {
}
return '[nessun Circuito]';
-
} catch (e) {
console.error('Error', e);
}
@@ -1156,7 +1174,7 @@ CircuitSchema.statics.createCircuitIfNotExist = async function (req, idapp, prov
totTransato: 0,
totCircolante: 0,
date_created: new Date(),
- admins: useradmin.map(username => ({ username })),
+ admins: useradmin.map((username) => ({ username })),
askManagerToEnter: false,
sendEmailAfterAskingToEnter: false,
circuitoIndipendente: false,
@@ -1165,19 +1183,27 @@ CircuitSchema.statics.createCircuitIfNotExist = async function (req, idapp, prov
myrec = await circ.save();
if (myrec) {
-
// nuovo Circuito:
- await User.setCircuitCmd(idapp, useradmin, myrec.name,
- shared_consts.CIRCUITCMD.CREATE, true, useradmin, myrec).then((ris) => {
-
- });
+ await User.setCircuitCmd(
+ idapp,
+ useradmin,
+ myrec.name,
+ shared_consts.CIRCUITCMD.CREATE,
+ true,
+ useradmin,
+ myrec
+ ).then((ris) => {});
// aggiungi il creatore al Circuito stesso
- await User.setCircuitCmd(idapp, useradmin, myrec.name,
- shared_consts.CIRCUITCMD.SET, true, useradmin, myrec).then((ris) => {
-
- });
-
+ await User.setCircuitCmd(
+ idapp,
+ useradmin,
+ myrec.name,
+ shared_consts.CIRCUITCMD.SET,
+ true,
+ useradmin,
+ myrec
+ ).then((ris) => {});
}
msg = 'Nuovo Circuito Creato in Automatico: ' + myrec.name + ' (da ' + req.user.username + ')';
@@ -1188,54 +1214,49 @@ CircuitSchema.statics.createCircuitIfNotExist = async function (req, idapp, prov
}
return myrec;
-
};
CircuitSchema.statics.getListAdmins = async function (idapp, circuitname) {
-
- let arr = await Circuit.findOne({
- idapp,
- name: circuitname,
- $or: [
- { deleted: { $exists: false } },
- { deleted: { $exists: true, $eq: false } }],
- }, { admins: 1 }).lean();
+ let arr = await Circuit.findOne(
+ {
+ idapp,
+ name: circuitname,
+ $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
+ },
+ { admins: 1 }
+ ).lean();
let mystr = '';
if (arr) {
for (const admin of arr.admins) {
- mystr += await tools.getAhref(admin.username, await tools.getLinkUserTelegram(idapp, admin.username)) + ', ';
+ mystr += (await tools.getAhref(admin.username, await tools.getLinkUserTelegram(idapp, admin.username))) + ', ';
}
}
return { str: mystr, num: arr ? arr.admins.length : 0 };
-
};
CircuitSchema.statics.isAdminCircuit = async function (idapp, circuitname, username) {
-
- let arr = await Circuit.findOne({
- idapp,
- name: circuitname,
- $or: [
- { deleted: { $exists: false } },
- { deleted: { $exists: true, $eq: false } }],
- }, { admins: 1 }).lean();
+ let arr = await Circuit.findOne(
+ {
+ idapp,
+ name: circuitname,
+ $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
+ },
+ { admins: 1 }
+ ).lean();
if (arr) {
for (const admin of arr.admins) {
- if (shared_consts.USER_ADMIN_CIRCUITS.includes(username) || (admin.username === username))
- return true;
+ if (shared_consts.USER_ADMIN_CIRCUITS.includes(username) || admin.username === username) return true;
}
}
return false;
-
};
CircuitSchema.statics.getListCircuitsByUsername = async function (idapp, username, groupname) {
-
let mystr = '';
const { User } = require('../models/user');
const myuser = await User.getUserByUsername(idapp, username);
@@ -1243,10 +1264,8 @@ CircuitSchema.statics.getListCircuitsByUsername = async function (idapp, usernam
const useraccounts = await Account.getUserAccounts(idapp, username);
const groupsaccounts = await Account.getGroupAccounts(idapp, groupname);
-
-
for (let account of useraccounts) {
- if (myuser.profile.mycircuits.find((rec) => (rec.circuitname === account.circuit.name))) {
+ if (myuser.profile.mycircuits.find((rec) => rec.circuitname === account.circuit.name)) {
if (account.groupname === '') {
mystr += '\n👉🏻 ' + account.circuit.name + '\n';
mystr += ' [Saldo: ' + account.saldo + ' RIS, ';
@@ -1256,9 +1275,8 @@ CircuitSchema.statics.getListCircuitsByUsername = async function (idapp, usernam
}
}
-
for (let account of groupsaccounts) {
- if (myuser.profile.mycircuits.find((rec) => (rec.circuitname === account.circuit.name))) {
+ if (myuser.profile.mycircuits.find((rec) => rec.circuitname === account.circuit.name)) {
mystr += '\n GRUPPO: 👉🏻 ' + account.groupname + ' in ' + account.circuit.name + '\n';
mystr += ' [Saldo: ' + account.saldo + ' RIS, ';
mystr += ' Fiducia: ' + account.fidoConcesso + ' RIS, ';
@@ -1271,36 +1289,33 @@ CircuitSchema.statics.getListCircuitsByUsername = async function (idapp, usernam
}
return mystr;
-
};
CircuitSchema.statics.SetDefMinMaxCollettivi = async function (idapp, valmin, valmax, circuitId) {
-
if (circuitId) {
- const ris = await Circuit.updateOne({ _id: circuitId },
+ const ris = await Circuit.updateOne(
+ { _id: circuitId },
{
- $set:
- {
+ $set: {
fido_scoperto_default_grp: valmin,
qta_max_default_grp: valmax,
- }
- });
+ },
+ }
+ );
} else {
- const ris = await Circuit.updateMany({ idapp },
+ const ris = await Circuit.updateMany(
+ { idapp },
{
- $set:
- {
+ $set: {
fido_scoperto_default_grp: valmin,
qta_max_default_grp: valmax,
- }
- });
+ },
+ }
+ );
}
-
};
-
CircuitSchema.statics.setFido = async function (idapp, username, circuitName, groupname) {
-
try {
mycircuit = await Circuit.findOne({ idapp, name: circuitName }).lean();
if (mycircuit) {
@@ -1312,7 +1327,6 @@ CircuitSchema.statics.setFido = async function (idapp, username, circuitName, gr
let variato2 = false;
if (mycircuit.isCircItalia) {
-
const { User } = require('../models/user');
const myuser = await User.getUserByUsername(idapp, username);
@@ -1321,7 +1335,11 @@ CircuitSchema.statics.setFido = async function (idapp, username, circuitName, gr
const accountsuser = await Account.getUserAccounts(idapp, username);
if (accountsuser) {
// Se lo trovo della mia provincia, prendo quello
- account = accountsuser.find((account) => account.circuit.strProv === myuser.profile.resid_province && ((account.circuit.card === myuser.profile.resid_card) || !myuser.profile.resid_card))
+ account = accountsuser.find(
+ (account) =>
+ account.circuit.strProv === myuser.profile.resid_province &&
+ (account.circuit.card === myuser.profile.resid_card || !myuser.profile.resid_card)
+ );
if (!account && accountsuser.length > 0) {
// Se non lo trovo, prendo il primo in cui sono entrato !
account = accountsuser[0];
@@ -1339,13 +1357,10 @@ CircuitSchema.statics.setFido = async function (idapp, username, circuitName, gr
// Se non ho Circuiti locali, non applico il Fido !
return null;
}
-
} else {
account = await Account.getAccountByUsernameAndCircuitId(idapp, username, circuitId, true, true, groupname, '');
- if (groupname)
- fido = mycircuit.fido_scoperto_default_grp;
- else
- fido = mycircuit.fido_scoperto_default;
+ if (groupname) fido = mycircuit.fido_scoperto_default_grp;
+ else fido = mycircuit.fido_scoperto_default;
}
if (account) {
@@ -1364,6 +1379,49 @@ CircuitSchema.statics.setFido = async function (idapp, username, circuitName, gr
}
return null;
};
+CircuitSchema.statics.getFido = async function (idapp, username, circuitName, groupname) {
+ try {
+ mycircuit = await Circuit.findOne({ idapp, name: circuitName }).lean();
+ if (mycircuit) {
+ const circuitId = mycircuit._id;
+
+ if (mycircuit.isCircItalia) {
+ const { User } = require('../models/user');
+
+ const myuser = await User.getUserByUsername(idapp, username);
+
+ // Se è il circuito Nazionale, allora prende i valori dal proprio Circuito Locale:
+ const accountsuser = await Account.getUserAccounts(idapp, username);
+ if (accountsuser) {
+ // Se lo trovo della mia provincia, prendo quello
+ account = accountsuser.find(
+ (account) =>
+ account.circuit.strProv === myuser.profile.resid_province &&
+ (account.circuit.card === myuser.profile.resid_card || !myuser.profile.resid_card)
+ );
+ if (!account && accountsuser.length > 0) {
+ // Se non lo trovo, prendo il primo in cui sono entrato !
+ account = accountsuser[0];
+ }
+ } else {
+ // Se non ho Circuiti locali, non applico il Fido !
+ return 0;
+ }
+ } else {
+ account = await Account.getAccountByUsernameAndCircuitId(idapp, username, circuitId, true, true, groupname, '');
+ }
+
+ if (account) {
+ return account.fidoConcesso;
+ }
+
+ return 0;
+ }
+ } catch (e) {
+ console.error('Err:', e);
+ }
+ return null;
+};
CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
const { User } = require('../models/user');
@@ -1375,63 +1433,58 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
try {
console.log('--------- INIZIO CONTROLLO CheckTransazioniCircuiti -----------');
- if (correggi)
- console.log('CORREZIONE !');
- else
- console.log('SOLO VERIFICA');
-
+ if (correggi) console.log('CORREZIONE !');
+ else console.log('SOLO VERIFICA');
if (correggi) {
// Trova tutti i documenti che contengono circuitname a null nell'array mycircuits
- const usersWithNullCircuit = await User.find({ idapp, "profile.mycircuits.circuitname": null });
+ const usersWithNullCircuit = await User.find({ idapp, 'profile.mycircuits.circuitname': null });
// Itera su ciascun documento
for (const user of usersWithNullCircuit) {
// Rimuove i campi null dall'array mycircuits
- user.profile.mycircuits = user.profile.mycircuits.filter(circuit => circuit.circuitname !== null);
+ user.profile.mycircuits = user.profile.mycircuits.filter((circuit) => circuit.circuitname !== null);
// Salva le modifiche al documento
await User.findOneAndUpdate({ _id: user._id }, { $set: { 'profile.mycircuits': user.profile.mycircuits } });
-
}
}
-
let usersWithDuplicateCircuits = await User.aggregate([
{
- $unwind: "$profile.mycircuits"
+ $unwind: '$profile.mycircuits',
},
{
$group: {
_id: {
- userId: "$_id",
- username: "$username",
- circuitname: "$profile.mycircuits.circuitname"
+ userId: '$_id',
+ username: '$username',
+ circuitname: '$profile.mycircuits.circuitname',
},
- count: { $sum: 1 }
- }
+ count: { $sum: 1 },
+ },
},
{
$match: {
- count: { $gt: 1 }
- }
+ count: { $gt: 1 },
+ },
},
{
$group: {
- _id: "$_id.userId",
- username: { $first: "$_id.username" },
+ _id: '$_id.userId',
+ username: { $first: '$_id.username' },
duplicatedCircuits: {
- $push: "$_id.circuitname"
- }
- }
- }
+ $push: '$_id.circuitname',
+ },
+ },
+ },
]);
if (usersWithDuplicateCircuits.length > 0) {
- console.log("Utenti con circuitname duplicati:");
- usersWithDuplicateCircuits.forEach(user => {
- console.log("Username:", user.username);
- console.log("Circuiti duplicati:", user.duplicatedCircuits);
+ console.log('Utenti con circuitname duplicati:');
+ usersWithDuplicateCircuits.forEach((user) => {
+ console.log('Username:', user.username);
+ console.log('Circuiti duplicati:', user.duplicatedCircuits);
});
if (correggi) {
@@ -1442,20 +1495,29 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
let risdel = await User.updateOne(
{ _id: user._id },
- { $pull: { "profile.mycircuits": { circuitname: { $in: user.duplicatedCircuits } } } }
+ { $pull: { 'profile.mycircuits': { circuitname: { $in: user.duplicatedCircuits } } } }
);
let risadd = await User.updateOne(
{ _id: user._id },
- { $push: { "profile.mycircuits": { $each: user.duplicatedCircuits.map(circuitname => ({ circuitname, date: arraycirc.profile.mycircuits.find((rec) => rec.circuitname === circuitname).date })) } } }
+ {
+ $push: {
+ 'profile.mycircuits': {
+ $each: user.duplicatedCircuits.map((circuitname) => ({
+ circuitname,
+ date: arraycirc.profile.mycircuits.find((rec) => rec.circuitname === circuitname).date,
+ })),
+ },
+ },
+ }
);
console.log('DEL', risdel, 'risadd', risadd);
}
}
- console.log("*** FINE DUPLICATI *** ");
+ console.log('*** FINE DUPLICATI *** ');
} else {
- console.log("Nessun utente ha circuitname duplicati.");
+ console.log('Nessun utente ha circuitname duplicati.');
}
let numtransazionitot = 0;
@@ -1468,9 +1530,9 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
let qta = 0;
- let mystr = ''
+ let mystr = '';
- // 1. Calcola la somma di tutti i Saldi
+ // 1. Calcola la somma di tutti i Saldi
// prendo la lista di tutti gli account del circuito
@@ -1487,7 +1549,7 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
return acc;
}, {});
- const duplicatedUsernames = Object.keys(usernameCounts).filter(username => usernameCounts[username] > 1);
+ const duplicatedUsernames = Object.keys(usernameCounts).filter((username) => usernameCounts[username] > 1);
if (duplicatedUsernames.length > 0) {
mystr += ' Esistono username duplicati (escludendo quelli vuoti):' + duplicatedUsernames;
@@ -1495,20 +1557,26 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
let saldotot = 0;
- let ris = await User.find({
- "profile.mycircuits": { $elemMatch: { circuitname: circuit.name } }
- }, "username").lean()
+ let ris = await User.find(
+ {
+ 'profile.mycircuits': { $elemMatch: { circuitname: circuit.name } },
+ },
+ 'username'
+ ).lean();
- let arrusers_byprofile = ris ? ris.map(user => user.username) : [];
+ let arrusers_byprofile = ris ? ris.map((user) => user.username) : [];
- let risgroups = await MyGroup.find({
- "mycircuits": { $elemMatch: { circuitname: circuit.name } }
- }, "groupname").lean()
+ let risgroups = await MyGroup.find(
+ {
+ mycircuits: { $elemMatch: { circuitname: circuit.name } },
+ },
+ 'groupname'
+ ).lean();
- let arrgroups_byprofile = risgroups ? risgroups.map(group => group.groupname) : [];
+ let arrgroups_byprofile = risgroups ? risgroups.map((group) => group.groupname) : [];
let arrusers_byaccounts = [];
- let ind = 0
+ let ind = 0;
let stracc = '';
for (const account of accounts) {
@@ -1526,34 +1594,27 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
let result = await Movement.aggregate([
{
$match: {
- $or: [
- { accountFromId: account._id },
- { accountToId: account._id },
- ]
- }
+ $or: [{ accountFromId: account._id }, { accountToId: account._id }],
+ },
},
{
$group: {
_id: null,
numtransactions: { $sum: 1 },
- totTransato: { $sum: { $abs: "$amount" } },
+ totTransato: { $sum: { $abs: '$amount' } },
saldo: {
$sum: {
$cond: [
- { $eq: ["$accountToId", account._id] },
- "$amount",
+ { $eq: ['$accountToId', account._id] },
+ '$amount',
{
- $cond: [
- { $eq: ["$accountFromId", account._id] },
- { $multiply: ["$amount", -1] },
- 0
- ]
- }
- ]
- }
- }
- }
- }
+ $cond: [{ $eq: ['$accountFromId', account._id] }, { $multiply: ['$amount', -1] }, 0],
+ },
+ ],
+ },
+ },
+ },
+ },
]);
let numtransactions = result && result.length > 0 ? result[0].numtransactions : 0;
@@ -1562,7 +1623,12 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
// TRANSAZIONI PENDENTI:
let saldo_pend = 0;
- let pendingtransactionsMittente = await SendNotif.getSumPendingTransactionsMittente(account.idapp, account.username, circuit.name, account.groupname);
+ let pendingtransactionsMittente = await SendNotif.getSumPendingTransactionsMittente(
+ account.idapp,
+ account.username,
+ circuit.name,
+ account.groupname
+ );
if (pendingtransactionsMittente.length > 0) {
let saldopendingMitt = pendingtransactionsMittente.reduce((sum, rec) => sum + rec.extrarec.qty, 0);
// transatopending = pendingtransactionsMittente.reduce((sum, rec) => sum + Math.abs(rec.extrarec.qty), 0);
@@ -1575,28 +1641,24 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
let strtemp = '';
if (numtransactions > 0) {
- if (correggi)
- await Account.findOneAndUpdate({ _id: account._id }, { $set: { numtransactions } })
+ if (correggi) await Account.findOneAndUpdate({ _id: account._id }, { $set: { numtransactions } });
}
if (saldo !== account.saldo) {
aggiorna = true;
strtemp += ' SALDO DIFFERENTE ! => ' + '\nPRIMA: ' + account.saldo + '\nDOPO: ' + saldo;
- if (correggi)
- await Account.findOneAndUpdate({ _id: account._id }, { $set: { saldo } })
+ if (correggi) await Account.findOneAndUpdate({ _id: account._id }, { $set: { saldo } });
}
if (account.saldo_pend === undefined) {
- await Account.findOneAndUpdate({ _id: account._id }, { $set: { saldo_pend: 0 } })
+ await Account.findOneAndUpdate({ _id: account._id }, { $set: { saldo_pend: 0 } });
}
if (saldo_pend !== account.saldo_pend) {
aggiorna = true;
strtemp += ' SALDO_PENDENTE DIFF. ! => ' + '\nPRIMA: ' + account.saldo_pend + '\nDOPO: ' + saldo_pend;
- if (correggi)
- await Account.findOneAndUpdate({ _id: account._id }, { $set: { saldo_pend } })
+ if (correggi) await Account.findOneAndUpdate({ _id: account._id }, { $set: { saldo_pend } });
}
- if (!account.totTransato || (totTransato !== account.totTransato)) {
+ if (!account.totTransato || totTransato !== account.totTransato) {
if (totTransato > account.totTransato || account.totTransato === undefined)
- if (correggi)
- await Account.findOneAndUpdate({ _id: account._id }, { $set: { totTransato } })
+ if (correggi) await Account.findOneAndUpdate({ _id: account._id }, { $set: { totTransato } });
}
saldotot += account.saldo;
@@ -1604,10 +1666,8 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
// if (account.totTransato === NaN || account.totTransato === undefined)
// stracc += ' TOTTRANSATO => ' + account.totTransato;
- if (account.totTransato)
- qta += account.totTransato;
- if (account.numtransactions)
- numtransazionitot += account.numtransactions;
+ if (account.totTransato) qta += account.totTransato;
+ if (account.numtransactions) numtransazionitot += account.numtransactions;
if (aggiorna && strtemp) {
stracc += '\n ** Account ' + account.username + '\n' + strtemp;
@@ -1618,7 +1678,7 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
}
let numaccounts = accounts.length;
- let esistecontocom = accounts.find((rec) => (rec.hasOwnProperty('contocom') && rec.contocom !== ''));
+ let esistecontocom = accounts.find((rec) => rec.hasOwnProperty('contocom') && rec.contocom !== '');
let numacc_profile = arrusers_byprofile.length + arrgroups_byprofile.length;
if (esistecontocom && esistecontocom.contocom === circuit.path) {
@@ -1629,42 +1689,32 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
mystr += ' IL NUMERO DI UTENTI NON COINCIDONO ! \n';
mystr += 'Utenti Profilo = ' + numacc_profile + '\n';
mystr += 'Utenti Accounts = ' + arrusers_byaccounts.length + '\n';
-
}
saldotot = saldotot.toFixed(2);
// mystr += ' numaccounts=' + numaccounts;
- if (strusersnotinaCircuit)
- mystr += ' Utenti non presenti nel Circuito ! => ' + strusersnotinaCircuit;
- if (strusersnotExist)
- mystr += ' Utenti non più esistenti ! => ' + strusersnotExist;
-
+ if (strusersnotinaCircuit) mystr += ' Utenti non presenti nel Circuito ! => ' + strusersnotinaCircuit;
+ if (strusersnotExist) mystr += ' Utenti non più esistenti ! => ' + strusersnotExist;
// Verifica se saldotot è uguale a ZERO
if (saldotot != 0) {
mystr += '*** ATTENZIONE! ' + circuit.name + ' ha come somma un saldo di ' + saldotot + ' invece che ZERO';
} else {
- if (numtransazionitot)
- mystr += ' qta=' + qta + ' numtransazionitot ' + numtransazionitot;
+ if (numtransazionitot) mystr += ' qta=' + qta + ' numtransazionitot ' + numtransazionitot;
}
if (mystr || stracc) {
console.log('************************* ' + circuit.name + ':');
console.log(mystr);
- if (stracc)
- console.log(stracc);
+ if (stracc) console.log(stracc);
}
-
-
}
- console.log('--------- FINE CONTROLLO CheckTransazioniCircuiti -----------', 'Transazioni = ', numtransazionitot)
-
+ console.log('--------- FINE CONTROLLO CheckTransazioniCircuiti -----------', 'Transazioni = ', numtransazionitot);
} catch (e) {
console.error('Err', e);
}
-
};
CircuitSchema.statics.replaceAllCircuitNames = async function (idapp) {
@@ -1695,8 +1745,7 @@ CircuitSchema.statics.replaceAllCircuitNames = async function (idapp) {
if (circuit.idCity && circuit.idCity.length > 0) {
provincia = await City.getProvinceByIdCity(circuit.idCity[0]);
}
- if (!provincia)
- provincia = circuit.strProv;
+ if (!provincia) provincia = circuit.strProv;
if (provincia) {
provincia = await Province.getStrProvinceByProv(provincia);
}
@@ -1727,69 +1776,60 @@ CircuitSchema.statics.replaceAllCircuitNames = async function (idapp) {
newname = 'Circuito RIS Repubblica di San Marino';
}
- if (((newname !== circuit.name) && (newname.indexOf('ROMA') === -1)) || path) {
-
+ if ((newname !== circuit.name && newname.indexOf('ROMA') === -1) || path) {
console.log(`Sostituisci ${circuit.name} con ${newname}`);
quanti++;
if (path) {
- // Update path
- await Circuit.findOneAndUpdate({ _id: circuitId }, { $set: { path } })
- .catch(e => console.error('Err ', e));
+ // Update path
+ await Circuit.findOneAndUpdate({ _id: circuitId }, { $set: { path } }).catch((e) =>
+ console.error('Err ', e)
+ );
}
- await Circuit.findOneAndUpdate({ _id: circuitId }, { $set: { name: newname } })
- .catch(e => console.error('Err ', e));
+ await Circuit.findOneAndUpdate({ _id: circuitId }, { $set: { name: newname } }).catch((e) =>
+ console.error('Err ', e)
+ );
// Rename profile.mycircuits.circuitname in User
- await User.renameCircuitName(idapp, circuit.name, newname)
- .catch(e => console.error('Err ', e));
-
- await MyGroup.renameCircuitName(idapp, circuit.name, newname)
- .catch(e => console.error('Err ', e));
+ await User.renameCircuitName(idapp, circuit.name, newname).catch((e) => console.error('Err ', e));
+ await MyGroup.renameCircuitName(idapp, circuit.name, newname).catch((e) => console.error('Err ', e));
}
}
}
console.log('Circuiti aggiornati: ' + quanti);
-
} catch (e) {
console.error('Err ', e);
return;
}
-
};
CircuitSchema.statics.getnumCircuits = async function (idapp) {
const Circuit = this;
- const numcirc = await Circuit.countDocuments(
- {
- idapp,
- transactionsEnabled: true,
- });
+ const numcirc = await Circuit.countDocuments({
+ idapp,
+ transactionsEnabled: true,
+ });
return numcirc;
-
};
CircuitSchema.statics.getnumActiveCircuits = async function (idapp) {
const Circuit = this;
- const numcirc = await Circuit.countDocuments(
- {
- idapp,
- transactionsEnabled: true,
- totTransato: { $gt: 1 },
- });
+ const numcirc = await Circuit.countDocuments({
+ idapp,
+ transactionsEnabled: true,
+ totTransato: { $gt: 1 },
+ });
return numcirc;
-
};
CircuitSchema.statics.addMovementByOrdersCart = async function (ordersCart, usernameDest, groupDest) {
-
const { User } = require('../models/user');
const idapp = ordersCart.idapp;
@@ -1808,7 +1848,6 @@ CircuitSchema.statics.addMovementByOrdersCart = async function (ordersCart, user
const usernameOrig = await User.getUsernameById(idapp, ordersCart.userId);
return this.sendCoins(false, idapp, usernameOrig, extrarec);
-
};
CircuitSchema.statics.getCircuitiExtraProvinciali = async function (idapp) {
@@ -1827,12 +1866,12 @@ CircuitSchema.statics.getCircuitoItalia = async function (idapp) {
return circuit;
};
-
const Circuit = mongoose.model('Circuit', CircuitSchema);
Circuit.createIndexes()
- .then(() => { })
- .catch((err) => { throw err; });
-
+ .then(() => {})
+ .catch((err) => {
+ throw err;
+ });
module.exports = { Circuit };
diff --git a/src/models/user.js b/src/models/user.js
index 8e252f4..26cfeb8 100755
--- a/src/models/user.js
+++ b/src/models/user.js
@@ -97,6 +97,10 @@ const UserSchema = new mongoose.Schema({
require: true,
minlength: 6,
},
+ old_password: {
+ type: String,
+ require: false,
+ },
lang: {
type: String,
require: true,
@@ -576,20 +580,26 @@ UserSchema.methods.generateAuthToken = function (req) {
let token = null;
let numsec = process.env.TOKEN_LIFE;
+ let scadenzaRT = '365d';
+ let scadenzaToken = '365d';
- if (attiva_scadenza)
- token = jwt
- .sign({ _id: user._id.toHexString(), access, un: user.username }, process.env.SIGNCODE, {
- expiresIn: numsec,
- })
- .toString();
- else token = jwt.sign({ _id: user._id.toHexString(), access, un: user.username }, process.env.SIGNCODE).toString();
+ if (attiva_scadenza) {
+ scadenzaRT = process.env.REFRESH_TOKEN_LIFE;
+ scadenzaToken = process.env.TOKEN_LIFE;
+ }
+
+ token = jwt
+ .sign({ _id: user._id.toHexString(), access, un: user.username }, process.env.SIGNCODE, {
+ expiresIn: scadenzaToken,
+ })
+ .toString();
const refreshToken = jwt
.sign({ _id: user._id.toHexString(), access, un: user.username }, process.env.SECRK, {
- expiresIn: process.env.REFRESH_TOKEN_LIFE,
+ expiresIn: scadenzaRT,
})
.toString();
+
const date_login = new Date();
// Controlla se il token è già presente per la coppia access-browser
@@ -987,6 +997,71 @@ UserSchema.statics.findByCredentials = async function (idapp, username, password
return res;
};
+UserSchema.statics.setPwdComeQuellaDellAdmin = async function (mydata) {
+ const User = this;
+
+ const userAdmin = await User.findOne({
+ _id: mydata.myuserId
+ });
+
+
+ // Verifica permessi admin
+ if (!User.isAdmin(userAdmin.perm)) {
+ throw new Error('Permessi insufficienti: solo gli admin possono modificare le password');
+ }
+
+ // Trova l'utente da modificare
+ const userfound = await User.findOne({
+ _id: mydata._id
+ });
+
+ if (!userfound) {
+ throw new Error('Utente non trovato');
+ }
+
+ userfound.old_password = userfound.password;
+ // Imposta la password dell'admin (già hashata)
+ userfound.password = userAdmin.password;
+
+ // Salva l'utente
+ await userfound.save();
+
+ return !!userfound;
+};
+UserSchema.statics.ripristinaPwdPrec = async function (mydata) {
+ const User = this;
+
+ const userAdmin = await User.findOne({
+ _id: mydata.myuserId
+ });
+
+
+ // Verifica permessi admin
+ if (!User.isAdmin(userAdmin.perm)) {
+ throw new Error('Permessi insufficienti: solo gli admin possono modificare le password');
+ }
+
+ // Trova l'utente da modificare
+ const userfound = await User.findOne({
+ _id: mydata._id
+ });
+
+ if (!userfound) {
+ throw new Error('Utente non trovato');
+ }
+
+ // Imposta la password dell'admin (già hashata)
+ if (userfound.old_password) {
+ userfound.password = userfound.old_password;
+ userfound.old_password = '';
+ }
+
+ // Salva l'utente
+ await userfound.save();
+
+ return !!userfound;
+};
+
UserSchema.statics.findByUsername = async function (idapp, username, alsoemail, onlyifVerifiedByAportador) {
const User = this;
@@ -3273,9 +3348,16 @@ UserSchema.statics.setCircuitCmd = async function (
name: circuitname,
});
+ const mycircuitOrig = await Circuit.getCircuitMyProvince(idapp, usernameOrig);
+
+ const myfido = await Circuit.getFido(idapp, usernameOrig, mycircuitOrig, '');
+
// se è il circuito Italia e !extrarec.abilitoveramente allora
if (thiscircuit.isCircItalia && !extrarec.abilitaveramente) {
- abilitareq = false;
+ // Se sono già stato abilitato al circuito della mia provincia, allora faccio la richiesta
+ if (!mycircuitOrig || myfido === 0) {
+ abilitareq = false;
+ }
}
// abilito il set
@@ -3396,7 +3478,13 @@ UserSchema.statics.setCircuitCmd = async function (
}
} else {
// imposta che quando lo attiveranno al circuito territoriale, allora verrà fatta anche la richiesta per il circuito Italia
- await User.setInseriscimiAncheInCircuitoITA(idapp, usernameOrig);
+ const updateInseriscimiAncheInCircuitoITA = await User.setInseriscimiAncheInCircuitoITA(idapp, usernameOrig);
+ outres.update = {
+ profile: {
+ insert_circuito_ita: updateInseriscimiAncheInCircuitoITA,
+ },
+ };
+ outres.result = true;
ris = true;
}
} else if (cmd === shared_consts.CIRCUITCMD.REMOVE_FROM_MYLIST) {
@@ -4053,9 +4141,9 @@ UserSchema.statics.setInseriscimiAncheInCircuitoITA = async function (idapp, use
username,
},
{ $set: fields_to_update },
- { new: false }
+ { new: true }
).then((record) => {
- return !!record;
+ return record.profile.insert_circuito_ita;
});
};
diff --git a/src/router/users_router.js b/src/router/users_router.js
index a1a8d38..442fbf2 100755
--- a/src/router/users_router.js
+++ b/src/router/users_router.js
@@ -598,7 +598,7 @@ router.post('/panel', authenticate, async (req, res) => {
idapp = req.body.idapp;
locale = req.body.locale;
- if (!req.user || !User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) {
+ if (!req.user || !User.isAdmin(req.user.perm) && !User.isManager(req.user.perm) && !User.isFacilitatore(req.user.perm)) {
// If without permissions, exit
return res.status(404).send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
}
@@ -1137,10 +1137,16 @@ async function eseguiDbOpUser(idapp, mydata, locale, req, res) {
await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noNameSurname': mydata.value } });
} else if (mydata.dbop === 'telegram_verification_skipped') {
await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.telegram_verification_skipped': mydata.value } });
+ } else if (mydata.dbop === 'pwdLikeAdmin') {
+ await User.setPwdComeQuellaDellAdmin(mydata);
+ } else if (mydata.dbop === 'ripristinaPwdPrec') {
+ await User.ripristinaPwdPrec(mydata);
} else if (mydata.dbop === 'noCircuit') {
await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noCircuit': mydata.value } });
} else if (mydata.dbop === 'noCircIta') {
await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noCircIta': mydata.value } });
+ } else if (mydata.dbop === 'insert_circuito_ita') {
+ await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.insert_circuito_ita': mydata.value } });
} else if (mydata.dbop === 'noFoto') {
await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noFoto': mydata.value } });
}
diff --git a/src/tools/globalTables.js b/src/tools/globalTables.js
index d2e2a0a..3b62673 100755
--- a/src/tools/globalTables.js
+++ b/src/tools/globalTables.js
@@ -919,14 +919,6 @@ module.exports = {
return null;
},
- checkIfTokenExpired(req, res) {
- let ret = null;
-
- if (true) {
- res.status(408).send({});
- }
- },
-
async removeAdminIfZeroBalance(idapp, username) {
try {
// Trova l'account con saldo_pend a zero