diff --git a/src/server/models/account.js b/src/server/models/account.js index 829267c..eda6a0a 100755 --- a/src/server/models/account.js +++ b/src/server/models/account.js @@ -195,7 +195,7 @@ AccountSchema.pre('save', async function (next) { next(); }); -AccountSchema.statics.getAccountByUsernameAndCircuitId = async function (idapp, username, circuitId, createifnotexist, groupname = '') { +AccountSchema.statics.getAccountByUsernameAndCircuitId = async function (idapp, username, circuitId, createifnotexist, groupname = '', iscontocom = false) { const Account = this; try { @@ -235,19 +235,25 @@ AccountSchema.statics.getAccountByUsernameAndCircuitId = async function (idapp, qta_maxConcessa: 0, }); - if (!mycircuit.fido_scoperto_default_grp) - mycircuit.fido_scoperto_default_grp = shared_consts.CIRCUIT_PARAMS.SCOPERTO_MIN_GRP; - if (!mycircuit.qta_max_default_grp) - mycircuit.qta_max_default_grp = shared_consts.CIRCUIT_PARAMS.SCOPERTO_MAX_GRP; - - if (groupname) { - myaccount.fidoConcesso = mycircuit.fido_scoperto_default_grp; - myaccount.qta_maxConcessa = mycircuit.qta_max_default_grp; + if (iscontocom) { + myaccount.fidoConcesso = shared_consts.CIRCUIT_PARAMS.SCOPERTO_MIN_CONTO_COMUNITARIO; + myaccount.qta_maxConcessa = shared_consts.CIRCUIT_PARAMS.SCOPERTO_MAX_CONTO_COMUNITARIO; } else { - myaccount.fidoConcesso = mycircuit.fido_scoperto_default; - myaccount.qta_maxConcessa = mycircuit.qta_max_default; + if (!mycircuit.fido_scoperto_default_grp) + mycircuit.fido_scoperto_default_grp = shared_consts.CIRCUIT_PARAMS.SCOPERTO_MIN_GRP; + if (!mycircuit.qta_max_default_grp) + mycircuit.qta_max_default_grp = shared_consts.CIRCUIT_PARAMS.SCOPERTO_MAX_GRP; + + if (groupname) { + myaccount.fidoConcesso = mycircuit.fido_scoperto_default_grp; + myaccount.qta_maxConcessa = mycircuit.qta_max_default_grp; + } else { + myaccount.fidoConcesso = mycircuit.fido_scoperto_default; + myaccount.qta_maxConcessa = mycircuit.qta_max_default; + } } + return await myaccount.save(); } @@ -266,9 +272,9 @@ AccountSchema.statics.createAccount = async function (idapp, username, circuitNa const { Circuit } = require('../models/circuit'); try { - mycircuit = await Circuit.findOne({ name: circuitName }, {_id: 1}); + mycircuit = await Circuit.findOne({ name: circuitName }, { _id: 1 }); if (mycircuit) { - return await Account.getAccountByUsernameAndCircuitId(idapp, username, mycircuit._id, true, groupname); + return await Account.getAccountByUsernameAndCircuitId(idapp, username, mycircuit._id, true, groupname, circuitName === groupname); } else { return null; } diff --git a/src/server/models/user.js b/src/server/models/user.js index 10955e0..8e3f6f0 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -2348,7 +2348,14 @@ UserSchema.statics.setCircuitCmd = async function (idapp, usernameOrig, circuitn let groupname = extrarec && extrarec.groupname ? extrarec.groupname : ''; try { - if (cmd === shared_consts.CIRCUITCMD.SET) { + if (cmd === shared_consts.CIRCUITCMD.CREATE) { + const mycirc = await Circuit.findOne({ idapp, name: circuitname }); + if (mycirc) { + // Il Conto Comunitario prende il nome del circuito ! + await Account.createAccount(idapp, '', circuitname, mycirc.path); + } + + } else if (cmd === shared_consts.CIRCUITCMD.SET) { if (groupname) { const foundIfCircuitInGroup = await MyGroup.ifCircuitAlreadyInGroup(idapp, groupname, circuitname); diff --git a/src/server/router/circuits_router.js b/src/server/router/circuits_router.js index 0ece4e4..1c70488 100755 --- a/src/server/router/circuits_router.js +++ b/src/server/router/circuits_router.js @@ -5,23 +5,24 @@ const tools = require('../tools/general'); const server_constants = require('../tools/server_constants'); -const {authenticate} = require('../middleware/authenticate'); +const { authenticate } = require('../middleware/authenticate'); const mongoose = require('mongoose').set('debug', false); -const {User} = require('../models/user'); -const {Circuit} = require('../models/circuit'); +const { User } = require('../models/user'); +const { Circuit } = require('../models/circuit'); +const { Account } = require('../models/account'); const _ = require('lodash'); -const {ObjectID} = require('mongodb'); +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}; + const myuser = await User.findOne({ idapp, username: admin.username }, { 'profile.img': 1 }).lean(); + admin.profile = { img: myuser.profile.img }; } } @@ -35,15 +36,15 @@ router.post('/load', authenticate, async (req, res) => { try { - const {SendNotif} = require('../models/sendnotif'); - const {Movement} = require('../models/movement'); + const { SendNotif } = require('../models/sendnotif'); + const { Movement } = require('../models/movement'); // Check if ìs a Notif to read const idnotif = req.body['idnotif'] ? req.body['idnotif'] : ''; SendNotif.setNotifAsRead(idapp, usernameOrig, idnotif); const whatshow = Circuit.getWhatToShow(idapp, req.user.username); - let data = await Circuit.findOne({idapp, path}, whatshow).lean(); + let data = await Circuit.findOne({ idapp, path }, whatshow).lean(); const whatshowUsers = await User.getWhatToShow_IfFriends(idapp, req.user.username); @@ -70,7 +71,11 @@ router.post('/load', authenticate, async (req, res) => { data.movements = await Movement.getMovsByCircuitId(idapp, usernameOrig, data._id); } - res.send({circuit: data, users_in_circuit}); + if (data) { + data.account = await Account.getAccountByUsernameAndCircuitId(idapp, '', data._id, false, data.path); + } + + res.send({ circuit: data, users_in_circuit }); } catch (e) { console.error('Error in Circuits', e); diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index ff190d7..52ebe97 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -469,8 +469,13 @@ router.post('/settable', authenticate, async (req, res) => { return res.send({ rec: myrec, ris }); }); } else if (params.table === shared_consts.TAB_MYCIRCUITS && isnewrec) { - // nuovo Record: - // aggiungi il creatore al Circuito stesso + // nuovo Circuito: + await User.setCircuitCmd(mydata.idapp, req.user.username, myrec.name, + shared_consts.CIRCUITCMD.CREATE, true, req.user.username, extrarec).then((ris) => { + return res.send({ rec: myrec, ris }); + }); + + // aggiungi il creatore al Circuito stesso return await User.setCircuitCmd(mydata.idapp, req.user.username, myrec.name, shared_consts.CIRCUITCMD.SET, true, req.user.username, extrarec).then((ris) => { return res.send({ rec: myrec, ris }); diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index adf3598..d69d68b 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -38,6 +38,7 @@ const TypedError = require('../modules/ErrorHandler'); const { MyGroup } = require('../models/mygroup'); const { Circuit } = require('../models/circuit'); +const { Account } = require('../models/account'); const mongoose = require('mongoose').set('debug', false); @@ -687,8 +688,8 @@ router.post('/friends/cmd', authenticate, async (req, res) => { if ((usernameOrig !== usernameLogged) && ( (usernameDest !== usernameLogged) && ((cmd === shared_consts.FRIENDSCMD.SETFRIEND) || - (cmd === shared_consts.FRIENDSCMD.SETHANDSHAKE)) - + (cmd === shared_consts.FRIENDSCMD.SETHANDSHAKE)) + )) { return res.status(404). send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' }); @@ -1090,8 +1091,18 @@ async function eseguiDbOp(idapp, mydata, locale, req, res) { ris = populate.rewriteTable('contribtypes'); + } else if (mydata.dbop === 'CreateAccountCircuits') { + + const allcirc = await Circuit.find({ idapp }); + + for (const mycirc of allcirc) { + // Il Conto Comunitario prende il nome del circuito ! + await Account.createAccount(idapp, '', mycirc.name, mycirc.path); + + } + } else if (mydata.dbop === 'ReplaceUsername') { - + if (User.isAdmin(req.user.perm)) { ris = globalTables.replaceUsername(req.body.idapp, mydata.search_username, mydata.replace_username); } diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index d8816ec..e97964c 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -72,6 +72,7 @@ module.exports = { }, CIRCUITCMD: { + CREATE: 1001, REQ: 2000, SET: 2001, REMOVE_FROM_MYLIST: 2144, @@ -513,6 +514,8 @@ module.exports = { CIRCUIT_PARAMS: { SCOPERTO_MIN_GRP: 200, SCOPERTO_MAX_GRP: 500, + SCOPERTO_MIN_CONTO_COMUNITARIO: 1000, + SCOPERTO_MAX_CONTO_COMUNITARIO: 1000, }, };