Files
myprojplanet_vite/src/store/globalStore.ts

3259 lines
98 KiB
TypeScript

import { defineStore } from 'pinia';
import type {
ICfgServer,
IProvince,
IColGridTable,
IConfig,
IDataToSet,
IGlobalState,
IListRoutes,
IMyElem,
IMyPage,
IParamsPickup,
IParamsQuery,
ISettings,
IStatusSkill,
StateConnection,
ISchedaSingola,
IOptQueryGM,
IOptCatalogo,
IProduct,
IProductInfo,
IVariazione,
IDestNewsletter,
ICatalog,
INewCatalog,
} from '@model';
import { ICity, IMySkill, ISites, IMyScheda } from '@model';
import { static_data } from '@src/db/static_data';
import * as Types from '@src/store/Api/ApiTypes';
import { useUserStore } from '@store/UserStore';
import { serv_constants } from '@store/Modules/serv_constants';
import * as ApiTables from '@src/store/Modules/ApiTables';
import type { Router } from 'vue-router';
import { useRouter } from 'vue-router';
import { cfgrouter } from '@src/router/route-config';
import { Api } from '@api';
import { toolsext } from '@store/Modules/toolsext';
import { costanti } from '@costanti';
import { fieldsTable } from '@store/Modules/fieldsTable';
import { tools } from '@tools';
import { shared_consts } from '@src/common/shared_vuejs';
import globalroutines from '../globalroutines/index';
import { useCalendarStore } from '@store/CalendarStore';
import urlBase64ToUint8Array from '@src/js/utility';
import translate from '@src/globalroutines/util';
import { useTodoStore } from '@store/Todos';
import { useMessageStore } from './MessageStore';
import { useNotifStore } from '@store/NotifStore';
import { useCircuitStore } from '@store/CircuitStore';
import { routesAdmin } from '@src/router/routesAdmin';
import { routesECommerce } from '@src/router/routesECommerce';
import { routesAI } from '@src/router/routesAI';
import LandingFooter from '@src/components/LandingFooter/LandingFooter';
import { useProducts } from '@store/Products';
import { useCatalogStore } from './CatalogStore';
const stateConnDefault = 'online';
async function getConfig(id: any) {
return globalroutines('read', 'config', null, id);
}
export const useGlobalStore = defineStore('GlobalStore', {
state: (): IGlobalState => ({
showHeader: true,
finishLoading: false,
conta: 0,
wasAlreadySubscribed: false,
wasAlreadySubOnDb: false,
isLoginPage: false,
layoutNeeded: true,
mobileMode: false,
menuCollapse: true,
leftDrawerOpen: false,
rightDrawerOpen: false,
rightNotifOpen: false,
rightCoinsOpen: false,
rightCartOpen: false,
stateConnection: stateConnDefault,
serverError: false,
serverMsgError: {},
networkDataReceived: false,
clickcmd: '',
cfgServer: [],
testp1: { contatore: 0, mioarray: [] },
category: 'personal',
posts: [],
menulinks: {},
listatodo: [
{ nametranslate: 'personal', description: 'personal' },
{ nametranslate: 'work', description: 'work' },
{ nametranslate: 'shopping', description: 'shopping' },
],
connData: {
uploading_server: 0,
uploading_indexeddb: 0,
downloading_server: 0,
downloading_indexeddb: 0,
},
arrConfig: [],
lastaction: {
table: '',
type: 0,
_id: 0,
},
serv_settings: [],
templemail: [],
opzemail: [],
settings: [],
disciplines: [],
paymenttypes: [],
autoplaydisc: 8000,
newstosent: [],
gallery: [],
mailinglist: [],
mypage: [],
myelems: [],
myschedas: [],
calzoom: [],
producers: [],
groups: [],
resps: [],
workers: [],
storehouses: [],
scontisticas: [],
providers: [],
catprods: [],
subcatprods: [],
gasordines: [],
departments: [],
categories: [],
sharewithus: [],
TIMER: null,
TIMEOUT: null,
CUT: null,
TIMER_STATE: 0,
URL_RITORNA: '',
URL_RESTORE: '',
levels: [],
adtypes: [],
adtypegoods: [],
skills: [],
goods: [],
// subSkills: [],
statusSkills: [],
sectors: [],
sectorgoods: [],
catgrps: [],
catAI: [],
queryAIList: [],
site: {
confsite: {
options: 0,
},
confpages: {
font: '',
col_toolbar: '',
col_bgfooter: '',
show_darkopt: true,
showProfile: false,
showUserMenu: true,
showiscrittiMenu: false,
showRegButton: false,
enableReg: false,
showNL: false,
sendNewsletter: false,
showMsgs: false,
showNotif: false,
showCoins: false,
showRIS: false,
showMenuCoins: false,
showNameSurname: false,
showCompetenze: false,
showConnected: false,
bookingEvents: false,
enableEcommerce: false,
enableAI: false,
enableGroups: false,
enableCircuits: false,
enableProj: false,
enableTodos: false,
enableRegByBot: false,
enableRegMultiChoice: false,
enableTokenExpired: false,
enabledRegNeedTelegram: false,
enableGoods: false,
enableServices: false,
enableActivities: false,
enableHosps: false,
enableEvents: false,
enableDebugOn: false,
showButtHome: false,
showViewGroups: false,
showViewEventi: false,
showViewCircuits: false,
showViewUsers: false,
showViewBooking: false,
showViewProfile: false,
showViewCart: false,
showViewOrders: false,
enablePwa: false,
lang: costanti.Lang.IT,
videoPromo: '',
PDFPromo: '',
},
},
provinces: [],
mygroups: [],
selElem: {},
editOn: false,
myselector: { data: {}, table: '' },
addNewRecord: '',
isAppRunning: false,
deferredPrompt: null,
homescreen: '',
}),
getters: {
sovrascriviSchedaFromTemplate:
(state: IGlobalState) =>
(idTemplate: string, origScheda: ISchedaSingola, optcatalogo: IOptCatalogo) => {
const arrschede: ISchedaSingola[] = state.myschedas;
const myfindscheda = arrschede.find(
(recscheda: ISchedaSingola) => recscheda.scheda?._id === idTemplate
);
const precname = origScheda.scheda?.name;
if (myfindscheda) {
const myschedatocopy = tools.jsonCopy(myfindscheda);
if (myschedatocopy) {
myschedatocopy.scheda._id = origScheda.scheda?._id;
myschedatocopy.scheda.isTemplate = false;
myschedatocopy.scheda.name = precname;
myschedatocopy.scheda.linkIdTemplate = origScheda.scheda?.linkIdTemplate;
myschedatocopy.scheda.scalexscheda = origScheda.scheda?.scalexscheda;
myschedatocopy.scheda.scaleyscheda = origScheda.scheda?.scaleyscheda;
return myschedatocopy.scheda;
}
}
return null;
},
sovrascriviPaginaDefaultFromTemplate:
(state: IGlobalState) => (idTemplate: string, origDimensioni: IDimensioni) => {
const myfindelem = state.myelems.find(
(myelem: IMyElem) => myelem._id === idTemplate
);
const precname = origDimensioni.name;
if (myfindelem) {
const myelemtocopy = tools.jsonCopy(myfindelem);
if (myelemtocopy) {
// myelemtocopy.scheda._id = origScheda.scheda?._id;
myelemtocopy.catalogo.dimensioni_def.isTemplate = false;
myelemtocopy.catalogo.dimensioni_def.name = precname;
myelemtocopy.catalogo.dimensioni_def.linkIdTemplate =
origDimensioni.linkIdTemplate;
return myelemtocopy.catalogo;
}
}
return null;
},
sovrascriviAreadistampaFromTemplate:
(state: IGlobalState) => (idTemplate: string, optCatalogo: IOptCatalogo) => {
const myfindelem = state.myelems.find(
(myelem: IMyElem) => myelem._id === idTemplate
);
if (myfindelem) {
const myelemtocopy = tools.jsonCopy(myfindelem);
if (myelemtocopy) {
const linkIdTemplate = myelemtocopy.catalogo.print_linkIdTemplate;
myelemtocopy.catalogo.print_isTemplate = false;
myelemtocopy.catalogo.print_linkIdTemplate = linkIdTemplate;
return myelemtocopy.catalogo;
}
}
return null;
},
// conta: (state: IGlobalState) => { state.conta },
// listatodo: (state: IGlobalState) => { state.listatodo },
// category: (state: IGlobalState) => { state.category },
testpao1_getter_contatore: (state: IGlobalState) => (param1: number) =>
state.testp1.contatore + 100 + param1,
testpao1_getter_array: (state: IGlobalState) => (param1: number) =>
state.testp1.mioarray.filter((item) => item).map((item) => item.valore),
getConfigbyId: (state: IGlobalState) => (id: string) =>
state.arrConfig.find((item) => item._id === id),
getConfigStringbyId: (state: IGlobalState) => (params: any) => {
const config = state.arrConfig.find((item) => item._id === params.id);
if (config) {
return config.value;
} else {
return params.default;
}
},
getColByStatusSkills: (state: IGlobalState) => (id: number) => {
const ctrec = state.statusSkills.find(
(mystatus: IStatusSkill) => mystatus._id === id
);
return ctrec && ctrec.color ? ctrec.color : 'green';
},
getStatusSkillById: (state: IGlobalState) => (id: number) => {
const ctrec = state.statusSkills.find(
(mystatus: IStatusSkill) => mystatus._id === id
);
return ctrec ? ctrec.descr : '';
},
getStatusSkillIconById: (state: IGlobalState) => (id: number) => {
const ctrec = state.statusSkills.find(
(mystatus: IStatusSkill) => mystatus._id === id
);
return ctrec ? ctrec.icon : '';
},
isNewVersionAvailable: (state: IGlobalState) => {
// console.log('cfgServer', cfgServer)
const serversrec = state.cfgServer.find(
(x) =>
x.chiave === toolsext.SERVKEY_VERS && x.idapp === tools.getEnv('VITE_APP_ID')
);
// console.log('Record ', serversrec)
if (serversrec) {
console.log(
'Vers Server ',
serversrec.valore,
'Vers locale:',
import.meta.env.VITE_APP_VERSION
);
return serversrec.valore !== import.meta.env.VITE_APP_VERSION;
}
return false;
},
getSchedeOptByTag: (state: IGlobalState) => (tag?: string) => {
const Products = useProducts();
return Products.getSchedeOptByArrSchede(state.myschedas, tag);
},
getOptCatalogoTemplate: (state: IGlobalState) => (tag?: string) => {
const Products = useProducts();
return Products.getSchedeOptByArrSchede(state.myschedas, tag);
},
getLinkIdTemplateByName: (state: IGlobalState) => (name: string) => {
try {
const myrecscheda = state.myschedas.find(
(recscheda: ISchedaSingola) => recscheda.scheda.name === name
);
return myrecscheda.scheda._id;
} catch (error) {
return '';
}
},
isMyLang: (state: IGlobalState) => (rec: any) => {
if (!rec.lang) return true;
return rec.lang === toolsext.getLocale(false) || toolsext.getLocale() === '';
},
getPage:
(state: IGlobalState) =>
(path: string): IMyPage | undefined =>
state.mypage.find((page) => `/${page.path}` === path),
getPageById:
(state: IGlobalState) =>
(idpage: string): IMyPage | undefined => {
const mypage = state.mypage.find((page) => `${page._id}` === idpage);
return mypage;
},
getMyPagesOptionsTemplate: (state: IGlobalState) => (): any[] => {
return state.mypage
.filter((mypage: IMyPage) => mypage.isTemplate === true)
.map((page: IMyPage) => ({
label: page.title,
value: page._id,
}));
},
getPathByIdPage:
(state: IGlobalState) =>
(idpage: string): string => {
const mypage = state.mypage.find((page) => `${page._id}` === idpage);
if (mypage) {
return mypage.path!;
}
return '';
},
getMyElemsByIdPage:
(state: IGlobalState) =>
(idPage?: string): IMyElem[] | [] => {
return state.myelems
.filter((page: IMyElem) => page._id === idPage)
.sort((a: any, b: any) => a.order - b.order);
},
getMySchede: (state: IGlobalState) => (): ISchedaSingola[] | [] => {
return state.myschedas;
},
getMyElemPrecThisElemId:
(state: IGlobalState) =>
(idPage: string, idelem: string): IMyElem => {
// Ottieni tutti gli myelem con lo stesso path e ordinali per order
const sortedElems = state.myelems
.filter((elem: IMyElem) => elem.idPage === idPage)
.sort((a: any, b: any) => a.order - b.order);
// Trova l'indice dell'elemento con _id = idelem
const index = sortedElems.findIndex((elem: IMyElem) => elem._id === idelem);
// ritorna l'elemento precedente
if (index > 0) {
return sortedElems[index - 1];
} else {
return sortedElems[0];
}
},
getMyElemNextThisElemId:
(state: IGlobalState) =>
(idPage: string, idelem: string): IMyElem => {
// Ottieni tutti gli myelem con lo stesso idpage e ordinali per order
const sortedElems = state.myelems
.filter((elem: IMyElem) => elem.idPage === idPage)
.sort((a: any, b: any) => a.order - b.order);
// Trova l'indice dell'elemento con _id = idelem
const index = sortedElems.findIndex((elem: IMyElem) => elem._id === idelem);
// ritorna l'elemento successivo
if (index < sortedElems.length - 1) {
return sortedElems[index + 1];
} else {
return sortedElems[sortedElems.length - 1];
}
},
getmenu: (state: IGlobalState): any => {
// console.log('getmenu', cfgrouter.getmenu())
const mystate = state;
mystate.menulinks = {
Dashboard: {
routes: cfgrouter.getmenu(),
show: true,
},
};
return mystate.menulinks;
},
isPresenteCardsByProv: (state: IGlobalState) => (myprov: string) => {
const arrprov: any[] = state.provinces.filter(
(prov: IProvince) => prov.prov === myprov && !!prov.card
);
return arrprov && arrprov.length > 0;
},
getRespByUsername: (state: IGlobalState) => (username: string) => {
const rec = state.resps.find((recin: any) => recin.username === username);
return !!rec ? rec.name + ' ' + rec.surname : '';
},
getListByTable:
(state: IGlobalState) =>
(table: string, value2?: any): any => {
let ris: any = [];
const calendarStore = useCalendarStore();
const Products = useProducts();
const circuitStore = useCircuitStore();
const userStore = useUserStore();
const catalogStore = useCatalogStore();
const messageStore = useMessageStore();
const notifStore = useNotifStore();
if (table === costanti.TABEVENTS) return calendarStore.eventlist;
else if (table === 'operators') return calendarStore.operators;
else if (table === 'internalpages') return calendarStore.internalpages;
else if (table === 'wheres') return calendarStore.wheres;
else if (table === 'contribtypes') return calendarStore.contribtype;
else if (table === shared_consts.TABFILTRI_UTENTE)
return [
...shared_consts.RECFILTRI_UTENTE,
...(userStore.isFacilitatore || userStore.isAdmin
? shared_consts.RECFILTRI_UTENTE_FACIL
: []),
];
else if (table === 'disciplines') ris = state.disciplines;
else if (table === toolsext.TABNEWSLETTER) ris = state.newstosent;
else if (table === toolsext.TABGALLERY) ris = state.gallery;
else if (table === toolsext.TABTEMPLEMAIL) ris = state.templemail;
else if (table === toolsext.TABDESTNEWSLETTER) ris = state.destnewsletter;
else if (table === toolsext.TABOPZEMAIL) ris = state.opzemail;
else if (table === toolsext.TABMAILINGLIST) ris = state.mailinglist;
else if (table === toolsext.TABMYPAGE) ris = state.mypage;
else if (table === 'mypages_id') ris = state.mypage;
else if (table === toolsext.TABMYELEMS) ris = state.myelems;
else if (table === toolsext.TABCATALOGS) ris = catalogStore.catalogs!;
else if (table === toolsext.TABRACCOLTA_CATALOGHI)
ris = catalogStore.raccoltacataloghis!;
else if (table === toolsext.TABCALZOOM) ris = state.calzoom;
else if (table === 'producers') ris = state.producers;
else if (table === 'storehouses') ris = state.storehouses;
else if (table === 'providers') ris = state.providers;
else if (table === 'productinfos') ris = Products.productInfos;
// else if (table === 'products') ris = Products.products
else if (table === 'gasordines') ris = state.gasordines;
else if (table === 'scontisticas') ris = state.scontisticas;
else if (table === 'groups') ris = state.groups;
else if (table === 'resps') ris = state.resps;
else if (table === 'workers') ris = state.workers;
else if (table === 'departments') ris = state.departments;
else if (table === 'categorys') ris = state.categories;
else if (table === 'catprods') ris = Products.catprods;
else if (table === 'catprtotali') ris = Products.catprtotali;
else if (table === 'collanas') ris = Products.collane;
else if (table === 'collanastotali') ris = Products.collane;
else if (table === 'subcatprods') ris = Products.subcatprods;
else if (table === 'catprods_gas') ris = Products.catprods_gas;
else if (table === 'authors') ris = Products.authors;
else if (table === 'publishers') ris = Products.publishers;
else if (table === 'publishers_totali') ris = Products.publishers;
else if (table === 'publishers_totali_sort_qty')
ris = Products.publishers_sort_qty;
else if (table === 't_web_statiprodottos') ris = Products.stati_prodotto;
else if (table === 't_web_tipologies') ris = Products.tipologie;
else if (table === 't_web_tipiformatos') ris = Products.tipoformato;
else if (table === 'catais') ris = state.catAI;
else if (table === 'queryais') ris = state.queryAIList;
else if (table === 'sharewithus') ris = state.sharewithus;
else if (table === 'paymenttypes') ris = state.paymenttypes;
else if (table === 'circuits') ris = circuitStore.listcircuits;
else if (table === 'listcircuits') ris = circuitStore.getCircuitsLabelValue();
else if (table === 'listaccounts') ris = circuitStore.getAccountsListNameValue();
else if (table === 'bookings') return calendarStore.bookedevent;
else if (table === 'users') return userStore.usersList;
else if (table === 'friends') return userStore.my.profile.friends;
else if (table === 'lista_editori') {
ris = userStore.listaEditori;
} else if (table === 'lista_referenti') {
ris = userStore.listaReferenti;
} else if (table === 'friendsandme')
return [{ username: userStore.my.username }, ...userStore.my.profile.friends];
// else if (table === 'mygroups')
// return userStore.groups
else if (table === 'mygroups') return state.mygroups;
else if (table === 'sendmsgs') return messageStore.last_msgs;
else if (table === 'sendnotifs') return notifStore.last_notifs;
else if (table === 'settings') return state.settings;
else if (table === 'levels') return state.levels;
else if (table === 'adtypes') return state.adtypes;
else if (table === 'adtypegoods') return state.adtypegoods;
else if (table === 'skills') return state.skills;
else if (table === 'goods') return state.goods;
// else if (table === 'subskills')
// return state.subSkills
else if (table === 'statusSkills') return state.statusSkills;
else if (table === toolsext.TABSECTORS) return state.sectors;
else if (table === 'sectorgoods') return state.sectorgoods;
else if (table === 'catgrps') return state.catgrps;
else if (table === 'schedeopt')
return Products.getSchedeOptByArrSchede(state.myschedas);
else if (table === 'provinces')
return state.provinces.filter(
(rec: IProvince) => !rec.card && rec.prov !== 'ITA' && rec.prov !== 'EST'
);
else if (table === 'cards') {
const arrprov: any[] = state.provinces.filter(
(prov: IProvince) => prov.prov === value2 && !!prov.card
);
if (arrprov) {
// const idCardArray: { _id: number, card: string }[] = arrprov.map(({ _id, card }) => ({ _id, card }));
const idCardArray: { card: string; label: string }[] = arrprov.map(
({ card }) => ({
card,
label: card,
})
);
return idCardArray;
}
return [];
} else {
return ris;
}
return ris;
},
getrecSettingsByKey:
(state: IGlobalState) =>
(key: any, serv: any): ISettings | undefined => {
if (serv) return state.serv_settings.find((rec) => rec.key === key);
const ris = state.settings.find((rec) => rec.key === key);
// console.log('getrecSettingsByKey=', ris)
return ris;
},
getCmdClick: (state: IGlobalState): string => (state.clickcmd ? state.clickcmd : ''),
gettemplemailbyId:
(mystate: IGlobalState) =>
(templid: string): string => {
const myrec = mystate.templemail.find((rec) => rec._id === templid);
return !!myrec ? myrec.subject! : '';
},
getdestnewsletterbyId:
(mystate: IGlobalState) =>
(id: string): string => {
const myrec = mystate.destnewsletter.find(
(rec: IDestNewsletter) => rec._id === id
);
return !!myrec ? myrec.descr! : '';
},
},
actions: {
getMyElems(path: string): IMyElem[] | [] {
const mypage = this.getPage(`/${path}`);
if (mypage) {
const idPage = mypage._id;
let arrelems = this.myelems
.filter((myelem: IMyElem) => myelem.idPage === idPage)
.sort((a: any, b: any) => a.order - b.order);
if (arrelems.length > 0) return arrelems;
// Se non lo trovo per ID allora lo cerco per path
const arrelempath = this.myelems
.filter((myelem: IMyElem) => myelem.path === path)
.sort((a: any, b: any) => a.order - b.order);
return arrelempath;
}
return [];
},
setValueSettingsByKey({
key,
value,
serv,
}: {
key: string;
value: any;
serv: boolean;
}): any {
// Update the Server
// Update in Memory
let myrec = null;
if (serv) myrec = this.serv_settings.find((rec: any) => rec.key === key);
else myrec = this.settings.find((rec: any) => rec.key === key);
if (myrec) {
if (
myrec.type === costanti.FieldType.date ||
myrec.type === costanti.FieldType.onlydate
)
myrec.value_date = value;
else if (
myrec.type === costanti.FieldType.number ||
myrec.type === costanti.FieldType.hours
)
myrec.value_num = value;
else if (myrec.type === costanti.FieldType.boolean) myrec.value_bool = value;
else myrec.value_str = value;
// console.log('setValueSettingsByKey value', value, 'myrec', myrec)
}
},
getValueSettingsByKey(key: any, serv: any): any {
const myrec = this.getrecSettingsByKey(key, serv);
// console.log('getValueSettingsByKey', myrec, 'key=', key, 'srv=', serv)
if (myrec) {
if (
myrec.type === costanti.FieldType.date ||
myrec.type === costanti.FieldType.onlydate
)
return myrec.value_date;
if (
myrec.type === costanti.FieldType.number ||
myrec.type === costanti.FieldType.hours
)
return myrec.value_num;
if (myrec.type === costanti.FieldType.boolean) return myrec.value_bool;
else if (myrec.type === costanti.FieldType.crypted) return '***********';
else if (myrec.value_str === undefined) {
return '';
} else {
return myrec.value_str;
}
}
return '';
},
changeCmdClick(value: string) {
console.log('changeCmdClick', value);
this.clickcmd = value;
},
isOnline(): boolean {
return this.stateConnection === 'online';
},
getLangAvailable() {
let myarrLang = [];
// console.log('lang Server: ', this.site.confpages.lang)
if (tools.isLangEnabled(costanti.Lang.IT)) {
myarrLang.push({
label: 'Italiano',
icon: 'fa-flag-it',
value: 'it',
image: '../images/it.png',
short: 'IT',
});
}
if (tools.isLangEnabled(costanti.Lang.EN)) {
// console.log('ENG')
myarrLang.push({
label: 'English',
icon: 'fa-flag-us',
value: 'enUs',
image: '../images/gb.png',
short: 'EN',
});
}
if (tools.isLangEnabled(costanti.Lang.ES)) {
myarrLang.push({
label: 'Español',
icon: 'fa-flag-es',
value: 'es',
image: '../images/es.png',
short: 'ES',
});
}
if (tools.isLangEnabled(costanti.Lang.FR)) {
myarrLang.push({
label: 'Français',
icon: 'fa-facebook',
value: 'fr',
image: '../public/images/fr.png',
short: 'FR',
});
}
if (tools.isLangEnabled(costanti.Lang.DE)) {
myarrLang.push({
label: 'German',
icon: 'fa-flag-de',
value: 'de',
image: '../public/images/de.png',
short: 'DE',
});
}
return myarrLang;
},
addDynamicPages($router: Router | null) {
// console.log('this.mypage', this.mypage)
/// console.log('addDynamicPages.........')
const arrpagesroute: IListRoutes[] = [];
for (const page of this.mypage) {
if (page.active) {
if (this.isMyLang(page)) {
// console.log('page.active', page.title)
// console.log('page', page.title, 'OK')
arrpagesroute.push({
active: true,
order: page.order ? page.order : 1000,
lang: page.lang,
path: `/${page.path}`,
name: '',
text: page.title,
subtitle: page.subtitle,
materialIcon: page.icon,
iconsize: page.iconsize,
component: () => import('@src/root/mypage/mypage.vue'),
inmenu: page.inmenu,
onlySocioResidente: page.only_residenti,
onlyConsiglio: page.only_consiglio,
onlyAdmin: page.only_admin,
color: page.color,
infooter: page.infooter,
onlyif_logged: page.onlyif_logged,
level_child: page.l_child,
level_parent: page.l_par,
submenu: page.submenu,
extraclass: page.extraclass,
mainMenu: page.mainMenu,
sottoMenu: page.sottoMenu,
});
}
}
}
const baseroutes = static_data.getDynamicPages(this.site);
const adminRoutes = routesAdmin.routesAd(this.site);
const ecommRoutes = routesECommerce.routesEcomm(this.site);
const AIRoutes = routesAI.routesAI(this.site);
const last = {
active: true,
order: 10000,
path: '/:catchAll(.*)*',
materialIcon: 'fas fa-calendar-plus',
name: 'otherpages.error404def',
component: () => import('@src/root/My404page/My404page.vue'),
inmenu: false,
infooter: false,
};
const sito_offline = {
active: true,
order: 20,
path: '/sito_offline',
materialIcon: 'home',
name: 'otherpages.sito_offline',
component: () => import('@src/rootgen/sito_offline/sito_offline.vue'),
inmenu: false,
infooter: false,
};
// console.log('Sito Online? ', toolsext.sito_online(false))
if (!toolsext.sito_online(false)) {
static_data.routes = [sito_offline, last];
} else {
static_data.routes = [
sito_offline,
...baseroutes,
...ecommRoutes,
...adminRoutes,
...arrpagesroute,
...AIRoutes,
last,
];
}
/*for (const menu of static_data.routes) {
if (menu.active && menu.routes2) {
for (const menu2 of menu.routes2) {
if (menu2.active && !menu2.noroute) {
arrpagesroute.push(menu2)
}
}
}
}*/
// Sort array
static_data.routes = static_data.routes.sort((a, myb) => a.order - myb.order);
// console.log('static_data.routes', static_data.routes)
// console.log('$router', $router)
if ($router) {
static_data.routes.forEach((route: any) => {
if (!$router.hasRoute(route.name) && !route.noroute) {
$router.addRoute(route);
}
if (route.routes2) {
for (const route2 of route.routes2) {
if (!$router.hasRoute(route2.name) && !route2.noroute) {
$router.addRoute(route2);
}
if (route2.routes2) {
for (const route3 of route2.routes2) {
if (!$router.hasRoute(route3.name) && !route3.noroute) {
$router.addRoute(route3);
}
}
}
}
}
});
if (!tools.sito_online(false)) {
$router.replace('/sito_offline');
}
// console.log('getRoutes', $router.getRoutes())
const mypathsel = $router.currentRoute.value.fullPath;
if (mypathsel !== '/') {
// console.log('mypathsel', mypathsel)
const trovato = this.mypage.filter(
(rec: IMyPage) => rec.path === mypathsel && rec.active
);
// if ($router.currentRoute.value.fullPath in ) {
if (trovato) {
$router.replace(mypathsel);
}
}
}
},
async aggiornaMenu(router: Router) {
await this.addDynamicPages(router);
},
setPaoArray_Delete(state: IGlobalState) {
state.testp1.mioarray.pop();
},
setConta(num: number) {
this.conta = num;
},
setleftDrawerOpen(bool: boolean) {
this.leftDrawerOpen = bool;
tools.localStSetItem(toolsext.localStorage.leftDrawerOpen, bool.toString());
},
setCategorySel(cat: string | null) {
this.category = cat || '';
},
setStateConnection(stateconn: StateConnection) {
if (this.stateConnection !== stateconn) {
console.log('INTERNET ', stateconn);
this.stateConnection = stateconn;
}
},
saveConfig(data: IConfig) {
// this.$set(dataout, data.value, {'value': 'default value'})
return globalroutines('write', 'config', {
_id: data._id,
value: data.value,
});
},
SetwasAlreadySubOnDb(subscrib: boolean) {
this.wasAlreadySubOnDb = subscrib;
},
setShowType(showtype: number) {
const todos = useTodoStore();
console.log('setShowType', showtype);
const config = this.getConfigbyId(costanti.CONFIG_ID_SHOW_TYPE_TODOS);
console.log('config', config);
if (config) {
config.value = String(showtype);
todos.showtype = parseInt(config.value, 10);
} else {
todos.showtype = showtype;
}
console.log('Todos.state.showtype', todos.showtype);
this.saveConfig({
_id: costanti.CONFIG_ID_SHOW_TYPE_TODOS,
value: String(showtype),
});
},
UpdateValuesInMemory(mydata: IDataToSet): void {
const { id } = mydata;
const { table } = mydata;
try {
const mylist = this.getListByTable(table!);
const mykey = fieldsTable.getKeyByTable(table!);
if (mylist) {
const myrec = mylist.find((event: any) => event[mykey] === id);
// console.log('myrec', myrec)
if (myrec) {
// console.log('key', value, myrec[key])
for (const [key, value] of Object.entries(mydata.fieldsvalue)) {
myrec[key] = value;
}
}
}
} catch (e) {
console.error(e);
}
},
UpdateValuesInMemoryByTable(mydata: any, table: string): void {
try {
const mylist = this.getListByTable(table);
const mykey = fieldsTable.getKeyByTable(table);
const id = mydata[mykey];
console.log('mylist', mylist);
console.log('mykey', mykey);
console.log('id', id);
if (mylist) {
const myrec = mylist.find((event: any) => event[mykey] === id);
// console.log('myrec', myrec)
if (myrec) {
// console.log('key', value, myrec[key])
for (const [key, value] of Object.entries(mydata)) {
myrec[key] = value;
}
}
console.log('update: ', myrec);
}
} catch (e) {
console.error(e);
}
},
newValueInMemoryByTable(mydata: any, table: string): void {
try {
const mylist = this.getListByTable(table);
if (mylist) {
mylist.push(mydata);
}
} catch (e) {
console.error(e);
}
},
async createPushSubscription() {
// console.log('ENTER TO createPushSubscription')
// If Already subscribed, don't send to the Server DB
// if (state.wasAlreadySubOnDb) {
// // console.log('wasAlreadySubOnDb!')
// return
// }
if (!this.site.confpages || !this.site.confpages.enablePwa) return;
if (!('serviceWorker' in navigator)) {
console.log('serviceWorker not present !');
return;
}
if (!('PushManager' in window)) {
console.log('PushManager not present !');
return;
}
console.log('createPushSubscription');
let reg: any;
const mykey = import.meta.env.VITE_PUBLICKEY_PUSH;
if (navigator.serviceWorker) {
return navigator.serviceWorker.ready
.then((swreg) => {
reg = swreg;
return swreg.pushManager.getSubscription();
})
.then((subscription) => {
console.log('!!!!!!!! subscription = ', subscription);
this.wasAlreadySubscribed = !(subscription === null);
if (this.wasAlreadySubscribed) {
// console.log('User is already SAVED Subscribe on DB!')
// return null
return subscription;
} else {
// Create a new subscription
console.log('#### Create a new subscription !!!');
const convertedVapidPublicKey = urlBase64ToUint8Array(mykey);
return reg.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: convertedVapidPublicKey,
});
}
})
.then((newSub) => {
this.saveNewSubscriptionToServer(newSub);
})
.catch((err) => {
console.log('ERR createPushSubscription:', err);
});
}
},
// Calling the Server to Save in the MongoDB the Subscriber
saveNewSubscriptionToServer(newSub: any) {
// console.log('saveNewSubscriptionToServer')
const userStore = useUserStore();
if (!newSub) {
return;
}
if (userStore.isUserInvalid) {
return;
}
// console.log('saveSubscriptionToServer: ', newSub)
// console.log('context', context)
const options = null;
let notreg = false;
if (userStore.isTokenInvalid) {
notreg = true;
}
// If is not already stored in DB, then show the message to the user.
if (!this.wasAlreadySubscribed || notreg) {
/*
options = {
title: tools.translate('notification.title_subscribed', [{
strin: 'sitename',
strout: translate('ws.sitename'),
}]),
content: translate('notification.subscribed'),
openUrl: '/',
}
*/
}
const myres = {
options,
subs: newSub,
others: {
userId: userStore.my._id,
access: userStore.my.tokens![0].access,
},
};
return Api.SendReq('/subscribe', 'POST', myres)
.then((res) => {
this.wasAlreadySubscribed = true;
this.wasAlreadySubOnDb = true;
// if (res)
// console.log('saveNewSubscriptionToServer: OK')
tools.localStSetItem(
toolsext.localStorage.wasAlreadySubOnDb,
String(this.wasAlreadySubOnDb)
);
})
.catch((e) => {
console.log('Error during Subscription!', e);
});
},
async deleteSubscriptionToServer() {
console.log('DeleteSubscriptionToServer: ');
try {
return Api.SendReq('/subscribe/del', 'DELETE', null);
} catch (e) {
console.error('deleteSubscriptionToServer');
}
},
async clearDataAfterLogout() {
// console.log('clearDataAfterLogout')
try {
for (const table of ApiTables.allTables()) {
await globalroutines('clearalldata', table, null);
}
} catch (e) {
//
}
if (this.site.confpages.enablePwa) {
if ('serviceWorker' in navigator) {
// REMOVE ALL SUBSCRIPTION
console.log('REMOVE ALL SUBSCRIPTION...');
if (navigator.serviceWorker) {
navigator.serviceWorker.ready
.then((reg) => {
console.log('... Ready');
reg.pushManager.getSubscription().then((subscription) => {
console.log(' Found Subscription...');
if (subscription) {
subscription
.unsubscribe()
.then((successful) => {
// You've successfully unsubscribed
console.log("You've successfully unsubscribed");
})
.catch((e) => {
// Unsubscription failed
});
}
});
})
.catch((err) => {
console.error('err ready service worker', err);
});
}
}
}
await this.deleteSubscriptionToServer();
},
clearDataAfterLoginOnlyIfActiveConnection() {
const prova = 1;
return prova;
},
async loadLoginSite(router: Router) {
let isok = false;
let code = 200;
let stop = false;
const { ris, status } = await this.loadSite();
if (status === toolsext.ERR_RETRY_LOGIN) {
stop = true;
code = status;
} else {
isok = true;
}
return { isok, stop, code };
},
async loadAfterLogin() {
const userStore = useUserStore();
// console.log('loadAfterLogin')
this.clearDataAfterLoginOnlyIfActiveConnection();
await userStore.loadListaEditori();
await userStore.loadListaReferenti();
await globalroutines('readall', 'config', null);
if (tools.isLogged()) {
const pageKey = window.location.pathname;
this.editOn = tools.getCookie('edn_' + pageKey, '0') === '1';
}
},
async saveCfgServerKey(dataval: ICfgServer) {
//console.log('saveCfgServerKey dataval', dataval)
const ris = await Api.SendReq('/admin/updateval', 'POST', {
pairval: dataval,
});
},
async checkUpdates() {
console.log('checkUpdates');
const userStore = useUserStore();
// if (userStore.my._id === '')
// return false // Login not made
this.networkDataReceived = false;
const ris = await Api.SendReq('/checkupdates', 'GET', null)
.then((res) => {
this.networkDataReceived = true;
// console.log('******* checkUpdates RES :', res.data.cfgServer)
if (res.data.CfgServer) {
this.cfgServer = [...res.data.CfgServer];
// console.log('res.data.cfgServer', res.data.cfgServer)
}
// console.log('res.data.userslist', res.data.usersList)
if (res.data.usersList) {
userStore.setusersList(res.data.usersList);
}
if (res.data.last_msgs) {
// ++Todo conv: MessageStore.last_msgs = [...res.data.last_msgs]
}
// console.log('MessageStore.last_msgs', MessageStore.last_msgs)
// console.log('********** res', 'todos', todos, 'checkPending', checkPending)
// After Login will store into the indexedDb...
return res;
})
.catch((error) => {
console.log('error checkUpdates', error);
userStore.setErrorCatch(error);
return error;
});
},
async sendPushNotif({ params }: { params: any }) {
return Api.SendReq('/push/send', 'POST', { params })
.then((res) => {
// console.table(res)
return res.data;
})
.catch((error) => {
console.log('error sendPushNotif', error);
return null;
});
},
async loadTable(params: IParamsQuery) {
const userStore = useUserStore();
return Api.SendReq('/gettable', 'POST', params)
.then((res) => {
this.serverError = false;
// if (tools.isDebug())
// console.table(res)
return res.data;
})
.catch((error) => {
this.serverError = true;
this.serverMsgError = error;
console.log('error loadTable', error);
userStore.setErrorCatch(error);
return null;
});
},
async getObjOnServer(cmd: string) {
const userStore = useUserStore();
return Api.SendReq('/getobj', 'POST', { cmd })
.then((res) => {
this.serverError = false;
return res.data.data;
})
.catch((error) => {
this.serverError = true;
this.serverMsgError = error;
console.log('error getObjOnServer', error);
userStore.setErrorCatch(error);
return null;
});
},
async loadExp(params: any) {
// console.log('loadTable', params)
params.filtersearch2 = 'fdsgas1';
return Api.SendReq('/getexp', 'POST', params)
.then((res) => {
return res.data ? res.data : [];
})
.catch((error) => {
return [];
});
},
loadPickup(params: IParamsPickup) {
console.log('loadPickup', params);
const userStore = useUserStore();
return Api.SendReq('/pickup', 'POST', params)
.then((res) => {
// console.table(res)
return res.data;
})
.catch((error) => {
console.log('error loadPickup', error);
userStore.setErrorCatch(error);
return null;
});
},
async caricaTabella(table: string, extrapar: string) {
const myarr = [];
const sortBy = 'descr';
const descending = 1;
const myobj: any = {};
if (descending) myobj[sortBy] = -1;
else myobj[sortBy] = 1;
const params: IParamsQuery = {
newvers: true,
table: '',
startRow: 0,
endRow: 10000,
filter: '',
filterand: '',
filtersearch: '',
filtersearch2: '',
filtercustom: '',
filter_gte: '',
sortBy: myobj,
descending,
userId: '',
extrapar,
noaut: false,
};
params.table = table;
return this.loadTable(params)
.then((data) => {
return data;
})
.catch((e) => {
return [];
});
},
async loadPage(path: string, dove?: string) {
const userStore = useUserStore();
path = path.substring(1);
const mypage = this.getPage(`/${path}`);
// console.log('mypage', mypage)
// Controlla se l'ho già caricato
if (!!mypage && (!!mypage.content || mypage.loadFirst || mypage.loaded)) {
return mypage;
}
// console.log(dove, '*** loadPage', path)
return Api.SendReq('/getpage', 'POST', { path })
.then((res) => {
// console.table(res)
if (res) {
const index = this.mypage.findIndex((rec) => rec.path === path);
if (index >= 0) {
// console.log('load page', path, '...')
this.mypage[index] = res.data.mypage;
this.mypage[index].loaded = true;
}
return res.data.mypage;
}
return null;
})
.catch((error) => {
console.log('error loadTable', error);
userStore.setErrorCatch(error);
return null;
});
},
async duplicatePage(path: string, $q: any, t: any) {
const userStore = useUserStore();
let newpath = prompt(t('mypages.duplica_newname'));
if (!newpath) return false;
$q.dialog({
message: t('mypages.duplica_conferma', { path, newpath }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda'),
}).onOk(() => {
return Api.SendReq('/duppage', 'POST', { path, newpath })
.then((res) => {
if (res) {
tools.showPositiveNotif($q, t('mypages.duplicateok'));
return true;
} else {
tools.showNegativeNotif($q, t('mypages.duplicateerr'));
return false;
}
})
.catch((error) => {
console.log('error loadTable', error);
userStore.setErrorCatch(error);
return null;
});
});
},
async exportPage(path: string, $q: any, t: any) {
const userStore = useUserStore();
return Api.SendReq('/exppage', 'POST', { path })
.then((res) => {
if (res && res.data && res.data.json) {
tools.showPositiveNotif($q, t('mypages.expok'));
return res.data.json;
} else {
tools.showNegativeNotif($q, t('mypages.experr'));
return null;
}
})
.catch((error) => {
console.log('error loadTable', error);
userStore.setErrorCatch(error);
return null;
});
},
importPage(jsonString: string, $q: any, t: any) {
const userStore = useUserStore();
return Api.SendReq('/imppage', 'POST', { jsonString })
.then((res) => {
if (res && res.data && res.data.ris) {
tools.showPositiveNotif($q, t('mypages.impok'));
return res.data.ris;
} else {
tools.showNegativeNotif($q, t('mypages.imperr'));
return null;
}
})
.catch((error) => {
console.log('error importPage', error);
userStore.setErrorCatch(error);
return null;
});
},
async loadPageTest() {
console.log('loadPageTest');
const obj = { test: 'OK! Versione Client: ' + tools.getvers() };
return Api.SendReq('/testServer', 'POST', obj)
.then((res) => {
return res;
})
.catch((error) => {
return error;
});
},
async loadPageTestLungo(timeout) {
console.log('loadPageTestLungo');
const obj = { test: 'OK! Versione Client: ' + tools.getvers(), timeout };
return Api.SendReq(
'/api/test-lungo',
'POST',
obj,
false,
false,
0,
5000,
null,
null,
{
timeout,
}
)
.then((res) => {
return res;
})
.catch((error) => {
throw error;
});
},
async saveTable(mydata: any) {
// console.log('saveTable', mydata)
const userStore = useUserStore();
return Api.SendReq('/settable', 'POST', mydata)
.then((res) => {
this.serverError = false;
// console.log('res', res)
if (res && res.data) {
tools.updateMyData(res.data.ris);
this.aggiornaRecordInLocaleDopoUpdateSulServer(mydata, res.data);
if (res.data.rec) {
return res.data.rec;
} else {
return res.data;
}
}
})
.catch((error) => {
this.serverError = true;
this.serverMsgError = error;
console.log('error saveTable', error);
userStore.setErrorCatch(error);
return null;
});
},
isErroreDispositivoServer() {
if (this.serverMsgError) {
if (this.serverMsgError.code) return this.serverMsgError.code === -2;
} else {
return false;
}
return false;
},
async saveSubRec(mydata: any) {
// console.log('saveTable', mydata)
const userStore = useUserStore();
return Api.SendReq('/setsubrec', 'POST', mydata)
.then((res) => res.data)
.catch((error) => {
console.log('error saveSubRec', error);
userStore.setErrorCatch(error);
return null;
});
},
async saveNewRecord(mytable: string, myrec: any) {
const userStore = useUserStore();
console.log('saveNewRecord', mytable, myrec);
const mydata: any = {
table: mytable,
data: myrec,
};
mydata.data.userId = userStore.my._id;
const ris = await this.saveTable(mydata);
if (ris) {
this.newValueInMemoryByTable(ris, mytable);
}
console.log('saveNewRecord', ris);
return ris;
},
async saveFieldValue(mydata: IDataToSet) {
// const userStore = useUserStore()
return Api.SendReq('/chval', 'PATCH', { data: mydata })
.then((res) => {
if (res) {
if (mydata.aggiornainmem) this.UpdateValuesInMemory(mydata);
return res.data.code === serv_constants.RIS_CODE_OK;
}
return false;
})
.catch((error) => false);
},
async callFunz({ mydata }: { mydata: any }) {
// console.log('saveFieldValue', mydata)
return Api.SendReq('/callfunz', 'PATCH', { data: mydata })
.then((res) => {
if (res) {
return res.data.code === serv_constants.RIS_CODE_OK;
} else return false;
})
.catch((error) => {
return false;
});
},
async askFunz({ mydata }: { mydata: any }) {
// console.log('saveFieldValue', mydata)
return Api.SendReq('/askfunz', 'PATCH', { data: mydata })
.then((ris) => {
return ris.data.out;
})
.catch((error) => {
return null;
});
},
async DeleteRec({ table, id }: { table: string; id: string }) {
console.log('DeleteRec', table, id);
return Api.SendReq('/delrec/' + table + '/' + id, 'DELETE', null)
.then((res) => {
if (res.status === 200) {
if (res.data.code === serv_constants.RIS_CODE_OK) {
return true;
}
}
return false;
})
.catch((error) => {
console.error(error);
return false;
});
},
async DeleteFile({ filename }: { filename: string }) {
console.log('DeleteFile', filename);
return Api.SendReq(`/delfile/${tools.getvers()}/`, 'DELETE', { filename })
.then((res) => {
if (res.status === 200) {
if (res.data.code === serv_constants.RIS_CODE_OK) {
return true;
}
}
return false;
})
.catch((error) => {
console.error(error);
return false;
});
},
async DuplicateRec({ table, id }: { table: string; id: string }) {
console.log('DuplicateRec', id);
return Api.SendReq('/duprec/' + table + '/' + id, 'POST', null)
.then((res) => {
if (res.status === 200) {
if (res.data.code === serv_constants.RIS_CODE_OK) {
return res.data.record;
}
}
return null;
})
.catch((error) => {
console.error(error);
return null;
});
},
async InviaMsgADonatori({
msgobj,
navemediatore,
tipomsg,
}: {
msgobj: any;
navemediatore: any;
tipomsg: any;
}) {
console.log('InviaMsgADonatori', msgobj);
const mydata = {
idapp: tools.getEnv('VITE_APP_ID'),
msgextra: msgobj.msgextra,
msgpar1: msgobj.msgpar1,
username: msgobj.username,
username_mitt: msgobj.username_mitt,
tipomsg,
inviareale: msgobj.inviareale,
navemediatore,
};
return Api.SendReq('/dashboard/msgnave', 'POST', mydata)
.then((res) => {
if (res.status === 200) {
if (res.data.code === serv_constants.RIS_CODE_OK) {
return res.data.ris;
}
}
return null;
})
.catch((error) => {
console.error(error);
return null;
});
},
async InviaMsgAFlotta({
flotta,
inviareale,
inviaemail,
tipomsg,
}: {
flotta: any;
inviareale: boolean;
inviaemail: boolean;
tipomsg: any;
}) {
console.log('InviaMsgAFlotta');
const mydata = {
idapp: tools.getEnv('VITE_APP_ID'),
tipomsg,
flotta,
inviareale,
inviaemail,
};
return Api.SendReq('/dashboard/msgflotta', 'POST', mydata)
.then((res) => {
if (res.status === 200) {
if (res.data.code === serv_constants.RIS_CODE_OK) {
return res.data.ris;
}
}
return null;
})
.catch((error) => {
console.error(error);
return null;
});
},
async GetArrNavi() {
console.log('GetArrNavi');
const mydata = {
idapp: tools.getEnv('VITE_APP_ID'),
};
return Api.SendReq('/dashboard/getnavi', 'POST', mydata)
.then((res) => {
if (res.status === 200) {
if (res.data.code === serv_constants.RIS_CODE_OK) {
return res.data.ris;
}
}
return null;
})
.catch((error) => {
console.error(error);
return null;
});
},
async GetMsgTemplates() {
console.log('GetMsgTemplates');
const mydata = {
idapp: tools.getEnv('VITE_APP_ID'),
};
return Api.SendReq('/dashboard/getmsg_templates', 'POST', mydata)
.then((res) => {
if (res.status === 200) {
if (res.data.code === serv_constants.RIS_CODE_OK) {
return res.data.ris;
}
}
return null;
})
.catch((error) => {
console.error(error);
return null;
});
},
async GetNave({
riga,
col,
riga1don,
col1don,
ind_order,
}: {
riga: any;
col: any;
riga1don: any;
col1don: any;
ind_order: number;
}) {
// console.log('GetNave')
const mydata = {
idapp: tools.getEnv('VITE_APP_ID'),
riga,
col,
riga1don,
col1don,
ind_order,
};
return Api.SendReq('/dashboard/getnave', 'POST', mydata)
.then((res) => {
if (res.status === 200) {
if (res.data.code === serv_constants.RIS_CODE_OK) {
return res.data.ris;
}
}
return null;
})
.catch((error) => {
console.error(error);
return null;
});
},
async GetData({ data }: { data: any }) {
console.log('GetData');
const mydata = {
idapp: tools.getEnv('VITE_APP_ID'),
data,
};
return Api.SendReq('/dashboard/getdata', 'POST', mydata)
.then((res) => {
if (res.status === 200) {
if (res.data.code === serv_constants.RIS_CODE_OK) {
return res.data.ris;
}
}
return null;
})
.catch((error) => {
console.error(error);
return null;
});
},
async GetArrDoniNavi({
ricalcola,
showall,
}: {
ricalcola: boolean;
showall: boolean;
}) {
console.log('GetArrDoniNavi');
const mydata = {
idapp: tools.getEnv('VITE_APP_ID'),
ricalcola,
showall,
};
return Api.SendReq('/dashboard/getdoninavi', 'POST', mydata)
.then((res) => {
if (res.status === 200) {
if (res.data.code === serv_constants.RIS_CODE_OK) {
return res.data.ris;
}
}
return null;
})
.catch((error) => {
console.error(error);
return null;
});
},
async GetFlotte({ ricalcola, showall }: { ricalcola: boolean; showall: boolean }) {
console.log('GetFlotte');
const mydata = {
idapp: tools.getEnv('VITE_APP_ID'),
ricalcola,
showall,
};
return Api.SendReq('/dashboard/getflotte', 'POST', mydata)
.then((res) => {
if (res.status === 200) {
if (res.data.code === serv_constants.RIS_CODE_OK) {
return res.data.arrflotte;
}
}
return null;
})
.catch((error) => {
console.error(error);
return null;
});
},
async GetFlotta({
riga,
col_prima,
col_ultima,
}: {
riga: any;
col_prima: any;
col_ultima: any;
}) {
console.log('GetFlotta');
const mydata = {
idapp: tools.getEnv('VITE_APP_ID'),
riga,
col_prima,
col_ultima,
};
return Api.SendReq('/dashboard/getflotta', 'POST', mydata)
.then((res) => {
if (res.status === 200) {
if (res.data.code === serv_constants.RIS_CODE_OK) {
return res.data;
}
}
return null;
})
.catch((error) => {
console.error(error);
return null;
});
},
async loadTest(ind: number, numval: number) {
const restest = await Api.SendReq(
`/testpao/?numval=${numval}&ind=${ind}`,
'GET',
null
);
return restest;
},
async loadSite() {
const userStore = useUserStore();
const calendarStore = useCalendarStore();
const circuitStore = useCircuitStore();
const Products = useProducts();
const catalogStore = useCatalogStore();
let status = 0;
// console.log('calendarStore: loadAfterLogin')
// Load local data
const showall = userStore.isAdmin || userStore.isManager ? '1' : '0';
const myuserid = userStore.my._id ? userStore.my._id : '0';
// calendarStore.editable = false
try {
const res = await Api.SendReq(
`/loadsite/${myuserid}/${tools.getEnv('VITE_APP_ID')}/${import.meta.env.VITE_APP_VERSION}`,
'GET',
null
);
status = res.status;
if (res.status === 200) {
console.log('____________________________ res', res);
this.serverError = false;
if (res.status === 200) {
calendarStore.bookedevent = res.data.bookedevent ? res.data.bookedevent : [];
calendarStore.eventlist = res.data.eventlist ? res.data.eventlist : [];
calendarStore.operators = res.data.operators ? res.data.operators : [];
calendarStore.internalpages = res.data.internalpages
? res.data.internalpages
: [];
calendarStore.wheres = res.data.wheres ? res.data.wheres : [];
calendarStore.contribtype = res.data.contribtype ? res.data.contribtype : [];
circuitStore.listcircuits = res.data.listcircuits
? res.data.listcircuits
: [];
circuitStore.listaccounts = res.data.listaccounts
? res.data.listaccounts
: [];
catalogStore.catalogs = res.data.catalogs;
catalogStore.raccoltacataloghis = res.data.raccoltacataloghis;
this.settings = res.data.settings ? [...res.data.settings] : [];
this.disciplines = res.data.disciplines ? [...res.data.disciplines] : [];
this.paymenttypes = res.data.paymenttypes ? [...res.data.paymenttypes] : [];
this.gallery = res.data.gallery ? [...res.data.gallery] : [];
this.calzoom = res.data.calzoom ? [...res.data.calzoom] : [];
Products.products = res.data.products ? [...res.data.products] : [];
Products.productInfos = res.data.productInfos
? [...res.data.productInfos]
: [];
this.producers = res.data.producers ? [...res.data.producers] : [];
this.storehouses = res.data.storehouses ? [...res.data.storehouses] : [];
this.providers = res.data.providers ? [...res.data.providers] : [];
Products.catprods = res.data.catprods ? [...res.data.catprods] : [];
Products.catprtotali = res.data.catprtotali ? [...res.data.catprtotali] : [];
Products.collane = res.data.collane ? [...res.data.collane] : [];
Products.subcatprods = res.data.subcatprods ? [...res.data.subcatprods] : [];
Products.stati_prodotto = res.data.stati_prodotto
? [...res.data.stati_prodotto]
: [];
Products.tipologie = res.data.tipologie ? [...res.data.tipologie] : [];
Products.tipoformato = res.data.tipoformato ? [...res.data.tipoformato] : [];
Products.catprods_gas = res.data.catprods_gas
? [...res.data.catprods_gas]
: [];
Products.authors = res.data.authors ? [...res.data.authors] : [];
Products.publishers = res.data.publishers ? [...res.data.publishers] : [];
Products.publishers_sort_qty = [...res.data.publishers];
Products.publishers_sort_qty.sort((a, b) => b.quanti - a.quanti);
// console.table(Products.publishers)
// console.table(Products.publishers_sort_qty)
this.gasordines = res.data.gasordines ? [...res.data.gasordines] : [];
this.scontisticas = res.data.scontisticas ? [...res.data.scontisticas] : [];
this.groups = res.data.groups ? [...res.data.groups] : [];
this.resps = res.data.resps ? [...res.data.resps] : [];
this.workers = res.data.workers ? [...res.data.workers] : [];
this.departments = res.data.departments ? [...res.data.departments] : [];
this.categories = res.data.categories ? [...res.data.categories] : [];
this.levels = res.data.levels ? [...res.data.levels] : [];
this.skills = res.data.skills ? [...res.data.skills] : [];
this.goods = res.data.goods ? [...res.data.goods] : [];
// this.subSkills = (res.data.subSkills) ? [...res.data.subSkills] : []
this.statusSkills = res.data.statusSkills ? [...res.data.statusSkills] : [];
this.sectors = res.data.sectors ? [...res.data.sectors] : [];
this.sectorgoods = res.data.sectorgoods ? [...res.data.sectorgoods] : [];
this.provinces = res.data.provinces ? [...res.data.provinces] : [];
this.catgrps = res.data.catgrps ? [...res.data.catgrps] : [];
this.catAI = res.data.catAI ? [...res.data.catAI] : [];
if (res.data.queryAIList) this.queryAIList = res.data.queryAIList;
this.site = res.data.site ? res.data.site : {};
this.mygroups = res.data.mygroups ? [...res.data.mygroups] : [];
this.adtypes = res.data.adtypes ? [...res.data.adtypes] : [];
this.adtypegoods = res.data.adtypegoods ? [...res.data.adtypegoods] : [];
// console.log('res.data.cart', res.data.cart)
if (res.data.cart) Products.cart = res.data.cart ? { ...res.data.cart } : {};
else
Products.cart = {
items: [],
totalPrice: 0,
totalQty: 0,
userId: '',
};
Products.orders = res.data.orders ? [...res.data.orders] : [];
if (showall) {
this.newstosent = res.data.newstosent ? [...res.data.newstosent] : [];
this.mailinglist = res.data.mailinglist ? [...res.data.mailinglist] : [];
}
this.mypage = res.data.mypage ? [...res.data.mypage] : [];
for (const page of this.mypage) {
if (page.loadFirst) page.loaded = true;
}
this.myelems = res.data.myelems ? [...res.data.myelems] : [];
this.lista_cron = res.data.crons ? [...res.data.crons] : [];
this.myschedas = [];
this.myschedas = res.data.myschedas ? [...res.data.myschedas] : [];
// console.log('this.mypage', this.mypage)
let isLogged = false;
// console.log('res.data.myuser', res.data.myuser)
if (res.data.myuser) {
userStore.authUser(res.data.myuser);
userStore.updateLocalStorage(res.data.myuser);
isLogged = !!res.data.myuser.username;
} else {
// User not exist !!
}
Products.init();
// const isLogged = localStorage.getItem(toolsext.localStorage.username)
// console.log('isLogged', isLogged)
let myidapp = '';
try {
if (res.data?.myuser) {
myidapp = res.data?.myuser?.idapp;
}
} catch (e) {}
// calendarStore.editable = userStore.isAdmin || userStore.isManager || userStore.isFacilitatore
if (!myidapp || myidapp !== tools.getEnv('VITE_APP_ID')) {
if (isLogged) {
// Fai Logout
// console.log('Fai Logout', 'isLogged', isLogged)
userStore.logout();
this.rightDrawerOpen = true;
return false;
} else {
console.log('NON SONO LOGGATO... MYUSER NON TORNATO dal SRV');
const token = localStorage.getItem(toolsext.localStorage.token);
if (token) {
console.log('Sbianca cmq i dati');
// Sbianca cmq i dati
userStore.logout();
this.rightDrawerOpen = true;
return false;
}
}
}
}
return { ris: true, status };
} else {
}
} catch (error) {
status = error.status;
if (error.status === toolsext.ERR_RETRY_LOGIN) {
} else {
if (
error.status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_TOKEN_EXPIRED ||
error.status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN
) {
} else {
this.serverError = true;
}
}
console.log('error dbLoad', error);
// userStore.setErrorCatch(error)
this.serverMsgError = error;
//return new Types.AxiosError(serv_constants.RIS_CODE_ERR, null, toolsext.ERR_GENERICO, error)
return { ris: false, status };
}
return { ris: false, status };
},
getProvinceByProv(provstr: string) {
const recprov = this.provinces.find((rec: any) => rec.prov === provstr);
return recprov ? recprov.descr : '';
},
getArrCardByProv(provstr: string): string[] {
const recprov = this.provinces.filter((rec: any) => rec.prov === provstr);
const cardArray: string[] = recprov.map((prov: IProvince) => prov.card);
return cardArray;
},
async sendEmailTest({ previewonly }: { previewonly: any }) {
const usertosend = {
locale: tools.getLocale(),
previewonly,
};
console.log(usertosend);
return Api.SendReq('/news/testemail', 'POST', usertosend).then((res) => {
return res;
});
},
async addNewCatalog(newCatalog: INewCatalog, router: Router): Promise<any> {
const catalogStore = useCatalogStore();
return Api.SendReq('/catalogs/addnew', 'POST', { newCatalog })
.then((res: any) => {
let newPage: any = null;
let newCatalog: any = null;
let newElems: any = null;
// console.table(res)
if (res.data) {
newPage = res.data.data.newPage;
newElems = res.data.data.newElems;
newCatalog = res.data.data.newCatalog;
// aggiorna i dati su mypage e Catalog in memoria
if (newPage) {
const index = this.mypage.findIndex(
(rec: IMyPage) => rec._id === newPage._id
);
if (index >= 0) {
this.mypage[index] = newPage;
} else {
this.mypage.push(newPage);
}
}
if (newCatalog) {
const index = catalogStore.catalogs.findIndex(
(rec: ICatalog) => rec._id === newCatalog._id
);
if (index >= 0) {
catalogStore.catalogs[index] = newCatalog;
} else {
catalogStore.catalogs.push(newCatalog);
}
}
if (newElems && Array.isArray(newElems)) {
newElems.forEach((newElem) => {
const index = this.myelems.findIndex(
(rec: IMyElem) => rec._id === newElem._id
);
if (index >= 0) {
this.myelems[index] = newElem;
} else {
this.myelems.push(newElem);
}
});
}
this.aggiornaMenu(router);
}
return { page: newPage, catalog: newCatalog };
})
.catch((error: any) => {
console.log('error addNewCatalog', error);
return { page: null, catalog: null };
});
},
getArrStrByValueBinary(col: IColGridTable, val: any) {
const arr = this.getArrByValueBinary(null, col, val);
if (arr.length > 0) return arr.join(' - ');
return '[---]';
},
getArrByValueBinary(mythis: any, col: IColGridTable, val: any) {
if (col.jointable) {
const mylist = this.getTableJoinByName(col.jointable);
const key = fieldsTable.getKeyByTable(col.jointable);
const myres: any = [];
mylist.forEach((myrec: any) => {
if (tools.isBitActive(val, myrec[key])) myres.push(mythis.t(myrec.label));
});
return myres;
}
return [];
},
getRecordByTableSingle(table: string, val: any) {
if (table) {
const mylist = this.getTableJoinByName(table);
const key = fieldsTable.getKeyByTable(table);
return mylist.find((myrec: any) => myrec[key] === val);
}
},
getValueByTableSingle(table: string, val: any, lab?: any) {
if (table) {
const mylist = this.getTableJoinByName(table);
const key = fieldsTable.getKeyByTable(table);
let collab = lab;
if (!lab) collab = fieldsTable.getLabelByTable(table);
// console.table(mylist)
let risultato = '';
if (tools.isObject(collab)) {
risultato = mylist.filter((myrec: any) => myrec.username === val).map(collab);
} else {
const myris = mylist.find((myrec: any) => myrec[key] === val);
if (myris) risultato = myris[collab];
}
if (key === 'username') {
// console.log('key=', key, 'collab', collab, 'val', val)
// console.log('myris', risultato)
}
return risultato;
}
return '';
},
getValueByTable(col: IColGridTable, val: any) {
return this.getValueByTableSingle(col.jointable!, val);
},
getMultiValueByTable(col: IColGridTable, arrval: any) {
// console.log('getMultiValueByTable')
if (col.jointable) {
const mylist = this.getTableJoinByName(col.jointable);
const key = fieldsTable.getKeyByTable(col.jointable);
const collab = fieldsTable.getLabelByTable(col.jointable);
// console.table(mylist)
// console.log('key=', key, 'collab', collab, 'val', collab)
const myris = mylist.filter((myrec: any) => arrval.includes(myrec[key]));
// console.log('myris', myris)
if (myris) {
console.log('collab', collab);
if (tools.isObject(collab)) return myris.map(collab);
return myris.map((rec: any) => rec[collab]);
}
return '';
}
return '';
},
async getStatSite() {
const userStore = useUserStore();
const paramquery = {
locale: tools.getLocale(),
username: userStore.my.username,
};
return Api.SendReq('/site/load', 'POST', paramquery)
.then((res) => {
// console.log('datastat', res)
this.datastat = res.data.datastat;
return this.datastat;
})
.catch((error) => {
return {};
});
},
async getQueryAI() {
const userStore = useUserStore();
const paramquery = {
locale: tools.getLocale(),
username: userStore.my.username,
};
return Api.SendReq('/aitools/getlist', 'POST', paramquery)
.then((res) => {
// console.log('queryAIList', res)
this.queryAIList = res.data.queryAIList;
return this.queryAIList;
})
.catch((error) => {
return {};
});
},
async getQueryDS(prompt: string, options: any) {
const userStore = useUserStore();
const paramquery = {
locale: tools.getLocale(),
username: userStore.my.username,
prompt,
options,
};
return Api.SendReq(
'/aitools/ds',
'POST',
paramquery,
false,
true,
1,
5000,
null,
null,
options
)
.then((res) => {
return res.data;
})
.catch((error) => {
return {};
});
},
getItemDate(num: number, day: number, numdays: number, mystr: string) {
let mydate = tools.addDays(tools.getDateNow(), day);
let mydateend = tools.addDays(mydate, numdays);
mydate = tools.getstrYYMMDDDate(mydate);
mydateend = tools.getstrYYMMDDDate(mydateend);
const filter = { dateTimeStart: { $gte: mydate, $lte: mydateend } };
const obj = { _id: num, datestr: mystr, filter };
return obj;
},
getArrDateEvent() {
const arr = [];
const obj = {};
arr.push(this.getItemDate(1, -30, 30, 'Eventi Passati'));
arr.push(this.getItemDate(2, 0, 365, 'Prossimi Eventi'));
// arr.push(this.getItemDate(2, 0, 14, 'Da Oggi a 2 sett.'))
/// arr.push(this.getItemDate(3, 14, 60, 'Eventi Futuri'))
// console.log('Days', arr)
return arr;
},
getArrAllDateEvent() {
const arr = [];
let obj = {};
for (let i = 0; i < 120; i++) {
const mydate = tools.addDays(tools.getDateNow(), i - 30);
obj = { _id: mydate, datestr: tools.getstrVeryShortDate(mydate) };
arr.push(obj);
}
// console.log('Days', arr)
return arr;
},
getTableJoinByName(
table: string,
addall?: boolean,
addnone?: boolean,
filter?: any,
value2?: any
) {
let myarr: any = [];
if (table === 'permissions')
myarr = [
shared_consts.Permissions.Admin,
shared_consts.Permissions.Manager,
shared_consts.Permissions.Teacher,
shared_consts.Permissions.Facilitatore,
shared_consts.Permissions.Editor,
shared_consts.Permissions.Commerciale,
shared_consts.Permissions.Zoomeri,
shared_consts.Permissions.Department,
shared_consts.Permissions.Grafico,
];
else if (table === 'accepted')
myarr = [
shared_consts.Accepted.CHECK_READ_GUIDELINES,
shared_consts.Accepted.CHECK_SEE_VIDEO_PRINCIPI,
];
else if (table === 'fieldstype') myarr = costanti.FieldTypeArr;
else if (table === 'metodo_pagamento') myarr = tools.SelectMetodiPagamento;
else if (table === 'confsite_opt') myarr = tools.ConfSiteOpt;
else if (table === 'confpages_lang') myarr = costanti.ArrLang;
else if (table === 'bottype') myarr = shared_consts.BotType;
else if (table === 'visibility') myarr = shared_consts.Visibility;
else if (table === 'cat_interesse_arcadei')
myarr = shared_consts.Cat_Interesse_Arcadei;
else if (table === 'pub_to_share') myarr = shared_consts.Pub_to_Share;
else if (table === 'visibilGroup') myarr = shared_consts.VisibilGroup;
else if (table === 'statuscircuit') myarr = shared_consts.StatusCircuit;
else if (table === 'elemtypes') myarr = shared_consts.TypesElem;
else if (table === 'fonts_installed') myarr = shared_consts.FontsInstalled;
else if (table === 'lang') myarr = shared_consts.Lang;
else if (table === 'regions') myarr = shared_consts.Regions;
else if (table === 'shippings') myarr = shared_consts.Shippings;
else if (table === 'otherfilters') myarr = shared_consts.OtherFilters;
else if (table === toolsext.TABCALDATE) myarr = this.getArrDateEvent();
else if (table === toolsext.TABCALALLDATE) myarr = this.getArrAllDateEvent();
else if (table === toolsext.TABTYPEHOSP) myarr = shared_consts.TypeHosps;
else if (table === 'tipodest') myarr = shared_consts.DESTNEWSLETTER_ARRAY;
else if (table === 'versions') myarr = shared_consts.VERSIONI_PRODOTTO;
else if (table === toolsext.TABPEOPLE) myarr = shared_consts.People;
else if (table === toolsext.TABTYPEACCOM) myarr = shared_consts.TypeAccom;
else if (table === toolsext.TABLOCACCOM) myarr = shared_consts.LocationAccom;
else if (table === toolsext.TABPREF) myarr = shared_consts.Preferences;
else if (table === toolsext.TABUNITS)
myarr = shared_consts.Units_Of_Measure_ListBox;
else if (table === toolsext.TABTYPECASH) myarr = shared_consts.TypeCashStr;
else if (table === 'usernotifs') myarr = shared_consts.UsersNotif_Adv_List;
else if (table === 'typenotifs') myarr = shared_consts.TypeNotifs_Arr;
else if (table === toolsext.TABTIPODIATTIVITA) myarr = shared_consts.TipoDiAttivita;
else myarr = this.getListByTable(table, value2);
if (costanti.TABLES_ARRAY.includes(table)) {
const newarr = [];
for (const value of myarr) {
let label = value;
let valout = value;
// if (table === 'mygroups') {
// label = value.descr
// valout = value.groupname
if (table === 'circuits') {
label = value.name;
}
// console.log('value', value, 'label', label)
newarr.push({ value: valout, label, name: label });
}
myarr = newarr;
}
/* if (addall) {
//myarr = [costanti.FILTER_TUTTI, ...myarr]
const mykey = fieldsTable.getKeyByTable(table)
const collab = fieldsTable.getLabelByTable(table)
let obj: any = {}
obj[mykey] = costanti.FILTER_TUTTI
obj[collab] = costanti.FILTER_TUTTI_STR
myarr = [obj, ...myarr]
}*/
if (addnone) {
const mykey = fieldsTable.getKeyByTable(table);
const collab = fieldsTable.getLabelByTable(table);
let obj: any = {};
obj[mykey] = costanti.FILTER_NESSUNO;
obj[collab] = '[Nessuno]';
if (table === shared_consts.TABLES_MYGOODS) {
obj.idSectorGood = [];
} else if (table === shared_consts.TABLES_MYSKILLS) {
obj.idSector = [];
}
if (table === 'cards') {
obj = { card: '', label: '[Nessuna]' };
}
myarr = [obj, ...myarr];
}
if (filter) {
// console.log('table', table, 'filter', filter, 'arrprima', myarr)
myarr = myarr.filter(filter);
// console.log('myarr', myarr)
}
return myarr;
},
getMsgServerError() {
if (this.serverError) {
if (this.serverMsgError) {
if (this.serverMsgError.status === 500) {
return 'Errore Interno del Server';
} else if (this.serverMsgError.msgerr === '') {
return 'Codice Errore ' + this.serverMsgError.status;
}
try {
return this.serverMsgError.msgerr.message;
} catch (e) {
return this.serverMsgError.msgerr;
}
}
}
return '';
},
getTableJoinLabelValueByName(col: IColGridTable) {
let myarrrec: any = [];
if (col.jointable) {
let myarrtab = this.getTableJoinByName(
col.jointable,
col.addall,
col.addnone,
col.filter
);
const key = fieldsTable.getKeyByTable(col.jointable);
const collab = fieldsTable.getLabelByTable(col.jointable);
for (let index = 0; index < myarrtab.length; index++) {
let obj = { label: '', value: 0 };
obj.label = myarrtab[index][collab];
obj.value = myarrtab[index][key];
myarrrec.push(obj);
}
}
return myarrrec;
},
getServerHost() {
try {
let myserv = import.meta.env.VITE_MONGODB_HOST!;
if (!import.meta.env.VITE_DEBUG) {
if (tools.isTest()) {
if (this.site && this.site.host_testapi) {
myserv = this.site.host_testapi;
// console.log('getServerHost TEST API', myserv)
}
} else {
if (this.site && this.site.host_api) {
myserv = this.site.host_api;
// console.log('getServerHost API', myserv)
}
}
}
// console.log('getServerHost', myserv);
return myserv;
} catch (e) {
return import.meta.env.VITE_MONGODB_HOST;
}
},
async delMyElem($q: any, t: any, myelem: IMyElem) {
if (!myelem._id) return false;
return await this.DeleteRec({ table: 'myelems', id: myelem._id }).then(
async (ris) => {
if (ris) {
this.myelems = this.myelems.filter((rec) => rec._id !== myelem._id);
// Aggiorna anche tutto il sito...
// await this.loadSite()
tools.showPositiveNotif($q, t('db.deletedrecord'));
return true;
} else {
tools.showNegativeNotif($q, t('db.recdelfailed'));
return false;
}
}
);
},
async saveMyElem($q: any, t: any, myelem: IMyElem) {
const mydata = {
table: 'myelems',
data: {},
};
console.log(' DA SALVARE', myelem);
mydata.data = myelem;
return await this.saveTable(mydata)
.then(async (newelem) => {
if (newelem) {
console.log('*** newelem', newelem);
// Save in Memory
for (let i = 0; i < this.myelems.length; i++) {
if (this.myelems[i]._id === newelem._id) {
this.myelems[i] = newelem;
console.log('SALVATO', this.myelems[i]);
break;
}
}
// Aggiorna anche tutto il sito...
// await this.loadSite()
tools.showPositiveNotif($q, t('db.recupdated'));
} else {
tools.showNegativeNotif($q, t('db.recfailed'));
}
return newelem;
})
.catch((e) => {
tools.showNegativeNotif($q, t('db.recfailed'));
return false;
});
},
async addNewElem($q: any, t: any, myelem: IMyElem) {
const newelem = await this.saveMyElem($q, t, myelem);
if (newelem) {
this.myelems.push(newelem);
}
return newelem;
},
changeVisuDrawer(path: string, edit: boolean) {
const userStore = useUserStore();
if (userStore.isManager) tools.setCookie('EDITPAGES', edit ? '-1' : '0');
},
getGeoJsonByProvince(prov: string) {
const usertosend = {
prov,
};
// console.log(usertosend)
return Api.SendReq('/city/geojson', 'POST', usertosend).then((res) => {
return res.data ? res.data.ris : [];
});
},
createCatalogoVuoto(): IOptCatalogo {
return {
idCatalogSel: '',
productTypes: [0],
excludeproductTypes: [],
idTipologie: [],
formato: [],
Categoria: [],
editore: [],
pdf: false,
dimensioni_def: {
isTemplate: false,
linkIdTemplate: '',
name: '',
pagina: tools.resetRecIDimensioni(null),
},
areadistampa: tools.resetRecIAreaDiStampa(null),
print_isTemplate: false,
print_linkIdTemplate: '',
};
},
createRaccoltaCataloghiVuoto(): IOptCatalogo {
return {
productTypes: [0],
excludeproductTypes: [],
idTipologie: [],
formato: [],
Categoria: [],
editore: [],
pdf: false,
dimensioni_def: {
isTemplate: false,
linkIdTemplate: '',
name: '',
pagina: tools.resetRecIDimensioni(null),
},
areadistampa: tools.resetRecIAreaDiStampa(null),
print_isTemplate: false,
print_linkIdTemplate: '',
};
},
async prepareAddNewElem(order: any, $q: any, t: any, myelem: any, newtype: any) {
const newrec: IMyElem = {
_id: undefined,
type: newtype,
path: myelem.path,
idPage: myelem.idPage,
order: order ? order : 1000,
active: true,
container: '',
};
if (newrec.type === shared_consts.ELEMTYPE.CAROUSEL_IMGS) {
newrec.container2 = '8';
newrec.height = 600;
} else if (newrec.type === shared_consts.ELEMTYPE.CARD) {
newrec.class2 = 'row justify-center';
} else if (newrec.type === shared_consts.ELEMTYPE.SEARCHPRODUCT) {
newrec.catalogo = this.createCatalogoVuoto();
} else if (newrec.type === shared_consts.ELEMTYPE.CATALOGO) {
newrec.catalogo = this.createCatalogoVuoto();
} else if (newrec.type === shared_consts.ELEMTYPE.RACCOLTA) {
newrec.catalogo = this.createRaccoltaCataloghiVuoto();
}
const mynewrec = await this.addNewElem($q, t, newrec);
return mynewrec;
},
getIconBySector(sectorId: string) {
const myrec = this.sectors.find((rec: any) => rec._id === sectorId);
if (myrec && myrec.icon) {
return myrec.icon;
} else {
return 'fas fa-home';
}
},
async execScript(paramquery: any) {
return Api.SendReq('/admin/exec', 'POST', paramquery)
.then((res) => {
return res.data;
})
.catch((error) => {
return false;
});
},
async execConvertPDF(paramquery: any, blob = false) {
// console.log('paramquery', paramquery)
let responseopt = {};
if (blob) {
responseopt.responseType = 'blob';
}
return Api.SendReq(
'/admin/convert-pdf',
'postFormData',
{},
false,
false,
1,
5000,
paramquery,
responseopt
)
.then((res) => {
return res.data;
})
.catch((error) => {
return false;
});
},
async execJoinPDF(paramquery: any) {
return Api.SendReq('/admin/join-pdf', 'POST', paramquery)
.then((res) => {
return res.data;
})
.catch((error) => {
return false;
});
},
async execOnlinePDF(paramquery: any) {
return Api.SendReq('/admin/online-pdf', 'POST', paramquery)
.then((res) => {
return res.data;
})
.catch((error) => {
return false;
});
},
async convertPdf(
pdfFile: any,
salvasufiledascaricare,
width: string,
height: string,
compressione: string,
stampa: boolean,
dir_out: string = '',
file_out: string = '',
print: boolean = false,
optcatalogo: IOptCatalogo | null = null
) {
try {
if (!pdfFile) {
console.error('No PDF file selected');
return;
}
const filenameToDownload =
tools.removeFileExtension(pdfFile.name) + '-compresso.pdf';
const formData = new FormData();
if (pdfFile instanceof File) {
formData.append('pdf', pdfFile);
}
formData.append('width', width); // Dimensione del PDF in cm
formData.append('height', height); // Dimensione del PDF in cm
formData.append('compressione', compressione);
formData.append('dir_out', dir_out);
formData.append('stampa', stampa ? '1' : '0');
formData.append('file_out', file_out);
formData.append('idapp', tools.getEnv('VITE_APP_ID'));
if (print && optcatalogo) {
formData.append('print_left', optcatalogo.areadistampa.margini.left); // 15, 0.59"
formData.append('print_top', optcatalogo.areadistampa.margini.top);
formData.append('print_right', optcatalogo.areadistampa.margini.right);
formData.append('print_bottom', optcatalogo.areadistampa.margini.bottom); // 7 mm 0,275"
}
formData.append(
'salvasufiledascaricare',
salvasufiledascaricare ? 'true' : 'false'
);
console.log('2) Invia le immagini al convertitore/compressione di PDF...');
const response = await this.execConvertPDF(formData, salvasufiledascaricare);
if (response) {
if (salvasufiledascaricare) {
const blob = new Blob([response], { type: 'application/pdf' });
const downloadUrl = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = downloadUrl;
link.setAttribute('download', filenameToDownload);
document.body.appendChild(link);
link.click();
link.remove();
window.URL.revokeObjectURL(downloadUrl);
} else {
return response;
}
console.log('3) Generazione PDF completata !', response);
} else {
console.error('No data returned from the server.');
}
} catch (error) {
console.error('Error converting PDF:', error);
}
},
async saveServerMysql(paramquery: any) {
return Api.SendReq('/admin/mysql', 'POST', paramquery)
.then((res) => {
return res.data;
})
.catch((error) => {
return false;
});
},
async scrapingBook(paramquery: any) {
return Api.SendReq('/admin/scraper', 'POST', paramquery)
.then(async (res) => {
if (res.data.data) {
await this.updateTablesInMemory(res.data.data);
}
return res.data;
})
.catch((error) => {
return false;
});
},
async getCloudFlareTok(
cmd: string,
tok: string,
zoneId: string,
dnsRecordId: any = null,
record: any = undefined
) {
const mydata = {
cmd,
tokcheck: 'php8.1_version_762321HSD121nJDokq@?!aFS.tar.gz',
tok,
zoneId,
dnsRecordId,
record,
};
return Api.SendReq('/admin/cloudflare', 'POST', mydata)
.then((res) => {
return res.data;
})
.catch((error) => {
return false;
});
},
async getGM_Tabella(options: IOptQueryGM) {
const arrrec = await this.fetchTableContent(options);
return arrrec;
},
async getGM_Lista_Argomenti(outhtml: boolean) {
const arrrec = await this.fetchTableContent({
nameTable: 'T_Web_Argomenti',
numrec: 200,
outhtml,
});
return arrrec;
},
async getGM_FieldOf_T_Web_Articoli(sku: string, field: string, cmd: number) {
const options: IOptQueryGM = {
nameTable: 'T_Web_Articoli',
campispeciali: !field,
numrec: 1,
query: '',
where:
'T.IdArticolo =' +
sku +
' AND T.DataPubblicazione IS NOT NULL ORDER BY T.DataOra DESC;',
fieldGM: field,
showQtaDisponibile: false,
outhtml: false,
cmd,
};
const valueris = await this.fetchTableContent(options);
if (valueris && valueris[field]) {
console.log('valueris', valueris);
return valueris[field];
}
return null;
},
async updateLocalDbFromGM_T_Web_Articoli(sku: string, isbn: string) {
const options: IOptQueryGM = {
nameTable: 'T_Web_Articoli',
query: '',
where: 'T.IdArticolo =' + sku + " AND T.Ean13 = '" + isbn + "'",
showQtaDisponibile: false,
outhtml: false,
cmd: shared_consts.CmdQueryMs.UPDATE,
updatelocaldb: true,
};
const valueris = await this.fetchTableContent(options);
return !!valueris;
},
async updateAllBookFromGM_T_Web_Articoli(options: any) {
const valueris = await this.updateAllBookTableContent(options);
return valueris;
},
async setGM_FieldOf_T_Web_Articoli(
sku: string,
data: Record<string, any>,
cmd: number
) {
try {
// Verifica se i campi specificati sono validi
if (!data || Object.keys(data).length === 0) {
throw new Error('I campi specificati non sono validi.');
}
// Costruisce le opzioni per l'aggiornamento
const options: IOptQueryGM = {
nameTable: 'T_Web_Articoli',
insertMode: false, // Impostiamo su false per eseguire un UPDATE (modifica)
data, // Dati da aggiornare
where: `IdArticolo = ${sku}`, // Condizione WHERE basata sullo SKU
cmd,
};
// Eseguiamo l'operazione di salvataggio
const result = await this.saveTableContent(options);
// Restituiamo il risultato dell'operazione
return result;
} catch (error) {
console.error("Errore durante l'aggiornamento dei campi:", error.message);
throw new Error(
`Errore durante l'aggiornamento dei campi per lo SKU ${sku}: ${error.message}`
);
}
},
async fetchTableContent(options: IOptQueryGM) {
try {
// aggiungi idapp ad options
options.idapp = tools.getEnv('VITE_APP_ID');
console.log('CHIAMATA fetchTableContent...', options);
return Api.SendReq('/apisqlsrv/view-table', 'POST', { options })
.then((res) => {
return res.data.data;
})
.catch((error: any) => {
console.error('Error fetchTableContent: ', error);
});
} catch (error) {
console.error('Errore nel recupero della tabella:', error);
}
},
async updateTablesInMemory(data: any) {
const table = data.table;
const id = data.idRecUpdated;
if (!id) return;
const productStore = useProducts();
try {
if (table === 'products') {
await productStore.loadProductById(id, true);
} else if (table === 'productinfos') {
}
} catch (error) {
console.error("Errore durante l'aggiornamento della tabella in memoria:", error);
}
},
async updateAllBookTableContent(options: any) {
try {
// aggiungi idapp ad options
options.idapp = tools.getEnv('VITE_APP_ID');
return await Api.SendReq('/apisqlsrv/updateAllBook', 'POST', {
options,
})
.then(async (res) => {
if (res?.data?.data?.logerror) {
return { error: 'Errore ' + res?.data?.data?.logerror };
}
await this.updateTablesInMemory(res.data.data);
return res.data.data;
})
.catch((error: any) => {
console.error('Error fetchTableContent: ', error);
return { error: 'Errore ' + error };
});
} catch (error) {
console.error('Errore nel recupero della tabella:', error);
throw error;
}
},
async saveTableContent(options: IOptQueryGM) {
try {
return Api.SendReq('/apisqlsrv/save-table', 'POST', { options })
.then((res) => {
return res.data.data;
})
.catch((error: any) => {
console.error('Error saveTableContent: ', error);
});
} catch (error) {
console.error('Errore nel salvataggio della tabella:', error);
throw error;
}
},
async getMailInABox(cmd: string, record: any = undefined) {
const mydata = {
cmd,
tokcheck: 'php8.1_version_762321HSD121nJDokq@?!aFS.tar.gz',
record,
};
return Api.SendReq('/admin/miab', 'POST', mydata)
.then((res) => {
return res.data;
})
.catch((error) => {
return false;
});
},
async loadLastMovements(nummov: number) {
return Api.SendReq('/users/lastmovs', 'POST', { nummov })
.then((res) => {
if (res.data && res.data.last_transactions && this.datastat) {
this.datastat.last_transactions = res.data.last_transactions;
}
})
.catch((error) => {
return {};
});
},
aggiornaRecordInLocaleDopoUpdateSulServer(datain: any, resdata: any) {
try {
if (datain.table) {
const mytablerec = this.getListByTable(datain.table);
if (mytablerec && resdata && resdata.rec) {
// Trova l'indice del record da aggiornare
const index = mytablerec.findIndex(
(item: any) => item._id === resdata.rec._id
);
if (index !== -1 && index !== undefined) {
// Aggiorna il record mantenendo reattività
if (datain.table === 'catalogs') {
// salva lista_prodotti
const prec_lista_prodotti = mytablerec![index].lista_prodotti;
mytablerec![index] = { ...mytablerec[index], ...resdata.rec };
mytablerec![index].lista_prodotti = prec_lista_prodotti;
} else if (datain.table === 'raccoltacataloghis') {
// salva lista_cataloghi
const prec_lista_cataloghi = mytablerec![index].lista_cataloghi;
mytablerec![index] = { ...mytablerec[index], ...resdata.rec };
mytablerec![index].lista_cataloghi = prec_lista_cataloghi;
} else {
mytablerec![index] = { ...mytablerec[index], ...resdata.rec };
console.log('Aggiorna il record mantenendo reattività');
}
}
}
}
} catch (e) {}
},
setshowHeader(value: boolean) {
this.showHeader = value;
},
},
});