- pagine admin: Accounts, Movements e Circuits.

- add change min e max range circuiti (per tutti i record).
This commit is contained in:
Surya Paolo
2023-02-06 22:58:10 +01:00
parent 022ad11747
commit 6e7eb31d38
8 changed files with 219 additions and 13 deletions

View File

@@ -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 },

View File

@@ -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 };

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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 });

View File

@@ -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);

View File

@@ -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);
},

View File

@@ -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,
},