From 6e7eb31d38f318fae6b7d9dd7f522072848c3331 Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Mon, 6 Feb 2023 22:58:10 +0100 Subject: [PATCH] - pagine admin: Accounts, Movements e Circuits. - add change min e max range circuiti (per tutti i record). --- src/server/models/account.js | 49 +++++++++++++++- src/server/models/circuit.js | 87 ++++++++++++++++++++++++---- src/server/router/accounts_router.js | 54 +++++++++++++++++ src/server/router/index_router.js | 5 +- src/server/router/users_router.js | 20 +++++++ src/server/server.js | 2 + src/server/tools/general.js | 13 +++++ src/server/tools/shared_nodejs.js | 2 +- 8 files changed, 219 insertions(+), 13 deletions(-) create mode 100755 src/server/router/accounts_router.js diff --git a/src/server/models/account.js b/src/server/models/account.js index 98cb25c..87f48d8 100755 --- a/src/server/models/account.js +++ b/src/server/models/account.js @@ -100,6 +100,9 @@ AccountSchema.pre('save', async function (next) { AccountSchema.statics.getFieldsForSearch = function () { return [ { field: 'name', type: tools.FieldType.string }, + { field: 'username', type: tools.FieldType.string }, + { field: 'groupname', type: tools.FieldType.string }, + { field: 'contocom', type: tools.FieldType.string }, ]; }; @@ -423,7 +426,51 @@ AccountSchema.statics.getGroupAccounts = async function (idapp, groupname) { }; -// Aggiungi agli Admin del Account +// Imposta a tutti i Conti Collettivi, i seguenti minimi e massimi +AccountSchema.statics.SetMinMaxCollettivi = async function (idapp, valmin, valmax) { + const Account = this; + + ris = await Account.updateMany({ idapp, groupname: { "$nin": [null, ""] } }, + { + $set: + { + fidoConcesso: valmin, + qta_maxConcessa: valmax, + } + }); + +}; + +// Imposta a tutti i Conti Comunitari, i seguenti minimi e massimi +AccountSchema.statics.SetMinMaxComunitari = async function (idapp, valmin, valmax) { + const Account = this; + + ris = await Account.updateMany({ idapp, contocom: { "$nin": [null, ""] } }, + { + $set: + { + fidoConcesso: valmin, + qta_maxConcessa: valmax, + } + }); + +}; + +// Imposta a tutti i Conti Personali, i seguenti minimi e massimi +AccountSchema.statics.SetMinMaxPersonali = async function (idapp, valmin, valmax) { + const Account = this; + + ris = await Account.updateMany({ idapp, username: { "$nin": [null, ""] } }, + { + $set: + { + fidoConcesso: valmin, + qta_maxConcessa: valmax, + } + }); + +}; + AccountSchema.statics.addToPeopleOfMyAccount = async function (idapp, username, circuitId, person_username, perm) { return await Account.updateOne({ idapp, username, circuitId }, diff --git a/src/server/models/circuit.js b/src/server/models/circuit.js index cbfb652..ac1adfc 100755 --- a/src/server/models/circuit.js +++ b/src/server/models/circuit.js @@ -232,8 +232,9 @@ CircuitSchema.statics.findAllIdApp = async function (idapp) { CircuitSchema.statics.getFieldsForSearch = function () { return [ - { field: 'nome_circuito', type: tools.FieldType.string }, - { field: 'sotto_nome', type: tools.FieldType.string }, + { field: 'name', type: tools.FieldType.string }, + { field: 'subname', type: tools.FieldType.string }, + { field: 'path', type: tools.FieldType.string }, { field: 'nome_valuta', type: tools.FieldType.string }, { field: 'descr', type: tools.FieldType.string }, ]; @@ -683,16 +684,24 @@ CircuitSchema.statics.sendCoins = async function (onlycheck, idapp, usernameOrig }; await Circuit.updateOne({ _id: circuittable }, { $set: paramstoupdate }); - ris.result = true; - console.log('Inviate Monete da', usernameOrig, extrarec.grouporig, extrarec.dest, extrarec.groupdest, myqty, extrarec.causal); - - ris.useraccounts = await Account.getUserAccounts(idapp, usernameOrig); - extrarec.saldoOrig = accountorigTable.saldo; extrarec.saldoDest = accountdestTable.saldo; + let orig = usernameOrig + ' ' + extrarec.grouporig + ' ' + extrarec.contoComOrig; + let dest = extrarec.dest + ' ' + extrarec.groupDest + ' ' + extrarec.contoComDest; + + ris.result = true; + let msg = 'Inviate Monete da ' + orig + ' a ' + dest + ' ' + myqty + ' ' + totCircolante.symbol + ' [' + extrarec.causal + '] [Saldo 1: ' + extrarec.saldoOrig + '] ' + ' [Saldo 2: ' + extrarec.saldoDest + ']'; + console.log(msg); + + ris.useraccounts = await Account.getUserAccounts(idapp, usernameOrig); + + tools.writeTransactionLog(msg); + + tools.sendMsgTelegramToAdmin(idapp, msg); + } else { - console.log('NON Inviate Monete da', usernameOrig, extrarec.grouporig, extrarec.dest, extrarec.groupdest, myqty, extrarec.causal); + // console.log('NON Inviate Monete da', usernameOrig, extrarec.grouporig, extrarec.dest, extrarec.groupdest, myqty, extrarec.causal); } } @@ -795,21 +804,79 @@ CircuitSchema.statics.setDeperimentoOff = async function () { }; +CircuitSchema.statics.getNameByCircuitId = async function (circuitId) { + + let circuit = await Circuit.findOne({ _id: circuitId }); + if (circuit) + return circuit.name; + + 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(); + }, { admins: 1 }).lean(); return arr && arr.admins ? arr.admins : []; }; +// Imposta a tutti i Conti Collettivi, i seguenti minimi e massimi +CircuitSchema.statics.SetDefMinMaxCollettivi = async function (idapp, valmin, valmax) { + + ris = await Circuit.updateMany({ idapp, contocom: { "$nin": [null, ""] } }, + { + $set: + { + fido_scoperto_default: valmin, + qta_max_default: valmax, + } + }); + +}; + +// Imposta a tutti i Conti Personali, i seguenti minimi e massimi +CircuitSchema.statics.SetDefMinMaxPersonali = async function (idapp, valmin, valmax) { + + ris = await Circuit.updateMany({ idapp }, + { + $set: + { + fido_scoperto_default: valmin, + qta_max_default: valmax, + } + }); + +}; + +// Imposta a tutti i Conti Collettivi, i seguenti minimi e massimi +CircuitSchema.statics.SetDefMinMaxCollettivi = async function (idapp, valmin, valmax) { + + ris = await Circuit.updateMany({ idapp }, + { + $set: + { + fido_scoperto_default_grp: valmin, + qta_max_default_grp: valmax, + } + }); + +}; + const Circuit = mongoose.model('Circuit', CircuitSchema); module.exports = { Circuit }; diff --git a/src/server/router/accounts_router.js b/src/server/router/accounts_router.js new file mode 100755 index 0000000..a1044cb --- /dev/null +++ b/src/server/router/accounts_router.js @@ -0,0 +1,54 @@ +const express = require('express'); +const router = express.Router(); + +const tools = require('../tools/general'); + +const server_constants = require('../tools/server_constants'); + +const { authenticate } = require('../middleware/authenticate'); + +const mongoose = require('mongoose').set('debug', false); + +const { User } = require('../models/user'); +const { Circuit } = require('../models/circuit'); +const { Account } = require('../models/account'); + +const _ = require('lodash'); + +const { ObjectID } = require('mongodb'); + +async function getCircuitRecAdminsInfo(idapp, data) { + + if (data && data.admins) { + for (const admin of data.admins) { + const myuser = await User.findOne({ idapp, username: admin.username }, { 'profile.img': 1 }).lean(); + admin.profile = { img: myuser.profile.img }; + } + } + + return data; +} + +router.post('/loadall', authenticate, async (req, res) => { + const idapp = req.body.idapp; + + try { + let listaccounts = [] + if (User.isAdmin(req.user.perm)) { + + listaccounts = await Account.find({ idapp }).lean(); + + } + + res.send({ listaccounts }); + + } catch (e) { + console.error('Error in Accounts', e); + return res.status(400).send(e); + } + + const ris = null; + +}); + +module.exports = router; diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index 52ebe97..4e65d44 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -866,7 +866,10 @@ router.patch('/chval', authenticate, async (req, res) => { if (mydata.table === 'accounts') { if ('saldo' in fieldsvalue) { - msg = 'l\'utente ' + req.user.username + ' ha variato il Saldo di ' + rec.username + ' a ' + fieldsvalue.saldo; + let circuito = ''; + if (rec.circuitId) + circuit = await Circuit.getCircuitByCircuitId(rec.circuitId); + msg = '[' + circuit.name + '] l\'utente ' + req.user.username + ' ha variato il Saldo di ' + rec.username + ' a ' + fieldsvalue.saldo + ' ' + circuit.symbol; telegrambot.sendMsgTelegramToTheManagers(idapp, msg); } } diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index 259986a..00acbb1 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -1091,6 +1091,26 @@ async function eseguiDbOp(idapp, mydata, locale, req, res) { ris = populate.rewriteTable('contribtypes'); + } else if (mydata.dbop === 'ImpostaMinMaxPersonali') { + + await Account.SetMinMaxPersonali(idapp, mydata.valmin, mydata.valmax); + + } else if (mydata.dbop === 'ImpostaMinMaxComunitari') { + + await Account.SetMinMaxComunitari(idapp, mydata.valmin, mydata.valmax); + + } else if (mydata.dbop === 'ImpostaMinMaxCollettivi') { + + await Account.SetMinMaxCollettivi(idapp, mydata.valmin, mydata.valmax); + + } else if (mydata.dbop === 'ImpostaDefMinMaxPersonali') { + + await Circuit.SetDefMinMaxPersonali(idapp, mydata.valmin, mydata.valmax); + + } else if (mydata.dbop === 'ImpostaDefMinMaxCollettivi') { + + await Circuit.SetDefMinMaxCollettivi(idapp, mydata.valmin, mydata.valmax); + } else if (mydata.dbop === 'CreateAccountCircuits') { const allcirc = await Circuit.find({ idapp }); diff --git a/src/server/server.js b/src/server/server.js index b3c4e80..6653383 100755 --- a/src/server/server.js +++ b/src/server/server.js @@ -125,6 +125,7 @@ myLoad().then(ris => { const users_router = require('./router/users_router'); const mygroups_router = require('./router/mygroups_router'); const circuits_router = require('./router/circuits_router'); + const accounts_router = require('./router/accounts_router'); const iscrittiConacreis_router = require('./router/iscrittiConacreis_router'); const iscrittiArcadei_router = require('./router/iscrittiArcadei_router'); const site_router = require('./router/site_router'); @@ -186,6 +187,7 @@ myLoad().then(ris => { app.use('/users', users_router); app.use('/mygroup', mygroups_router); app.use('/circuit', circuits_router); + app.use('/account', accounts_router); app.use('/iscritti_conacreis', iscrittiConacreis_router); app.use('/iscritti_arcadei', iscrittiArcadei_router); app.use('/report', report_router); diff --git a/src/server/tools/general.js b/src/server/tools/general.js index 657bd14..4d87a5e 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -35,6 +35,7 @@ const i18n = require('i18n'); const FILELOG = 'filelog.txt'; const FILEEVENTS = 'logevents.txt'; const FILEMANAGERS = 'logmanagers.txt'; +const FILETRANSACTION = 'logtrans.txt'; const FILEERRLOGIN = 'errlogin.txt'; const FILESOSTITUZIONI = 'log_sostituzioni.txt'; const FILEIP_TO_BAN = 'log_iptoban.txt'; @@ -948,6 +949,15 @@ module.exports = { }, + sendMsgTelegramToAdmin: async function (idapp, msg) { + + const telegrambot = require('../telegram/telegrambot'); + + const idtelegram = telegrambot.ADMIN_IDTELEGRAM_SERVER; + + await telegrambot.sendMsgTelegramByIdTelegram(idapp, idtelegram, msg); + }, + sendNotifAndMsgTelegram: async function (idapp, userId, objmsg, telegram, msgextrateleg) { if (userId) { @@ -2950,6 +2960,9 @@ module.exports = { writeManagersLog(mystr) { this.writelogfile(mystr, FILEMANAGERS); }, + writeTransactionLog(mystr) { + this.writelogfile(mystr, FILETRANSACTION); + }, writeErrorLog(mystr) { this.writelogfile(mystr, FILEERRLOGIN); }, diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index b88ca00..96cfbc6 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -513,7 +513,7 @@ module.exports = { CIRCUIT_PARAMS: { SCOPERTO_MIN_GRP: 200, - SCOPERTO_MAX_GRP: 500, + SCOPERTO_MAX_GRP: 400, SCOPERTO_MIN_CONTO_COMUNITARIO: 500, SCOPERTO_MAX_CONTO_COMUNITARIO: 1000, },