From 045057082c2ada7d5ebc6a263726f88273e5eb4b Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Wed, 15 Nov 2023 18:23:10 +0100 Subject: [PATCH] Se aggiorno il fido e massimo di un circuito, devo aggiornare anche tutti gli account dei Circuiti Nazionali --- src/server/models/account.js | 57 ++++++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 5 deletions(-) diff --git a/src/server/models/account.js b/src/server/models/account.js index a2e54c4..b7712ee 100755 --- a/src/server/models/account.js +++ b/src/server/models/account.js @@ -582,7 +582,7 @@ AccountSchema.statics.SetMinMaxComunitari = async function (idapp, valmin, valma }; // Imposta a tutti i Conti Personali, i seguenti minimi e massimi -AccountSchema.statics.SetMinMaxPersonali = async function (idapp, valmin, valmax, circuitId) { +AccountSchema.statics.SetMinMaxPersonali = async function (idapp, fidoConcesso, qta_maxConcessa, circuitId) { const Account = this; if (circuitId) { @@ -590,17 +590,21 @@ AccountSchema.statics.SetMinMaxPersonali = async function (idapp, valmin, valmax { $set: { - fidoConcesso: valmin, - qta_maxConcessa: valmax, + fidoConcesso, + qta_maxConcessa, } }); + + // Se aggiorno questi dati, allora devo aggiornare anche gli account del RIS Nazionale + await Account.updateAccountCircuitoNazionaleByLimiti(idapp, circuitId, fidoConcesso, qta_maxConcessa); + } else { const ris = await Account.updateMany({ idapp, fidoConcesso: { $gt: 0 }, username: { "$nin": [null, ""] } }, { $set: { - fidoConcesso: valmin, - qta_maxConcessa: valmax, + fidoConcesso, + qta_maxConcessa, } }); } @@ -635,6 +639,49 @@ AccountSchema.statics.updateQtaMax = async function (idapp, username, groupname, return risult; }; +AccountSchema.statics.getAccountsCircuitiNazionali = async function (idapp) { + const circuit = await Circuit.find({ idapp, showAlways: true }); + + return Account.find({ idapp, circuitId: circuit.id }); +}; + +AccountSchema.statics.updateAccountCircuitoNazionaleByLimiti = async function (idapp, circuitId, fidoConcesso, qta_maxConcessa) { + + try { + const accounts = await this.getAccountsCircuitiNazionali(idapp); + + for (const account of accounts) { + const circuitId = account.circuitId; + const circuit = await Circuit.findOne({ _id: circuitId }); + if (circuit) { + let fido = 0; + let qtamax = 0; + + if (account.groupname) { + fido = circuit.fido_scoperto_default_grp * shared_consts.CIRCUIT_CFG.MULT_FIDO_GROUP; + qtamax = circuit.qta_max_default_grp * shared_consts.CIRCUIT_CFG.MULT_FIDO_GROUP; + } else { + fido = circuit.fido_scoperto_default * shared_consts.CIRCUIT_CFG.MULT_FIDO_USER; + qtamax = circuit.qta_max_default * shared_consts.CIRCUIT_CFG.MULT_FIDO_USER; + } + + let paramstoupdate = { + fidoConcesso: fido, + qta_maxConcessa: qtamax, + }; + + risult = await Account.updateOne({ _id: account.id }, { $set: paramstoupdate }); + } + } + return risult; + } catch (e) { + console.error('updateAccountCircuitoNazionaleByLimiti', e); + } + + return false; + +}; + AccountSchema.statics.canEditAccountAdmins = async function (username, id) { const account = await Account.findOne({ _id: id }).lean();