- Iscrizione Conacreis

This commit is contained in:
Paolo Arena
2021-06-04 10:07:57 +02:00
parent cf97870cc7
commit 9d5eda50ae
20 changed files with 3048 additions and 1525 deletions

View File

@@ -13,7 +13,7 @@ process.env.LINK_UPDATE_PWD = '/updatepwd';
process.env.LINK_CHECK_UPDATES = '/checkupdates';
process.env.KEY_APP_ID = 'KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF';
console.log("FILE : " + file);
console.log("Starting Node with : " + file);
require('dotenv').config({ path: file });
process.env.DATABASE = process.env.DATABASE || 'FreePlanet';

View File

@@ -16,6 +16,7 @@ const options = {
// pass: process.env.PDB,
// useMongoClient: true,
// useNewUrlParser: true, // non supportato
// useMongoClient: false,
useNewUrlParser: true,
useFindAndModify: false,
useCreateIndex: true,
@@ -42,12 +43,13 @@ const db = mongoose.connection;
// mongoose.connect(process.env.MONGODB_URI + '?authSource=admin', { options })
console.log(' -> PASSAGGIO PARAMETRI MONGOOSE')
mongoose.connect(process.env.MONGODB_URI, options);
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
// we're connected!
console.log('connection succesful ' + process.env.MONGODB_URI + ' db: ' + process.env.DATABASE)
console.log('*** CONNESSIONE EFFETTUATA ! ' + process.env.MONGODB_URI + ' db: ' + process.env.DATABASE)
});

View File

@@ -19,6 +19,10 @@ const IscrittiConacreisSchema = new Schema({
userId: {
type: String,
},
numTesseraInterna: {
type: Number,
default: 0,
},
name: {
type: String,
trim: true,
@@ -81,6 +85,9 @@ const IscrittiConacreisSchema = new Schema({
metodo_pagamento: {
type: Number,
},
ha_pagato: {
type: Boolean,
},
iscrizione_compilata: {
type: Boolean,
},
@@ -120,6 +127,20 @@ const IscrittiConacreisSchema = new Schema({
});
IscrittiConacreisSchema.pre('save', async function (next) {
if (this.isNew) {
const myrec = await IscrittiConacreis.findOne().limit(1).sort({ numTesseraInterna: -1 });
if (!!myrec) {
this.numTesseraInterna = myrec._doc.numTesseraInterna + 1;
} else {
this.numTesseraInterna = 0;
}
}
next();
});
var IscrittiConacreis = module.exports = mongoose.model('IscrittiConacreis', IscrittiConacreisSchema);
module.exports.getFieldsForSearch = function () {
@@ -128,6 +149,8 @@ module.exports.getFieldsForSearch = function () {
{ field: 'email', type: tools.FieldType.string }]
};
module.exports.executeQueryTable = function (idapp, params) {
params.fieldsearch = this.getFieldsForSearch();
return tools.executeQueryTable(this, idapp, params);

View File

@@ -70,6 +70,12 @@ const MyEventSchema = new Schema({
teacher2: {
type: String,
},
teacher3: {
type: String,
},
teacher4: {
type: String,
},
infoextra: {
type: String,
},
@@ -115,12 +121,18 @@ const MyEventSchema = new Schema({
note: {
type: String,
},
pagefooter: [{
type: String,
}],
deleted: {
type: Boolean,
},
dupId: {
type: mongoose.Schema.Types.ObjectId,
},
facebook: {
type: String,
},
modified: {
type: Boolean,
},
@@ -185,6 +197,22 @@ MyEventSchema.statics.getLastEvents = async function (idapp) {
as: 'op2'
}
},
{
$lookup: {
from: 'operators',
localField: 'teacher3',
foreignField: 'username',
as: 'op3'
}
},
{
$lookup: {
from: 'operators',
localField: 'teacher4',
foreignField: 'username',
as: 'op4'
}
},
{ "$addFields": { "contribtype": { "$toObjectId": "$contribtype" } } },
{
$lookup: {

View File

@@ -110,6 +110,9 @@ const MyPageSchema = new Schema({
l_child: {
type: Number,
},
internalpage: {
type: Boolean,
},
infooter: {
type: Boolean,
},
@@ -159,6 +162,23 @@ MyPageSchema.statics.findOnlyStruttRec = async function (idapp) {
});
};
MyPageSchema.statics.findInternalPages = async function (idapp) {
const MyPage = this;
const myfind = { idapp,
internalpage: { $exists: true, $eq: true }
};
return MyPage.find(myfind, {
title: 1,
path: 1,
onlyif_logged: 1,
only_residenti: 1,
}, (err, arrrec) => {
return arrrec
});
};
const MyPage = mongoose.model('MyPage', MyPageSchema);
module.exports = { MyPage };

View File

@@ -36,6 +36,9 @@ const orderSchema = new Schema({
price: {
type: Number
},
after_price: {
type: String
},
color: {
type: String
},

View File

@@ -45,6 +45,9 @@ const productSchema = new Schema({
price: {
type: Number
},
after_price: {
type: String
},
color: {
type: String
},
@@ -101,7 +104,7 @@ module.exports.executeQueryTable = function (idapp, params) {
};
module.exports.findAllIdApp = async function (idapp, code) {
let myfind = { idapp };
let myfind = { idapp, active: true };
if (code) {
myfind = { ...myfind, code }

View File

@@ -1132,11 +1132,30 @@ router.post('/duprec/:table/:id', authenticate, (req, res) => {
});
router.get('/loadsite/:userId/:idapp', authenticate_noerror, (req, res) => {
load(req, res, '0');
});
router.get('/loadsite/:userId/:idapp/:vers', authenticate_noerror, (req, res) => {
let version = req.params.vers;
version = version.replace('.', '');
version = version.replace('.', '');
load(req, res, parseInt(version));
});
function load(req, res, version) {
const userId = req.params.userId;
const idapp = req.params.idapp;
const sall = (User.isAdmin(req.user.perm) || User.isManager(req.user.perm) || User.isEditor(req.user.perm)) ? '1' : '0'
if (!version) {
version = '0';
}
let sall = '0';
if (!!req.user) {
sall = (User.isAdmin(req.user.perm) || User.isManager(req.user.perm) || User.isEditor(req.user.perm)) ? '1' : '0'
}
// var category = req.params.category;
@@ -1158,6 +1177,7 @@ router.get('/loadsite/:userId/:idapp', authenticate_noerror, (req, res) => {
// Extract all the todos of the userId only
const eventlist = MyEvent.findAllIdApp(socioresidente, idapp);
const operators = Operator.findAllIdApp(idapp);
const internalpages = MyPage.findInternalPages(idapp);
const wheres = Where.findAllIdApp(idapp);
const contribtype = Contribtype.findAllIdApp(idapp);
const paymenttype = PaymentType.findAllIdApp(idapp);
@@ -1168,7 +1188,11 @@ router.get('/loadsite/:userId/:idapp', authenticate_noerror, (req, res) => {
let newstosent = Promise.resolve([]);
let mailinglist = Promise.resolve([]);
let mypage = MyPage.findOnlyStruttRec(idapp);
let mypage;
if (version > 91)
mypage = MyPage.findOnlyStruttRec(idapp);
else
mypage = MyPage.findAllIdApp(idapp);
let calzoom = CalZoom.findAllIdApp(idapp);
let gallery = Gallery.findAllIdApp(idapp);
let producers = Producer.findAllIdApp(idapp);
@@ -1196,7 +1220,7 @@ router.get('/loadsite/:userId/:idapp', authenticate_noerror, (req, res) => {
}
return Promise.all([bookedevent, eventlist, operators, wheres, contribtype, settings, permissions, disciplines, newstosent, mailinglist, mypage, gallery, paymenttype, calcstat, calzoom, producers, cart, storehouses, departments, orderscart, groups, resps, workers])
return Promise.all([bookedevent, eventlist, operators, wheres, contribtype, settings, permissions, disciplines, newstosent, mailinglist, mypage, gallery, paymenttype, calcstat, calzoom, producers, cart, storehouses, departments, orderscart, groups, resps, workers, internalpages])
.then((arrdata) => {
// console.table(arrdata);
const myuser = req.user;
@@ -1229,6 +1253,7 @@ router.get('/loadsite/:userId/:idapp', authenticate_noerror, (req, res) => {
resps: arrdata[21],
workers: arrdata[22],
myuser,
internalpages: arrdata[23],
});
})
.catch((e) => {
@@ -1236,7 +1261,7 @@ router.get('/loadsite/:userId/:idapp', authenticate_noerror, (req, res) => {
res.status(400).send(e);
});
});
}
router.get(process.env.LINK_CHECK_UPDATES, authenticate, async (req, res) => {
const userId = req.user._id;

View File

@@ -2,12 +2,11 @@ const express = require('express');
const router = express.Router();
const { User } = require('../models/user');
const { Nave } = require('../models/nave');
const { Flotta } = require('../models/flotta');
// const { Nave } = require('../models/nave');
const Hours = require('../models/hours');
const { NavePersistente } = require('../models/navepersistente');
const { ListaIngresso } = require('../models/listaingresso');
const { Graduatoria } = require('../models/graduatoria');
//const { NavePersistente } = require('../models/navepersistente');
//const { ListaIngresso } = require('../models/listaingresso');
//const { Graduatoria } = require('../models/graduatoria');
// const { ExtraList } = require('../models/extralist');
const { ObjectID } = require('mongodb');
@@ -465,15 +464,19 @@ async function eseguiDbOp(idapp, mydata, locale) {
try {
if (mydata.dbop === 'rigeneraTutto') {
await ListaIngresso.Esegui_CronTab(idapp, mydata);
} else if (mydata.dbop === 'creaNavi') {
const num = await Nave.generaNave(idapp, mydata, false);
ris = { num };
} else if (mydata.dbop === 'CreaNaviPersistenti') {
const num = await Nave.generaNave(idapp, mydata, true);
ris = { num };
} else if (mydata.dbop === 'delNavi') {
if (mydata.dbop === '') {
// } else if (mydata.dbop === 'rigeneraTutto') {
// await ListaIngresso.Esegui_CronTab(idapp, mydata);
} else if (mydata.dbop === 'visuStat') {
ris = await User.visuUtentiNonInNavi(idapp);
//} else if (mydata.dbop === 'creaNavi') {
// const num = await Nave.generaNave(idapp, mydata, false);
// ris = { num };
//} else if (mydata.dbop === 'CreaNaviPersistenti') {
// const num = await Nave.generaNave(idapp, mydata, true);
// ris = { num };
/*} else if (mydata.dbop === 'delNavi') {
await Nave.setRiga(idapp, 1);
await Nave.setCol(idapp, 1);
const num = await Nave.deleteOne({ idapp });
@@ -483,6 +486,7 @@ async function eseguiDbOp(idapp, mydata, locale) {
// await Nave.setCol(idapp, 1);
// const num = await Nave.remove({ idapp, date_start: { $gte: tools.IncDateNow(-1000 * 60 * 60 * 24 * 3) } });
// ris = { num };
} else if (mydata.dbop === 'delNaviProvvisorie') {
ris = await Nave.delNaviProvvisorie(idapp);
@@ -490,8 +494,6 @@ async function eseguiDbOp(idapp, mydata, locale) {
} else if (mydata.dbop === 'visuListaNave') {
mystr = await Nave.showListaOrd(idapp);
ris = { mystr };
} else if (mydata.dbop === 'visuStat') {
ris = await User.visuUtentiNonInNavi(idapp);
} else if (mydata.dbop === 'pulisciNonPresenzeInNave') {
mystr = await Nave.pulisciNonPresenzeInNave(idapp);
ris = { mystr };
@@ -622,6 +624,7 @@ async function eseguiDbOp(idapp, mydata, locale) {
ris = { num };
} else if (mydata.dbop === 'Corregginumtess') {
const listanavi = await Nave.find({ idapp });
let num = 0;
@@ -639,6 +642,7 @@ async function eseguiDbOp(idapp, mydata, locale) {
}
ris = { num };
*/
/*
}
@@ -680,7 +684,7 @@ async function eseguiDbOp(idapp, mydata, locale) {
}
ris = { num }; */
} else if (mydata.dbop === 'CorreggiDataGiftChat') {
/*} else if (mydata.dbop === 'CorreggiDataGiftChat') {
const listanavi = await NavePersistente.find({ idapp });
let num = 0;
for (let rec of listanavi) {
@@ -694,7 +698,7 @@ async function eseguiDbOp(idapp, mydata, locale) {
}
ris = { num };
} else if (mydata.dbop === 'creaUtentiTest') {
*/} else if (mydata.dbop === 'creaUtentiTest') {
let num = 0;
lastrec = await User.find({ idapp }).sort({ _id: -1 }).limit(1);
@@ -727,7 +731,7 @@ async function eseguiDbOp(idapp, mydata, locale) {
}
ris = { num };
} else if (mydata.dbop === 'visuPlacca') {
/*} else if (mydata.dbop === 'visuPlacca') {
mystr = '✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨\n' +
'NAVI CHE SALPANO DALLA ' + mydata.riga + '.' + mydata.col + ' ALLA ' + mydata.riga + '.' + (parseInt(mydata.col) + 7) + '\n' +
@@ -749,18 +753,12 @@ async function eseguiDbOp(idapp, mydata, locale) {
await telegrambot.sendMsgTelegramToTheAdmin(idapp, mystr, true);
ris = { mystr };
/*const rec = {};
const placca = await Nave.getPlaccaPerDonatore(idapp, parseInt(mydata.riga), parseInt(mydata.col), false, rec);
telegrambot.sendMsgTelegramToTheAdmin(idapp, placca);
ris = { placca };*/
*/
} else if (mydata.dbop === 'CorreggiTabHours') {
await Hours.correggiHours(idapp);
} else if (mydata.dbop === 'visuNave') {
/*} else if (mydata.dbop === 'visuNave') {
mystr = await Nave.getNavePos(idapp, parseInt(mydata.riga), parseInt(mydata.col));
const visu_nave_Bot = await Settings.getValDbSettings(idapp, 'VISU_NAVE_BOT');
@@ -783,6 +781,8 @@ async function eseguiDbOp(idapp, mydata, locale) {
}
ris = { data: arrnavi };
*/
}

View File

@@ -34,6 +34,18 @@ function checkifSendEmail() {
module.exports = {
sendEmail_base_e_manager: function (idapp, template, to, mylocalsconf, replyTo, transport, previewonly) {
this.sendEmail_base(template, to, mylocalsconf, replyTo, transport, previewonly);
this.sendEmail_base(template, tools.getAdminEmailByIdApp(idapp), mylocalsconf, '', transport, previewonly);
if (tools.isManagAndAdminDifferent(idapp)) {
const email = tools.getManagerEmailByIdApp(idapp);
this.sendEmail_base(template, email, mylocalsconf, '', transport, previewonly);
}
},
sendEmail_base: function (template, to, mylocalsconf, replyTo, transport, previewonly) {
// console.log('mylocalsconf', mylocalsconf);
@@ -210,7 +222,8 @@ module.exports = {
surname: iscritto.surname,
emailto: emailto,
iscritto,
metodo_pagamento: tools.getPaymentTypesById(iscritto.metodo_pagamento)
metodo_pagamento: tools.getPaymentTypesById(iscritto.metodo_pagamento),
data_nascita: tools.getstrDate_DD_MM_YYYY(iscritto.dateofbirth)
};
this.sendEmail_base('iscrizione_conacreis/' + lang, emailto, mylocalsconf, tools.getreplyToEmailByIdApp(idapp));
@@ -619,7 +632,7 @@ module.exports = {
sendEmail_OrderProduct: async function (lang, idapp, orders, user) {
const msginizio = 'Ordine n: ' + orders.numorder + ' ' + user.name + ' ' + user.surname + ' [' + tools.getNomeAppByIdApp(idapp) + ']';
const msginizio = 'Ordine n: ' + orders.numorder + ' ' + user.name + ' ' + user.surname;
console.log(msginizio);
await telegrambot.sendMsgTelegramToTheManagers(idapp, msginizio);
@@ -642,12 +655,10 @@ module.exports = {
mylocalsconf = this.replacefields(mylocalsconf);
const esito = this.sendEmail_base('ecommerce/makeorder/' + lang, mylocalsconf.emailto, mylocalsconf, mylocalsconf.dataemail.email_reply);
this.sendEmail_base('ecommerce/makeorder/' + lang, tools.getAdminEmailByIdApp(idapp), mylocalsconf, '');
this.sendEmail_base_e_manager(idapp, 'ecommerce/makeorder/' + lang, mylocalsconf.emailto, mylocalsconf, mylocalsconf.dataemail.email_reply);
},
sendEmail_Order: async function (lang, idapp, orders, user, ordertype) {
sendEmail_Order: async function (lang, idapp, orders, user, ordertype, status) {
const msginizio = 'INIZIO - sendEmail_Order ' + ordertype + ': ' + tools.getNomeAppByIdApp(idapp);
console.log(msginizio);
@@ -672,9 +683,15 @@ module.exports = {
mylocalsconf = this.replacefields(mylocalsconf);
const esito = this.sendEmail_base('ecommerce/' + ordertype + '/' + lang, mylocalsconf.emailto, mylocalsconf, mylocalsconf.dataemail.email_reply);
if ((status !== shared_consts.OrderStatus.CANCELED) && (status !== shared_consts.OrderStatus.RECEIVED)) {
const esito = this.sendEmail_base('ecommerce/' + ordertype + '/' + lang, mylocalsconf.emailto, mylocalsconf, mylocalsconf.dataemail.email_reply);
this.sendEmail_base('ecommerce/' + ordertype + '/' + lang, tools.getAdminEmailByIdApp(idapp), mylocalsconf, '');
this.sendEmail_base('ecommerce/' + ordertype + '/' + lang, tools.getAdminEmailByIdApp(idapp), mylocalsconf, '');
if (tools.isManagAndAdminDifferent(idapp)) {
this.sendEmail_base('ecommerce/' + ordertype + '/' + lang, tools.getManagerEmailByIdApp(idapp), mylocalsconf, '');
}
}
},

View File

@@ -1,8 +1,13 @@
require('./config/config');
// console.log(" lodash");
const _ = require('lodash');
// console.log(" cors");
const cors = require('cors');
// console.log(" 2) fs");
const fs = require('fs');
//const throttle = require('express-throttle-bandwidth');
@@ -10,17 +15,27 @@ const fs = require('fs');
const port = process.env.PORT;
console.log(" 2b) express");
const express = require('express');
// console.log(" 2c) body-parser");
const bodyParser = require('body-parser');
const path = require('path');
console.log(" 3) cron");
const cron = require('node-cron');
console.log(" 4) mongoose");
require('./db/mongoose');
console.log(" 5) settings");
const { Settings } = require('./models/settings');
i18n = require("i18n");
// console.log(" 5) key");
if ((process.env.NODE_ENV === 'production') || (process.env.NODE_ENV === 'test')) {
var privateKey = fs.readFileSync(process.env.PATH_CERT_KEY, 'utf8');
var certificate = fs.readFileSync(process.env.PATH_SERVER_CRT, 'utf8');
@@ -30,11 +45,10 @@ if ((process.env.NODE_ENV === 'production') || (process.env.NODE_ENV === 'test')
var http = require('http');
}
require('./db/mongoose');
console.log("DB: " + process.env.DATABASE);
console.log("PORT: " + port);
console.log("MONGODB_URI: " + process.env.MONGODB_URI);
// console.log("PORT: " + port);
// console.log("MONGODB_URI: " + process.env.MONGODB_URI);
var app = express();
@@ -176,6 +190,10 @@ myLoad().then(ris => {
// });
if (process.env.NODE_ENV === 'production'){
console.log("*** PRODUCTION! ");
}
if ((process.env.NODE_ENV === 'production') || (process.env.NODE_ENV === 'test')) {
var httpsServer = https.createServer(credentials, app);
console.log("httpsServer: port ", port);

View File

@@ -275,6 +275,10 @@ const MenuStandard_AYNI = {
enUs: { menu: [[Menu.enUs.LAVAGNA, Menu.enUs.LINK_CONDIVIDERE], [Menu.enUs.ZOOM, Menu.enUs.ASSISTENZA], [Menu.LANG]] },
};
const MenuStandard = {
it: { menu: [[Menu.it.LAVAGNA, Menu.it.LINK_CONDIVIDERE], [Menu.it.ZOOM, Menu.it.ASSISTENZA], [Menu.LANG]] },
};
const MenuPerAdmin = {
it: { menu: [[Menu.it.LAVAGNA, Menu.it.LINK_CONDIVIDERE], [Menu.it.ZOOM, Menu.it.ASSISTENZA], [Menu.LANG, Menu.ADMIN]] },
es: { menu: [[Menu.es.LAVAGNA, Menu.es.LINK_CONDIVIDERE], [Menu.es.ZOOM, Menu.es.ASSISTENZA], [Menu.LANG, Menu.ADMIN]] },
@@ -369,7 +373,7 @@ const txt = {
'Continua la guida passo passo tornando sul sito di AYNI.\n\nQuesta chat ti servirà per vedere velocemente la tua Lavagna e per ricevere Importanti avvisi su come procedere il tuo cammino.\n\nUsa il menu qui sotto per controllare la tua situazione.' + emo.GREEN_HEART,
MSG_ERR_UNKNOWN_VERIFY_CODE: 'Errore durante il salvataggio sul Server. Riprovare piú tardi',
MSG_EXIT_TELEGRAM: 'L\'account è stato ora scollegato da questo Telegram BOT.',
MSG_APORTADOR_USER_REGISTERED: emo.FIRE + ' Si è appena Registrato "%s (n. %s)"\n(Invitato da %s)',
MSG_APORTADOR_USER_REGISTERED: emo.FIRE + ' Si è appena Registrato "%s (n. %s)',
MSG_ISCRITTO_CONACREIS: emo.FIRE + ' Si è appena Iscritto al Conacreis "%s"',
MSG_MSG_SENT: emoji.get('envelope') + ' Messaggi Inviati !',
MSG_MSG_TOSENT: emoji.get('envelope') + ' Messaggi da Inviare',
@@ -538,7 +542,7 @@ module.exports = {
NameFrom = await User.getNameSurnameByUsername(mylocalsconf.idapp, userdest) + aportador;
aportador = NameFrom;
}
text = printf(getstr(langdest, 'MSG_APORTADOR_USER_REGISTERED'), `${mylocalsconf.user.name} ${mylocalsconf.user.surname} (${mylocalsconf.user.username})`, index, aportador);
text = printf(getstr(langdest, 'MSG_APORTADOR_USER_REGISTERED'), `${mylocalsconf.user.name} ${mylocalsconf.user.surname} (${mylocalsconf.user.username})`, index);
}
let addtext = "";

View File

@@ -46,7 +46,6 @@ const ivSize = 128;
const iterations = 100;
if (!!process.env.GCM_API_KEY && process.env.GCM_API_KEY !== "") {
webpush.setGCMAPIKey(process.env.GCM_API_KEY);
@@ -55,8 +54,6 @@ if (!!process.env.GCM_API_KEY && process.env.GCM_API_KEY !== "") {
// console.log('setVapidDetails... config...');
// To Translate!
const textlang = {
it: {
@@ -1122,6 +1119,24 @@ module.exports = {
$or: [{ subaccount: { $exists: false } }, { subaccount: { $exists: true, $eq: false } }]
});
// Iscritti Conacreis
if (params.filterand.includes(shared_consts.FILTER_MISSING_PAYMENT))
filtriadded.push({
$or: [{ ha_pagato: { $exists: false } }, { ha_pagato: { $exists: true, $lt: 1 } }]
});
if (params.filterand.includes(shared_consts.FILTER_TO_MAKE_MEMBERSHIP_CARD))
filtriadded.push({
$or: [{ codiceConacreis: { $exists: false } }, { codiceConacreis: { $exists: true, $eq: '' } }]
});
if (params.filterand.includes(shared_consts.FILTER_MEMBERSHIP_CARD_OK))
filtriadded.push({
codiceConacreis: { $exists: true },
"$expr": { "$gt": [{ "$strLenCP": "$codiceConacreis" }, 0] }
});
}
@@ -1458,6 +1473,15 @@ module.exports = {
}
},
getstrDate_DD_MM_YYYY(mydate) {
if (mydate) {
// console.log('getstrDate', mytimestamp)
return this.appendLeadingZeroes(mydate.getDate()) + '/' + this.appendLeadingZeroes(mydate.getMonth() + 1) + '/' + this.appendLeadingZeroes(mydate.getFullYear());
} else {
return '';
}
},
getstrDateYYYY_MM_DD(mydate) {
if (mydate) {
// console.log('getstrDate', mytimestamp)

View File

@@ -25,6 +25,9 @@ module.exports = {
FILTER_ASK_ZOOM_VISTO: 32768,
FILTER_HOURS_MYLIST: 65536,
FILTER_HOURS_ALL: 131072,
FILTER_MISSING_PAYMENT: 262144,
FILTER_TO_MAKE_MEMBERSHIP_CARD: 524288,
FILTER_MEMBERSHIP_CARD_OK: 1048576,
REPORT_FILT_RESP: 1,
REPORT_FILT_ATTIVITA: 2,