versione 1.2.14 :

- aggiornati i file di configurazione, ENV e script non funzionanti., package.
- corretto custom-service-worker.js con CORS
- ottimizzato il server, la chiamata Load iniziale (senza promise, con async/await).
This commit is contained in:
Surya Paolo
2025-03-12 21:03:02 +01:00
parent d106a59bb5
commit 7827e49760
19 changed files with 594 additions and 1549 deletions

View File

@@ -1807,320 +1807,217 @@ router.get('/loadsite/:userId/:idapp/:vers', authenticate_noerror,
});
function load(req, res, version) {
let userId = '0';
async function load(req, res, version = '0') {
try {
userId = req.user ? req.user._id.toString() : req.params.userId;
} catch (e) {
console.error('Err userId LOAD', e);
userId = '0';
}
const idapp = req.params.idapp;
console.log(' ... 1) richiesta LOAD');
let status = 200
if (req.code === server_constants.RIS_CODE_HTTP_FORBIDDEN_TOKEN_EXPIRED) {
status = server_constants.RIS_CODE_HTTP_FORBIDDEN_TOKEN_EXPIRED
}
// Estrazione e validazione degli input
const userId = req.user ? req.user._id.toString() : req.params.userId || '0';
const idapp = req.params.idapp;
const status = req.code === server_constants.RIS_CODE_HTTP_FORBIDDEN_TOKEN_EXPIRED
? server_constants.RIS_CODE_HTTP_FORBIDDEN_TOKEN_EXPIRED
: 200;
// Determina se l'utente ha determinati permessi
const gestoredelSito = req.user &&
(User.isAdmin(req.user.perm) || User.isManager(req.user.perm) || User.isEditor(req.user.perm))
? '1'
: '0';
if (!version) {
version = '0';
}
const socioresidente = req.user && req.user.profile ? req.user.profile.socioresidente : false;
let gestoredelSito = '0';
if (!!req.user) {
gestoredelSito = (User.isAdmin(req.user.perm) ||
User.isManager(req.user.perm) ||
User.isEditor(req.user.perm)) ? '1' : '0';
}
// Costruzione dell'oggetto delle promesse
const promises = {
bookedevent: userId !== '0'
? Booking.findAllByUserIdAndIdApp(userId, idapp, gestoredelSito)
: Promise.resolve([]),
eventlist: MyEvent.findAllIdApp(socioresidente, idapp),
operators: Operator.findAllIdApp(idapp),
wheres: Where.findAllIdApp(idapp),
contribtype: Contribtype.findAllIdApp(idapp),
settings: Settings.findAllIdApp(idapp, false, false),
permissions: Permission.findAllIdApp(),
disciplines: Discipline.findAllIdApp(idapp),
newstosent: gestoredelSito
? Newstosent.findAllIdApp(idapp)
: Promise.resolve([]),
mailinglist: Promise.resolve([]),
mypage: version > 91
? MyPage.findOnlyStruttRec(idapp)
: MyPage.findAllIdApp(idapp),
gallery: gestoredelSito
? Gallery.findAllIdApp(idapp)
: Promise.resolve([]),
paymenttype: PaymentType.findAllIdApp(idapp),
calcstat: req.user
? User.calculateStat(idapp, req.user.username)
: Promise.resolve(null),
calzoom: CalZoom.findAllIdApp(idapp),
producers: Producer.findAllIdApp(idapp),
cart: req.user
? Cart.getCartByUserId(req.user.id, idapp)
: Promise.resolve(null),
storehouses: Storehouse.findAllIdApp(idapp),
departments: Department.findAllIdApp(idapp),
orderscart: req.user
? (User.isManager(req.user.perm)
? OrdersCart.getOrdersCartByUserId('ALL', idapp, 0, false)
: OrdersCart.getOrdersCartByUserId(req.user.id, idapp, 0, false))
: Promise.resolve(null),
groups: Group.findAllIdApp(idapp),
resps: User.getusersRespList(idapp),
workers: User.getusersWorkersList(idapp),
internalpages: MyPage.findInternalPages(idapp),
// Campi aggiuntivi per versioni >= 91
levels: version >= 91 ? Level.findAllIdApp(idapp) : Promise.resolve([]),
skills: version >= 91 ? Skill.findAllIdApp(idapp) : Promise.resolve([]),
sectors: version >= 91 ? Sector.findAllIdApp(idapp) : Promise.resolve([]),
statusSkills: version >= 91 ? StatusSkill.findAllIdApp(idapp) : Promise.resolve([]),
provinces: version >= 91 ? Province.findAllIdApp(idapp) : Promise.resolve([]),
catgrps: version >= 91 ? CatGrp.findAllIdApp(idapp) : Promise.resolve([]),
adtypes: version >= 91 ? AdType.findAllIdApp(idapp) : Promise.resolve([]),
adtypegoods: version >= 91 ? AdTypeGood.findAllIdApp(idapp) : Promise.resolve([]),
sectorgoods: version >= 91 ? SectorGood.findAllIdApp(idapp) : Promise.resolve([]),
goods: version >= 91 ? Good.findAllIdApp(idapp) : Promise.resolve([]),
site: version >= 91 ? Site.findAllIdApp(idapp) : Promise.resolve([]),
mygroups: version >= 91 ? MyGroup.findAllGroups(idapp) : Promise.resolve([]),
listcircuits: version >= 91 ? Circuit.findAllIdApp(idapp) : Promise.resolve([]),
myelems: version >= 91 ? MyElem.findAllIdApp(idapp) : Promise.resolve([]),
categories: version >= 91 ? Category.findAllIdApp(idapp) : Promise.resolve([]),
providers: version >= 91 ? Provider.findAllIdApp(idapp) : Promise.resolve([]),
scontisticas: version >= 91 ? Scontistica.findAllIdApp(idapp) : Promise.resolve([]),
gasordines: version >= 91 ? Gasordine.findAllIdApp(idapp) : Promise.resolve([]),
products: version >= 91
? Product.findAllIdApp(idapp, undefined, undefined, req.user ? User.isManager(req.user.perm) : false)
: Promise.resolve([]),
productInfos: version >= 91 ? ProductInfo.findAllIdApp(idapp) : Promise.resolve([]),
catprods: version >= 91 ? Product.getArrCatProds(idapp, shared_consts.PROD.BOTTEGA) : Promise.resolve([]),
subcatprods: version >= 91 ? SubCatProd.findAllIdApp(idapp) : Promise.resolve([]),
catprods_gas: version >= 91 ? Product.getArrCatProds(idapp, shared_consts.PROD.GAS) : Promise.resolve([]),
catAI: version >= 91 ? CatAI.findAllIdApp(idapp) : Promise.resolve([]),
authors: version >= 91 ? Author.findAllIdApp(idapp) : Promise.resolve([]),
publishers: version >= 91 ? Publisher.findAllIdApp(idapp) : Promise.resolve([]),
myschedas: version >= 91 ? MyElem.findallSchedeTemplate(idapp) : Promise.resolve([]),
collane: version >= 91 ? Collana.findAllIdApp(idapp) : Promise.resolve([]),
catalogs: version >= 91 ? Catalog.findAllIdApp(idapp) : Promise.resolve([]),
catprtotali: version >= 91 ? CatProd.getCatProdWithTitleCount(idapp) : Promise.resolve([]),
myuserextra: req.user
? User.addExtraInfo(idapp, req.user, version)
: Promise.resolve(null)
};
// var category = req.params.category;
// Esecuzione parallela di tutte le promesse
const keys = Object.keys(promises);
const results = await Promise.all(Object.values(promises));
const data = keys.reduce((acc, key, index) => {
acc[key] = results[index];
return acc;
}, {});
// tools.mylog('loadsite : ', req.params);
let bookedevent = [];
// let msgs = [];
let socioresidente = false;
if (req.user)
socioresidente = req.user.profile.socioresidente;
if (userId !== '0') {
// LOGGED WITH USERID
bookedevent = Booking.findAllByUserIdAndIdApp(userId, idapp,
gestoredelSito);
}
// 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);
const disciplines = Discipline.findAllIdApp(idapp);
const myelems = MyElem.findAllIdApp(idapp);
const myschedas = MyElem.findallSchedeTemplate(idapp);
const settings = Settings.findAllIdApp(idapp, false, false);
const permissions = Permission.findAllIdApp();
// const versionstr = User....
// let version = tools.getVersionint(versionstr);
let newstosent = Promise.resolve([]);
let mailinglist = Promise.resolve([]);
let mypage;
if (version > 91)
mypage = MyPage.findOnlyStruttRec(idapp);
else
mypage = MyPage.findAllIdApp(idapp);
let calzoom = CalZoom.findAllIdApp(idapp);
let gallery = Promise.resolve([]);
if (gestoredelSito) {
gallery = Gallery.findAllIdApp(idapp);
}
let producers = Producer.findAllIdApp(idapp);
let groups = Group.findAllIdApp(idapp);
// ....
let resps = User.getusersRespList(idapp);
let workers = User.getusersWorkersList(idapp);
let storehouses = Storehouse.findAllIdApp(idapp);
let providers = Provider.findAllIdApp(idapp);
let catprods = Product.getArrCatProds(idapp, shared_consts.PROD.BOTTEGA);
let catprtotali = CatProd.getCatProdWithTitleCount(idapp);
let collane = Collana.findAllIdApp(idapp);
let catalogs = Catalog.findAllIdApp(idapp);
let catprods_gas = Product.getArrCatProds(idapp, shared_consts.PROD.GAS);
let subcatprods = SubCatProd.findAllIdApp(idapp);
let gasordines = Gasordine.findAllIdApp(idapp);
let catAI = CatAI.findAllIdApp(idapp);
let ismanager = false;
try {
if (req.user)
ismanager = User.isManager(req.user.perm)
} catch (e) {
}
let products = Product.findAllIdApp(idapp, undefined, undefined, ismanager);
let authors = Author.findAllIdApp(idapp);
let publishers = Publisher.findAllIdApp(idapp);
let productInfos = ProductInfo.findAllIdApp(idapp);
let scontisticas = Scontistica.findAllIdApp(idapp);
let departments = Department.findAllIdApp(idapp);
let categories = Category.findAllIdApp(idapp);
// SKILLS:
let levels = Level.findAllIdApp(idapp);
let adtypes = AdType.findAllIdApp(idapp);
let adtypegoods = AdTypeGood.findAllIdApp(idapp);
let skills = Skill.findAllIdApp(idapp);
let goods = Good.findAllIdApp(idapp);
//let subSkills = SubSkill.findAllIdApp(idapp);
let statusSkills = StatusSkill.findAllIdApp(idapp);
let sectors = Sector.findAllIdApp(idapp);
let sectorgoods = SectorGood.findAllIdApp(idapp);
let catgrps = CatGrp.findAllIdApp(idapp);
let site = Site.findAllIdApp(idapp);
let mygroups = MyGroup.findAllGroups(idapp);
let listcircuits = Circuit.findAllIdApp(idapp);
let provinces = Province.findAllIdApp(idapp);
let cart = null;
let orderscart = null;
if (gestoredelSito) {
newstosent = Newstosent.findAllIdApp(idapp);
}
let calcstat = null;
if (req.user) {
calcstat = User.calculateStat(idapp, req.user.username);
cart = Cart.getCartByUserId(req.user.id, idapp);
if (ismanager) {
// Prende Tutti gli Ordini !
orderscart = OrdersCart.getOrdersCartByUserId('ALL', idapp, 0, false);
} else {
orderscart = OrdersCart.getOrdersCartByUserId(req.user.id, idapp, 0, false);
}
}
let askedfriends = [];
let myuserextra = null;
if (req.user) {
// askedfriends = User.getAskedFriendsByUsername(idapp, req.user.username);
myuserextra = User.addExtraInfo(idapp, req.user._doc, req.user, version);
}
return Promise.all([
bookedevent,
eventlist,
operators,
wheres,
contribtype,
settings, // 5
permissions,
disciplines,
newstosent,
mailinglist,
mypage, // 10
gallery,
paymenttype,
calcstat,
calzoom,
producers, // 15
cart,
storehouses,
departments,
orderscart,
groups, // 20
resps,
workers,
internalpages,
levels,
skills, //25
//subSkills,
myuserextra, // 26
sectors, // 27
statusSkills, //28
provinces,
catgrps,
adtypes,
adtypegoods,
sectorgoods,
goods,
site,
mygroups,
listcircuits, // 37
myelems, // 38
categories, // 39
providers,
scontisticas,
gasordines,
products,
productInfos,
catprods, //45
subcatprods,
catprods_gas, //47
catAI,
authors,
publishers,
myschedas,
collane,
catalogs,
catprtotali,
]).then((arrdata) => {
// console.table(arrdata);
// Aggiornamento delle informazioni dell'utente, se presente
let myuser = req.user;
if (myuser) {
try {
myuser = arrdata[26];
if (myuser) {
myuser.password = '';
myuser.calcstat = arrdata[13];
}
} catch (e) { }
if (myuser && data.myuserextra) {
myuser = data.myuserextra;
myuser.password = '';
myuser.calcstat = data.calcstat;
}
// Costruzione dell'oggetto di risposta in base alla versione
let responseData;
if (version < 91) {
res.status(status).send({
bookedevent: arrdata[0],
eventlist: arrdata[1],
operators: arrdata[2],
wheres: arrdata[3],
contribtype: arrdata[4],
settings: arrdata[5],
permissions: arrdata[6],
disciplines: arrdata[7],
newstosent: arrdata[8],
mailinglist: arrdata[9],
mypage: arrdata[10],
gallery: arrdata[11],
paymenttypes: arrdata[12],
calzoom: arrdata[14],
producers: arrdata[15],
cart: arrdata[16],
storehouses: arrdata[17],
departments: arrdata[18],
orders: arrdata[19],
groups: arrdata[20],
resps: arrdata[21],
workers: arrdata[22],
responseData = {
bookedevent: data.bookedevent,
eventlist: data.eventlist,
operators: data.operators,
wheres: data.wheres,
contribtype: data.contribtype,
settings: data.settings,
permissions: data.permissions,
disciplines: data.disciplines,
newstosent: data.newstosent,
mailinglist: data.mailinglist,
mypage: data.mypage,
gallery: data.gallery,
paymenttypes: data.paymenttype,
calzoom: data.calzoom,
producers: data.producers,
cart: data.cart,
storehouses: data.storehouses,
departments: data.departments,
orders: data.orderscart,
groups: data.groups,
resps: data.resps,
workers: data.workers,
myuser,
internalpages: arrdata[23],
});
internalpages: data.internalpages
};
} else {
res.status(status).send({
bookedevent: arrdata[0],
eventlist: arrdata[1],
operators: arrdata[2],
wheres: arrdata[3],
contribtype: arrdata[4],
settings: arrdata[5],
permissions: arrdata[6],
disciplines: arrdata[7],
newstosent: arrdata[8],
mailinglist: arrdata[9],
mypage: arrdata[10],
gallery: arrdata[11],
paymenttypes: arrdata[12],
calzoom: arrdata[14],
producers: arrdata[15],
cart: arrdata[16],
storehouses: arrdata[17],
departments: arrdata[18],
orders: arrdata[19],
groups: arrdata[20],
resps: arrdata[21],
workers: arrdata[22],
responseData = {
bookedevent: data.bookedevent,
eventlist: data.eventlist,
operators: data.operators,
wheres: data.wheres,
contribtype: data.contribtype,
settings: data.settings,
permissions: data.permissions,
disciplines: data.disciplines,
newstosent: data.newstosent,
mailinglist: data.mailinglist,
mypage: data.mypage,
gallery: data.gallery,
paymenttypes: data.paymenttype,
calzoom: data.calzoom,
producers: data.producers,
cart: data.cart,
storehouses: data.storehouses,
departments: data.departments,
orders: data.orderscart,
groups: data.groups,
resps: data.resps,
workers: data.workers,
myuser,
internalpages: arrdata[23],
levels: arrdata[24],
skills: arrdata[25],
// subSkills: arrdata[26],
// myuser arrdata[26]
sectors: arrdata[27],
statusSkills: arrdata[28],
provinces: arrdata[29],
catgrps: arrdata[30],
adtypes: arrdata[31],
adtypegoods: arrdata[32],
sectorgoods: arrdata[33],
goods: arrdata[34],
site: arrdata[35],
mygroups: arrdata[36],
listcircuits: arrdata[37],
myelems: arrdata[38],
categories: arrdata[39],
providers: arrdata[40],
scontisticas: arrdata[41],
gasordines: arrdata[42],
products: arrdata[43],
productInfos: arrdata[44],
catprods: arrdata[45],
subcatprods: arrdata[46],
catprods_gas: arrdata[47],
catAI: arrdata[48],
internalpages: data.internalpages,
levels: data.levels,
skills: data.skills,
sectors: data.sectors,
statusSkills: data.statusSkills,
provinces: data.provinces,
catgrps: data.catgrps,
adtypes: data.adtypes,
adtypegoods: data.adtypegoods,
sectorgoods: data.sectorgoods,
goods: data.goods,
site: data.site,
mygroups: data.mygroups,
listcircuits: data.listcircuits,
myelems: data.myelems,
categories: data.categories,
providers: data.providers,
scontisticas: data.scontisticas,
gasordines: data.gasordines,
products: data.products,
productInfos: data.productInfos,
catprods: data.catprods,
subcatprods: data.subcatprods,
catprods_gas: data.catprods_gas,
catAI: data.catAI,
code: req.code,
authors: arrdata[49],
publishers: arrdata[50],
myschedas: arrdata[51],
collane: arrdata[52],
catalogs: arrdata[53],
catprtotali: arrdata[54],
});
const prova = 1;
authors: data.authors,
publishers: data.publishers,
myschedas: data.myschedas,
collane: data.collane,
catalogs: data.catalogs,
catprtotali: data.catprtotali
};
}
}).catch((e) => {
console.log(e.message);
res.status(400).send(e);
});
}
console.log(' ... 2) load dati caricati ...');
res.status(status).send(responseData);
} catch (e) {
console.error('Errore in load:', e);
res.status(400).send({ error: e.message });
}
};
router.get(process.env.LINK_CHECK_UPDATES, authenticate_noerror, async (req, res) => {
const idapp = req.query.idapp;