Files
myprojplanet_vite/src/store/UserStore.ts
Surya Paolo 9faaa1a4c3 - aggiornato la guida per installare la App
- aggiornato la Guida Completa e Breve di RISO.
- pagina per ricevere i RIS.
- sistemato problema creazione nuovi Circuiti (admin non corretti).
- corretto giro delle email, invitante, invitato e ricezione msg su telegram.
2025-11-23 01:13:27 +01:00

2611 lines
74 KiB
TypeScript
Executable File

import { defineStore } from 'pinia';
import type {
ICircuit,
IMyCircuit,
IMsgGlobParam,
ISigninOptions,
ISignupOptions,
IUserFields,
IUserNotifType,
IUserProfile,
IUserState,
IAccount,
IColGridTable,
ISignupIscrizioneConacreisOptions,
IMovQuery,
IGroup,
} from '@src/model';
import { IFriends, ISettings } from '@src/model';
import { tools } from '@tools';
import translate from '@src/globalroutines/util';
import type { ILinkReg, IToken } from '@model/other';
import { ICallResult, IResult } from '@model/other';
import objectId from '@src/js/objectId';
import type * as Types from '@src/store/Api/ApiTypes';
import { useGlobalStore } from '@store/globalStore';
import { serv_constants } from '@store/Modules/serv_constants';
import { Api } from '@api';
import { toolsext } from '@store/Modules/toolsext';
import { static_data } from '@src/db/static_data';
import bcrypt from 'bcryptjs';
import { useTodoStore } from '@store/Todos';
import type { Router } from 'vue-router';
import { useProjectStore } from '@store/Projects';
import { shared_consts } from '@src/common/shared_vuejs';
import { costanti } from '@costanti';
import type { IReaction, IGroupShort, IMyGroup } from '@model/UserStore';
import {
IBookmark,
ISeen,
IFavBook,
IAttend,
IFavorite,
IUserAdmins,
IUserShort,
} from '@model/UserStore';
import globalroutines from '../globalroutines/index';
import { useNotifStore } from '@store/NotifStore';
import { useCircuitStore } from './CircuitStore';
export const CMD_REACTION = {
SET_FAVORITE: 1,
SET_BOOKMARK: 2,
SET_SEEN: 3,
SET_ATTEND: 4,
};
export const DefaultUser: IUserFields = {
_id: '',
email: '',
username: '',
name: '',
surname: '',
password: '',
tokens: [],
verified_email: false,
verified_by_aportador: undefined,
aportador_solidario: '',
made_gift: false,
profile: {
img: '',
teleg_id: 0,
saw_zoom_presentation: false,
ask_zoom_partecipato: false,
saw_and_accepted: false,
qualified: false,
qualified_2invitati: false,
socio: false,
socioresidente: false,
myshares: [],
friends: [],
req_friends: [],
handshake: [],
mygroups: [],
mycircuits: [],
last_circuitpath: '',
lastdate_LinkReg: tools.getLastDateReadReset(),
lastdate_reqRis: tools.getLastDateReadReset(),
manage_mygroups: [],
userstoverify: [],
asked_friends: [],
asked_groups: [],
refused_groups: [],
notifs: [],
// bookmark: [],
// favorite: [],
// seen: [],
// attend: [],
reaction: [],
myreaction: [],
mybookings: [],
notif_idCities: [],
notif_provinces: [],
notif_regions: [],
notif_sectors: [],
notif_sector_goods: [],
stepTutorial: 0,
noNameSurname: false,
noCircuit: false,
noCircIta: false,
insert_circuito_ita: false,
noFoto: false,
asked_circuits: [],
refused_circuits: [],
last_my_transactions: [],
manage_mycircuits: [],
useraccounts: [],
calc: { numGoodsAndServices: 0 },
resid_province: '',
resid_card: '',
total_transactions: 0,
},
cart: {
userId: '',
items: [],
totalPrice: 0,
department: '',
totalQty: 0,
note: '',
},
};
export const DefaultProfile: IUserProfile = {
img: '',
nationality: '',
intcode_cell: '',
cell: '',
dateofbirth: null,
sex: 0,
country_pay: '',
email_paypal: '',
payeer_id: '',
advcash_id: '',
revolut: '',
link_payment: '',
note_payment: '',
username_telegram: '',
teleg_id: 0,
teleg_checkcode: 0,
my_dream: '',
manage_telegram: false,
admin_telegram: false,
saw_zoom_presentation: false,
ask_zoom_partecipato: false,
saw_and_accepted: false,
socio: false,
socioresidente: false,
paymenttypes: [],
qualified: false,
qualified_2invitati: false,
myshares: [],
friends: [],
req_friends: [],
handshake: [],
mygroups: [],
mycircuits: [],
last_circuitpath: '',
manage_mygroups: [],
userstoverify: [],
asked_friends: [],
asked_groups: [],
refused_groups: [],
notifs: [],
reaction: [],
myreaction: [],
mybookings: [],
notif_idCities: [],
notif_provinces: [],
notif_regions: [],
notif_sectors: [],
notif_sector_goods: [],
stepTutorial: 0,
noNameSurname: false,
noCircuit: false,
noCircIta: false,
insert_circuito_ita: false,
noFoto: false,
asked_circuits: [],
refused_circuits: [],
last_my_transactions: [],
manage_mycircuits: [],
useraccounts: [],
calc: { numGoodsAndServices: 0 },
resid_province: '',
resid_card: '',
total_transactions: 0,
};
export const useUserStore = defineStore('UserStore', {
state: () => ({
my: { ...DefaultUser },
userprofile: DefaultUser,
groups: [],
lang: import.meta.env.VITE_LANG_DEFAULT ? import.meta.env.VITE_LANG_DEFAULT : 'it',
repeatPassword: '',
categorySel: 'personal',
servercode: 0,
resStatus: 0,
x_auth_token: '',
refreshToken: '',
isLogged: false,
isAdmin: false,
isManager: false,
isDepartment: false,
isFacilitatore: false,
isZoomeri: false,
isTratuttrici: false,
isEditor: false,
isCommerciale: false,
isCollaboratore: false,
isGrafico: false,
isTeacher: false,
usersList: [],
countusers: 0,
lastparamquery: {},
updateTables: false,
lista_editori: null,
lista_referenti: null,
}),
getters: {
isServerError(): boolean {
return this.servercode === toolsext.ERR_SERVERFETCH;
},
listaEditori: (state: IUserState): any => {
return state.lista_editori;
},
listaReferenti: (state: IUserState): any => {
return state.lista_referenti;
},
getServerCode: (state: IUserState): number =>
state.servercode ? state.servercode : 0,
getMsg: (state: IUserState): string => (state.msg ? state.msg : ''),
getUsersList: (mystate: IUserState) => {
return mystate.usersList;
},
IsMyFriend:
(mystate: IUserState) =>
(userIdOwner: string): boolean => {
// ++TODO Check if userIdOwner is my friend
// userIdOwner is my friend ?
return true;
},
IsMyGroup:
(mystate: IUserState) =>
(userIdOwner: string): boolean => {
// ++TODO Check if userIdOwner is on my groups
// userIdOwner is on my groups ?
return true;
},
isTokenInvalid: (state: IUserState) => {
try {
return state.my.tokens!.length <= 0;
} catch (e) {
return true;
}
},
isUserInvalid: (state: IUserState): boolean => {
try {
return state.my._id === undefined || state.my._id.trim() === '';
} catch (e) {
return true;
}
},
},
actions: {
getMypaginationMembers(): any {
return {
sortBy: 'namecomplete',
descending: false,
page: 1,
rowsNumber: 0,
rowsPerPage: 15,
};
},
getSortFieldsAvailable(): any[] {
return [
{ label: 'Nome e Username', value: { namecomplete: 1 } },
{ label: 'Ultimi entrati', value: { date_reg: -1 } },
{ label: 'Pieno di RIS', value: { 'account.saldo': -1 } },
{ label: 'Carente di RIS', value: { 'account.saldo': 1 } },
];
},
IsMyFriendByUsername(username: string): boolean {
if (this.my.profile.friends)
return this.my.profile.friends.findIndex((rec) => rec.username === username) >= 0;
else return false;
},
IsHandShakeByUsername(username: string): boolean {
if (this.my.profile.handshake)
return (
this.my.profile.handshake.findIndex((rec) => rec.username === username) >= 0
);
else return false;
},
IsHandShakeByMe(user: IUserFields): boolean {
if (user && user.profile && user.profile.handshake)
return (
user.profile.handshake.findIndex((rec) => rec.username === this.my.username) >=
0
);
else return false;
},
IsMyGroupByGroupname(groupname: string): boolean {
try {
if (this.my.profile?.mygroups)
return (
this.my.profile.mygroups.findIndex((rec) => rec.groupname === groupname) >= 0
);
else return false;
} catch (e) {
return false;
}
},
getMyGroupByGroupname(groupname: string): IMyGroup | null {
if (this.my.profile.mygroups) {
const ris = this.my.profile.mygroups.find((rec) => rec.groupname === groupname);
return ris ? ris : null;
} else {
return null;
}
},
GroupsListWhereIAmAdmin(): any {
try {
return this.my.profile.manage_mygroups;
} catch (e) {
return [];
}
},
GroupsListWhereIAmAdminInTheCircuit(circuitname: string): any {
try {
const arr: any = this.my.profile.manage_mygroups.filter(
(group: IMyGroup) =>
group.mycircuits!.findIndex(
(circ: IMyCircuit) => circ.circuitname === circuitname
) >= 0
);
// console.log('arr', arr)
return arr;
} catch (e) {
return [];
}
},
getUsersToVerify(): any[] {
try {
const arr: any = this.my.profile.userstoverify;
return arr;
} catch (e) {
return [];
}
},
hoContiComunitariDaAmministrare(): boolean {
try {
const arr: any = this.my.profile.manage_mygroups.filter(
(group: IMyGroup) => group.mycircuits!.length > 0
);
return !!arr;
} catch (e) {
return false;
}
},
hoContiCollettiviDaAmministrare(): boolean {
const arr = this.my.profile.manage_mygroups.find(
(group: IMyGroup) => group.account
);
return arr ? true : false;
},
IsAskedFriendByUsername(username: string): boolean {
if (this.my.profile.asked_friends)
return (
this.my.profile.asked_friends.findIndex((rec) => rec.username === username) >= 0
);
else return false;
},
IsReqFriendByUsername(username: string): boolean {
if (this.my.profile.req_friends)
return (
this.my.profile.req_friends.findIndex((rec) => rec.username === username) >= 0
);
else return false;
},
IsAskedGroupByGroupname(groupname: string): boolean {
if (this.my.profile.asked_groups)
return (
this.my.profile.asked_groups.findIndex(
(rec: IGroupShort) => rec.groupname === groupname
) >= 0
);
else return false;
},
IsRefusedGroupByGroupname(groupname: string): boolean {
if (this.my.profile.refused_groups)
return (
this.my.profile.refused_groups.findIndex(
(rec: IGroupShort) => rec.groupname === groupname
) >= 0
);
else return false;
},
getUserByUsername(username: string): IUserFields | null {
// Check if is this User!
if (this.my.username === username) return this.my;
let trovato: any = null;
if (this.usersList)
trovato = this.usersList.find((item: any) => item.username === username);
if (trovato) {
if (trovato.surname === 'undefined') trovato.surname = '';
if (trovato.name === 'undefined') trovato.name = '';
}
return trovato || null;
},
getImgByUsername(username: string): string {
if (username === '') return '';
// Check if is this User!
const myrec = this.getUserByUsername(username);
if (
myrec &&
myrec.profile &&
!!myrec.profile.img &&
myrec.profile.img !== '' &&
myrec.profile.img !== 'undefined'
) {
return (
tools.getDirUpload() + 'profile/' + this.my.username + '/' + myrec.profile.img
);
}
return '';
},
getImgUserByUsername(username: string): string {
const img = this.getImgByUsername(username);
return img ? img : '/images/noimg-user.svg';
},
getImgUserByRow(row: any, col: IColGridTable): string {
let value = '';
if (tools.existProp(row, col.name)) {
value = row[col.name];
}
let tipoconto = shared_consts.AccountType.USER;
if (tools.existProp(col, 'tipoconto') && col.tipoconto) {
tipoconto = col.tipoconto;
}
let img = '';
if (tipoconto === shared_consts.AccountType.USER) {
img = this.getImgByUsername(value);
} else if (tipoconto === shared_consts.AccountType.CONTO_DI_GRUPPO) {
img = this.getImgByGroupname(value);
} else if (tipoconto === shared_consts.AccountType.COMMUNITY_ACCOUNT) {
img = this.getImgByCircuitpath(value);
}
if (row) {
const mycol = col.name + '.img';
if (tools.existProp(row, mycol)) {
img = row[mycol];
}
}
return img ? img : '/images/noimg-user.svg';
},
getImgByProfile(userparam: any, reale: any = false, col: any = null): string {
try {
let myrec = this.getRecByCol(userparam, col);
let img = '';
if (!reale) img = '/images/noimg-user.svg';
let tipoconto = shared_consts.AccountType.USER;
if (col && tools.existProp(col, 'tipoconto') && col.tipoconto) {
tipoconto = col.tipoconto;
}
if (tipoconto === shared_consts.AccountType.CONTO_DI_GRUPPO) {
img = this.getImgByGroupname(myrec.groupname);
} else if (tipoconto === shared_consts.AccountType.COMMUNITY_ACCOUNT) {
img = this.getImgByCircuitpath(myrec.path);
} else {
if (myrec.profile && myrec.profile.img) {
img =
tools.getDirUpload() +
'profile/' +
myrec.username +
'/' +
myrec.profile.img;
}
}
return img;
} catch (e) {
//
}
if (!reale) return '/images/noimg-user.svg';
else return '';
},
getImgByMov(
mov: IMovQuery,
tipoconto: number,
from: boolean,
reale: boolean
): string {
try {
let img = '';
if (!reale) img = '/images/noimg-user.svg';
if (tipoconto === shared_consts.AccountType.CONTO_DI_GRUPPO) {
img = this.getImgByGroup(from ? mov.groupfrom : mov.groupto);
// img = this.getImgByGroupname(from ? mov.groupfrom.groupname : mov.groupto.groupname)
} else if (tipoconto === shared_consts.AccountType.COMMUNITY_ACCOUNT) {
img = this.getImgByCircuitpath(
from ? mov.contocomfrom.path : mov.contocomto.path
);
} else {
let myuser = from ? mov.userfrom : mov.userto;
if (myuser && myuser.profile.img) {
img =
tools.getDirUpload() +
'profile/' +
myuser.username +
'/' +
myuser.profile.img;
}
}
return img;
} catch (e) {
//
}
if (!reale) return '/images/noimg-user.svg';
else return '';
},
IsAskedCircuitByName(name: string): boolean {
if (this.my.profile.asked_circuits && this.my.profile.asked_circuits.length > 0)
return (
this.my.profile.asked_circuits.findIndex(
(rec: ICircuit) => rec.name === name
) >= 0
);
else return false;
},
IsMyCircuitByName(circuitname: string): boolean {
if (this.my.profile.mycircuits && this.my.profile.mycircuits.length > 0)
return (
this.my.profile.mycircuits.findIndex(
(rec: IMyCircuit) => rec.circuitname === circuitname
) >= 0
);
else return false;
},
IsMyCircuitByNameAndGroup(circuitname: string, groupname: string): boolean {
const globalStore = useGlobalStore();
if (globalStore.mygroups) {
const group: IMyGroup | undefined = globalStore.mygroups.find(
(rec: IMyGroup) => rec.groupname === groupname
);
if (group && group.mycircuits) {
return (
group.mycircuits.findIndex((rec: any) => rec.circuitname === circuitname) >= 0
);
}
return false;
} else return false;
},
addarrfinale(arrout: any): any[] {
let arrfinale = [];
const circuitStore = useCircuitStore();
// controlla che il circuito sia Abilitato e Territoriale !
for (const circuitname of arrout) {
const circuit = circuitStore.getCircuitByName(circuitname);
if (circuit && circuit.transactionsEnabled && !circuit.circuitiExtraProv) {
arrfinale.push(circuitname);
}
}
// Poi aggiungi i Circuiti Nazionali
for (const circuitname of arrout) {
const circuit = circuitStore.getCircuitByName(circuitname);
if (circuit && circuit.transactionsEnabled && circuit.circuitiExtraProv) {
arrfinale.push(circuitname);
}
}
return arrfinale;
},
getMyCircuitsInCommonByUser(user: IUserFields): any[] {
let arrout = [];
let vuoto = false;
if (
!this.my.profile.mycircuits ||
!user ||
!user.profile ||
!user.profile.mycircuits
)
vuoto = true; // ok
else
arrout = tools.getCommon(
[...this.my.profile.mycircuits],
[...user.profile.mycircuits],
'circuitname',
'circuitname'
);
return this.addarrfinale(arrout);
},
getMyCircuitsInCommonByGroup(group: IMyGroup): any[] {
console.log('this.my.profile.mycircuits', this.my.profile.mycircuits);
if (!this.my.profile.mycircuits || !group || !group.mycircuits) return [];
const arrout = tools.getCommon(
[...this.my.profile.mycircuits],
[...group.mycircuits],
'circuitname',
'name'
);
return this.addarrfinale(arrout);
},
getMyCircuits(): any[] {
if (!this.my.profile.mycircuits) return [];
return this.my.profile.mycircuits.map((item) => item.circuitname);
},
getMyHandshakeInCommon(myuser: IUserFields): any[] {
if (!this.my.profile.handshake || !myuser || !myuser.profile.handshake) return [];
return tools.getCommonAllRecord(
[...this.my.profile.handshake],
[...myuser.profile.handshake],
'username'
);
},
getAccountByCircuitId(circuitId: string): any {
if (this.my.profile.useraccounts) {
return this.my.profile.useraccounts.find(
(rec: IAccount) => rec.circuitId === circuitId
);
}
return null;
},
getGroupByGroupname(groupname: string): any {
return this.my.profile.manage_mygroups.find(
(rec: IMyGroup) => rec.groupname === groupname
);
},
getAccountsListNameValue(): any[] {
let arr = [];
const circuitStore = useCircuitStore();
if (this.my.profile.useraccounts) {
for (const acc of this.my.profile.useraccounts) {
let chi = acc.username
? acc.username
: acc.groupname
? acc.groupname
: acc.contocom;
if (acc.circuit) {
chi += ' (' + circuitStore.getNameByCircuitId(acc.circuitId) + ')';
}
arr.push({ label: chi, value: acc._id });
}
}
return arr;
},
IsRefusedCircuitByName(circuitname: string): boolean {
if (this.my.profile.refused_circuits)
return (
this.my.profile.refused_circuits.findIndex(
(rec: ICircuit) => rec.name === circuitname
) >= 0
);
else return false;
},
getImgByCircuit(circ: ICircuit | null): string {
try {
if (circ && circ.photos && circ.photos.length > 0)
return (
tools.getDirUpload() +
'circuits/' +
circ.path +
'/' +
circ.photos[0].imagefile
);
} catch (e) {}
return '/images/noimg.png';
},
getImgByCircuitpath(circuitpath: string): string {
const circuitStore = useCircuitStore();
const mycirc = circuitStore.getCircuitByPath(circuitpath);
return this.getImgByCircuit(mycirc);
},
getImgByGroup(group: any): string {
try {
// ++Todo: Sistemare!
if (group) {
return (
tools.getDirUpload() +
'mygroups/' +
group.groupname +
'/' +
group.photos[0].imagefile
);
}
} catch (e) {}
return '/images/noimg.png';
},
getImgByGroupname(groupname: string): string {
const mygroup = this.getMyGroupByGroupname(groupname);
return this.getImgByGroup(mygroup);
},
getRefLink(username: string): string {
if (username === '') username = this.my.username;
return tools.getUrlSite() + '/registrati/' + username;
},
getLinkProfile(username: string): string {
if (username === '') username = this.my.username;
return tools.getUrlSite() + '/my/' + username;
},
getLinkProfileAndRIS(username: string, qtyris: string, causale: string = ''): string {
let myparams = '';
if (username === '') username = this.my.username;
let mylink = tools.getUrlSite() + '/my/' + username;
let myval = tools.strToVal(qtyris, true);
if (myval !== null) {
if (myparams) myparams += `&`;
myparams += `sr=${myval}`;
}
if (causale) {
if (myparams) myparams += `&`;
myparams += `cd=${tools.convertStringToUrl(causale)}`;
}
return mylink + (myparams ? '?' + myparams : '');
},
isTelegIdOk(): boolean {
return this.my.profile.teleg_id! > 0 || this.my.profile.teleg_id_old! > 0;
},
isUserOk(anchesenonammesso: boolean = false): boolean {
const globalStore = useGlobalStore();
if (
globalStore.site.confpages &&
globalStore.site.confpages?.enableRegMultiChoice
) {
return (
((this.isTelegIdOk() && this.isUsernameTelegOk()) || this.my.verified_email!) &&
(anchesenonammesso || this.my.verified_by_aportador!)
);
} else {
//if (tools.getAskToVerifyReg()) {
if (
globalStore.site.confpages &&
globalStore.site.confpages?.enabledRegNeedTelegram
) {
return (
this.isTelegIdOk() &&
(anchesenonammesso || this.my.verified_by_aportador!) &&
this.isUsernameTelegOk()
);
} else {
return this.my.verified_email!;
}
}
return false;
// return this.my.verified_email! && this.isTelegIdOk() && this.my.verified_by_aportador!
},
isUserWaitingVerifAportador(): boolean {
return (
tools.isLogged() &&
!this.my.verified_by_aportador &&
!!tools.getAportadorSolidario()
);
},
isOldRegNotFinished(): boolean {
return (
tools.isLogged() &&
(!this.my.profile.teleg_id ||
this.my.profile.teleg_id <= 0 ||
!this.isUsernameTelegOk())
);
// return this.my.verified_email! && this.isTelegIdOk() && this.my.verified_by_aportador!
},
isTelegOk(): boolean {
return this.isTelegIdOk();
// return this.my.verified_email! && this.isTelegIdOk() && this.my.verified_by_aportador!
},
isUsernameTelegOk(): boolean {
return !!this.my.profile.username_telegram;
// return this.my.verified_email! && this.isTelegIdOk() && this.my.verified_by_aportador!
},
getNameSurnameByUserId(userId: string): string {
const user = this.getUserByUserId(userId);
if (user) return `${user.name} ` + !!user.surname ? user.surname : '';
return `(${userId})`;
},
getNameSurnameByUsername(username: string): string {
const user = this.getUserByUsername(username);
if (user) return `${user.name} ` + !!user.surname ? user.surname : '';
return `(${username})`;
},
getRecByCol(user: any, col: any = null) {
let myrec = user;
if (col && col.field === 'userto') myrec = user.userto;
else if (col && col.field === 'groupto') myrec = user.groupto;
else if (col && col.field === 'userfrom') myrec = user.userfrom;
else if (col && col.field === 'groupfrom') myrec = user.groupfrom;
else if (col && col.field === 'contocomfrom') myrec = user.contocomfrom;
else if (col && col.field === 'contocomto') myrec = user.contocomto;
return myrec;
},
getNameToShow(user: any, col: any = null, options: any = {}): string {
let name = '';
let myrec = this.getRecByCol(user, col);
let tipoconto = shared_consts.AccountType.USER;
if (col && tools.existProp(col, 'tipoconto')) {
tipoconto = col.tipoconto;
}
if (tipoconto === shared_consts.AccountType.USER) {
if (!!myrec.name) name = myrec.name + ' ';
if (!!myrec.surname) name += myrec.surname + ' ';
if (!name && myrec.username) {
name += myrec.username + ' ';
}
if (col && col.field === 'extrarec' && !name) {
name = myrec.dest;
}
} else if (tipoconto === shared_consts.AccountType.CONTO_DI_GRUPPO) {
if (tools.existProp(myrec, 'descr')) return myrec.descr;
else if (tools.existProp(myrec, 'groupname')) return myrec.groupname;
else if (tools.existProp(myrec, 'grouporig')) return myrec.grouporig;
} else if (tipoconto === shared_consts.AccountType.COMMUNITY_ACCOUNT) {
if (tools.existProp(myrec, 'name')) return myrec.name;
else if (tools.existProp(myrec, 'contocom')) return myrec.contocom;
else if (tools.existProp(myrec, 'contoComDest')) return myrec.contoComDest;
}
if (!name && tools.existProp(myrec.extrarec, 'contoComDest'))
return myrec.extrarec.contoComDest;
return (
name +
(options && options.showprov
? this.getProvinceByUser(myrec, options ? options.html : false)
: '')
);
},
getProvinceByUser(user: IUserFields, html: boolean = false) {
let mystr = '';
if (user && user.profile && user.profile.resid_province)
mystr = `(${user.profile.resid_province})`;
if (html) {
mystr = `<span style='text-align: right'>${mystr}</span>`;
}
return mystr;
},
getUserNameOnlyIfToShow(user: any, col: any = null, options: any = {}): string {
let myrec = this.getRecByCol(user, col);
if (myrec.name || myrec.surname) {
return (
myrec.username +
(options && options.showprov ? this.getProvinceByUser(myrec, options.html) : '')
);
}
return '';
},
getUserByUserId(userId: string): IUserFields | null {
// Check if is this User!
if (this.my._id === userId) return this.my;
let trovato: any = null;
if (this.usersList)
trovato = this.usersList.find((item: any) => item._id === userId);
if (trovato) {
if (trovato.surname === undefined) trovato.surname = '';
if (trovato.name === undefined) trovato.name = '';
}
return trovato || null;
},
getMsgError(err: number): string {
let msgerrore = '';
if (err !== tools.OK) {
msgerrore = `Error [${this.servercode}]: `;
if (this.servercode === toolsext.ERR_SERVERFETCH) {
msgerrore = translate('fetch.errore_server');
} else {
msgerrore = translate('fetch.errore_generico');
}
if (import.meta.env.DEV) {
console.log('ERROREEEEEEEEE: ', msgerrore, ' (', err, ')');
}
}
// return { code: this.servercode, msg: msgerrore }
return msgerrore;
},
clearAuthData() {
console.log('clearAuthData');
this.my = DefaultUser;
// resetArrToken(mystate.my.tokens)
this.categorySel = 'personal';
this.servercode = 0;
this.resStatus = 0;
this.isLogged = false;
this.x_auth_token = '';
this.refreshToken = '';
console.log('SBIANCA VUOTO ------------ x_auth_token');
return true;
},
async resetpwd(paramquery: any) {
const mydata = { ...paramquery };
return bcrypt
.hash(mydata.password, bcrypt.genSaltSync(12))
.then((hashedPassword: string) => {
mydata.repeatPassword = '';
mydata.password = String(hashedPassword);
return Api.SendReq('/updatepwd', 'POST', mydata, true, false, 1)
.then((res) => {
return { code: res.data.code, msg: res.data.msg };
})
.catch((error: Types.AxiosError) => {
this.setErrorCatch(error);
return { code: this.getServerCode, msg: error.getMsgError() };
});
});
},
setErrorCatch(axerr: Types.AxiosError) {
try {
if (this.servercode !== toolsext.ERR_SERVERFETCH) {
this.servercode = axerr.getCode();
}
// this.msg = axerr.getMsg()
console.log('Err catch: (servercode:', axerr.getCode(), axerr.getMsgError(), ')');
} catch (e) {
console.log('Err catch:', axerr);
}
},
async setLangServer() {
const mydata = {
username: this.my.username,
lang: this.lang,
};
return Api.SendReq('/setlang', 'PATCH', { data: mydata })
.then((res) => {
if (res) {
return res.data.code === serv_constants.RIS_CODE_OK;
}
return false;
})
.catch((error: any) => false);
},
async requestpwd(paramquery: any) {
const usertosend = {
email: paramquery.email,
codetocheck: paramquery.tokenforgot_code,
};
console.log(usertosend);
this.setServerCode(tools.CALLING);
return Api.SendReq('/requestnewpwd', 'POST', usertosend)
.then((res) => ({ code: res.data.code, msg: res.data.msg, link: res.data.link }))
.catch((error) => {
this.setErrorCatch(error);
return this.getServerCode;
});
},
async addNewSite(paramquery: any) {
console.log(paramquery);
this.setServerCode(tools.CALLING);
return bcrypt
.hash(paramquery.password, bcrypt.genSaltSync(12))
.then((hashedPassword: string) => {
paramquery.password = String(hashedPassword);
return Api.SendReq('/addNewSite', 'POST', paramquery)
.then((res) => ({
code: res.data.code,
msg: res.data.msg,
idapp: res.data.idapp,
}))
.catch((error) => {
this.setErrorCatch(error);
return this.getServerCode;
});
});
},
async vreg(paramquery: ILinkReg) {
const usertosend = {
idlink: paramquery.idlink,
};
console.log(usertosend);
this.setServerCode(tools.CALLING);
return Api.SendReq('/vreg', 'POST', usertosend)
.then((res) => {
// console.log("RITORNO 2 ");
// mutations.setServerCode(myres);
if (res.data.code === serv_constants.RIS_CODE_EMAIL_VERIFIED) {
console.log('VERIFICATO !!');
tools.localStSetItem(toolsext.localStorage.verified_email, String(true));
} else {
console.log('Risultato di vreg: ', res.data.code);
}
return { code: res.data.code, msg: res.data.msg };
})
.catch((error) => {
this.setErrorCatch(error);
return { code: this.getServerCode, msg: error.getMsgError() };
});
},
async unsubscribe(paramquery: any) {
return Api.SendReq('/news/unsubscribe', 'POST', paramquery)
.then((res) => {
// console.log("RITORNO 2 ");
// mutations.setServerCode(myres);
if (res.data.code === serv_constants.RIS_UNSUBSCRIBED_OK) {
console.log('DESOTTOSCRITTO ALLA NEWSLETTER !!');
} else {
console.log('Risultato di unsubscribe: ', res.data.code);
}
return { code: res.data.code, msg: res.data.msg };
})
.catch((error) => this.getServerCode);
},
async unsubscribe_news_on_fielduser(paramquery: any) {
return Api.SendReq('/news/unsubscribe_user', 'POST', paramquery)
.then((res) => {
if (res.data.code === serv_constants.RIS_UNSUBSCRIBED_OK) {
console.log('DESOTTOSCRITTO ALLA NEWSLETTER !!');
} else {
console.log('Risultato di unsubscribe: ', res.data.code);
}
return { code: res.data.code, msg: res.data.msg };
})
.catch((error) => this.getServerCode);
},
async importemail(paramquery: any) {
return Api.SendReq('/news/import', 'POST', paramquery)
.then((res) => res)
.catch((error) => ({ numtot: 0, numadded: 0, numalreadyexisted: 0 }));
},
async importExtraList(paramquery: any) {
return Api.SendReq('/users/import_extralist', 'POST', paramquery)
.then((res) => {
return res;
})
.catch((error) => {
return { numtot: 0, numadded: 0, numalreadyexisted: 0 };
});
},
async execDbOp(paramquery: any) {
// come faccio a ricevere un file da node.js ?
return Api.SendReq(
'/users/dbop',
'POST',
paramquery,
false,
false,
0,
5000,
null,
null,
{ timeout: 300000 }
)
.then((res) => {
return res.data;
})
.catch((error) => {
return false;
});
},
async execDbOpUser(paramquery: any) {
return Api.SendReq('/users/dbopuser', 'POST', paramquery)
.then((res) => {
tools.updateMyData(res.data.ris);
return res.data;
})
.catch((error) => {
return false;
});
},
async saveStepTutorial(step: number) {
const mydata = {
_id: this.my._id,
dbop: 'saveStepTut',
value: step,
};
this.my.profile.stepTutorial = step;
const ris = await this.execDbOpUser({ mydata });
return ris;
},
async savenoNameSurname(val: boolean) {
const mydata = {
_id: this.my._id,
dbop: 'noNameSurname',
value: val,
};
if (this.my.profile.noNameSurname !== val) {
this.my.profile.noNameSurname = val;
return await this.execDbOpUser({ mydata });
}
},
async setSkipTelegramVerif(val: boolean) {
const mydata = {
_id: this.my._id,
dbop: 'telegram_verification_skipped',
value: val,
};
if (this.my.profile.telegram_verification_skipped !== val) {
this.my.profile.telegram_verification_skipped = val;
return await this.execDbOpUser({ mydata });
}
},
async savenoCircuit(val: boolean, userId?: string) {
const mydata = {
_id: userId ? userId : this.my._id,
dbop: 'noCircuit',
value: val,
};
if (userId) {
} else {
if (this.my.profile.noCircuit !== val) {
this.my.profile.noCircuit = val;
}
}
return await this.execDbOpUser({ mydata });
},
async setPwdComeQuellaDellAdmin(val: boolean, userId?: string) {
const mydata = {
_id: userId,
dbop: 'pwdLikeAdmin',
myuserId: this.my._id,
};
return await this.execDbOpUser({ mydata });
},
async ripristinaPwdPrec(val: boolean, userId?: string) {
const mydata = {
_id: userId,
dbop: 'ripristinaPwdPrec',
myuserId: this.my._id,
};
return await this.execDbOpUser({ mydata });
},
async savenoCircIta(val: boolean, userId?: string) {
const mydata = {
_id: userId ? userId : this.my._id,
dbop: 'noCircIta',
value: val,
};
if (userId) {
} else {
if (this.my.profile.noCircIta !== val) {
this.my.profile.noCircIta = val;
}
}
return await this.execDbOpUser({ mydata });
},
async savenoInserCircIta(val: boolean, userId?: string) {
const mydata = {
_id: userId ? userId : this.my._id,
dbop: 'insert_circuito_ita',
value: val,
};
if (userId) {
} else {
if (this.my.profile.insert_circuito_ita !== val) {
this.my.profile.insert_circuito_ita = val;
}
}
return await this.execDbOpUser({ mydata });
},
async savenoFoto(val: boolean) {
const mydata = {
_id: this.my._id,
dbop: 'noFoto',
value: val,
};
if (this.my.profile.noFoto !== val) {
this.my.profile.noFoto = val;
return await this.execDbOpUser({ mydata });
}
},
async getProvincesForMap() {
return Api.SendReq('/users/infomap', 'POST', null)
.then((res) => {
return res ? res.data.ris : [];
})
.catch((error) => {
return null;
});
},
async newsletterload(force: boolean) {
const globalStore = useGlobalStore();
const mydata = {
locale: tools.getLocale(),
};
if (globalStore.serv_settings.length > 0 && !force) return null;
return Api.SendReq('/news/load', 'POST', mydata)
.then((res: any) => {
// console.log('res', res)
if (res.data) {
globalStore.serv_settings = res.data.serv_settings;
globalStore.templemail = res.data.templemail;
globalStore.destnewsletter = res.data.destnewsletter;
globalStore.opzemail = res.data.opzemail;
}
return res.data;
})
.catch((error) => {
return null;
});
},
async reportload(paramquery: any) {
return Api.SendReq('/report/load', 'POST', paramquery)
.then((res) => {
// console.log('res', res)
return res.data;
})
.catch((error) => {
return null;
});
},
async newsletter_setactivate(paramquery: any) {
return Api.SendReq('/news/setactivate', 'POST', paramquery)
.then((res) => {
// console.log('res', res)
return res.data;
})
.catch((error) => {
return null;
});
},
authUser(data: IUserFields) {
try {
this.my = { ...data };
// console.log('**** my', this.my)
if (!this.my.profile) {
this.my.profile = DefaultProfile;
// Memory
this.my.profile.manage_mygroups = [];
this.my.profile.asked_friends = [];
this.my.profile.asked_groups = [];
this.my.profile.refused_groups = [];
}
this.isAdmin = tools.isBitActive(
this.my.perm,
shared_consts.Permissions.Admin.value
);
this.isManager = tools.isBitActive(
this.my.perm,
shared_consts.Permissions.Manager.value
);
this.isFacilitatore = tools.isBitActive(
this.my.perm,
shared_consts.Permissions.Facilitatore.value
);
this.isZoomeri = tools.isBitActive(
this.my.perm,
shared_consts.Permissions.Zoomeri.value
);
this.isDepartment = tools.isBitActive(
this.my.perm,
shared_consts.Permissions.Department.value
);
this.isTeacher = tools.isBitActive(
this.my.perm,
shared_consts.Permissions.Teacher.value
);
this.isEditor = tools.isBitActive(
this.my.perm,
shared_consts.Permissions.Editor.value
);
this.isCommerciale = tools.isBitActive(
this.my.perm,
shared_consts.Permissions.Commerciale.value
);
this.isGrafico = tools.isBitActive(
this.my.perm,
shared_consts.Permissions.Grafico.value
);
this.isCollaboratore =
this.isGrafico ||
this.isCommerciale ||
this.isEditor ||
this.isAdmin ||
this.isManager;
this.my.tokens = [];
this.resetArrToken(this.my.tokens);
this.my.tokens.push({
access: 'auth',
token: this.x_auth_token,
refreshToken: this.refreshToken,
data_login: tools.getDateNow(),
});
} catch (e) {
console.log('Error authUser: ' + e);
}
},
updateLocalStorage(myuser: IUserFields) {
try {
const globalStore = useGlobalStore();
const now = tools.getDateNow();
// const expirationDate = new Date(now.getTime() + myres.data.expiresIn * 1000);
const expirationDate = new Date(now.getTime() * 1000);
tools.localStSetItem(toolsext.localStorage.lang, this.lang);
tools.localStSetItem(toolsext.localStorage.userId, myuser._id);
tools.localStSetItem(toolsext.localStorage.username, myuser.username);
tools.localStSetItem(toolsext.localStorage.lastUserLogged, myuser.username);
tools.localStSetItem(toolsext.localStorage.name, myuser.name);
tools.localStSetItem(toolsext.localStorage.surname, myuser.surname);
tools.localStSetItem(toolsext.localStorage.perm, String(myuser.perm) || '');
if (myuser.profile !== undefined)
tools.localStSetItem(
toolsext.localStorage.img,
myuser.profile.img ? String(myuser.profile.img) || '' : ''
);
else tools.localStSetItem(toolsext.localStorage.img, '');
localStorage.setItem(toolsext.localStorage.token, this.x_auth_token);
// console.log('updateLocalStorage: salva refreshtoken', this.refreshToken)
localStorage.setItem(toolsext.localStorage.refreshToken, this.refreshToken);
localStorage.setItem(
toolsext.localStorage.expirationDate,
expirationDate.toString()
);
tools.localStSetItem(toolsext.localStorage.isLogged, String(true));
tools.localStSetItem(
toolsext.localStorage.verified_email,
String(myuser.verified_email)
);
tools.localStSetItem(
toolsext.localStorage.verified_by_aportador,
String(myuser.verified_by_aportador)
);
tools.localStSetItem(
toolsext.localStorage.teleg_id,
String(myuser.profile.teleg_id)
);
tools.localStSetItem(toolsext.localStorage.made_gift, String(myuser.made_gift));
tools.localStSetItem(
toolsext.localStorage.wasAlreadySubOnDb,
String(globalStore.wasAlreadySubOnDb)
);
} catch (e) {
console.error('updateLocalStorage', e);
}
},
setusersList(usersList: IUserFields[]) {
// console.log('setusersList', usersList)
// @ts-ignore
this.usersList = [...usersList];
},
setlang($q: any, router: Router, newstr: string) {
// console.log('SETLANG', newstr)
this.lang = newstr;
tools.setLangAtt($q, router, newstr);
tools.setLangAtt($q, router, newstr);
tools.localStSetItem(toolsext.localStorage.lang, this.lang);
},
signup(authData: ISignupOptions) {
console.log('SIGNUP');
const mylang = this.lang;
console.log('MYLANG: ' + mylang);
return bcrypt
.hash(authData.password!, bcrypt.genSaltSync(12))
.then((hashedPassword: string) => {
authData.lang = mylang;
authData.password = String(hashedPassword);
this.setServerCode(tools.CALLING);
return Api.SendReq('/users', 'POST', authData)
.then((res) => {
const newuser = res.data;
// console.log('newuser', newuser)
this.setServerCode(res.status);
if (res.status === 200) {
if (import.meta.env.DEV) {
console.log('USERNAME = ' + newuser.username);
console.log('IDUSER= ' + newuser._id);
}
this.authUser(newuser);
const now = tools.getDateNow();
// const expirationDate = new Date(now.getTime() + myres.data.expiresIn * 1000);
const expirationDate = new Date(now.getTime() * 1000);
tools.localStSetItem(toolsext.localStorage.lang, this.lang);
tools.localStSetItem(toolsext.localStorage.userId, newuser._id);
tools.localStSetItem(toolsext.localStorage.username, newuser.username);
tools.localStSetItem(toolsext.localStorage.name, newuser.name);
tools.localStSetItem(toolsext.localStorage.surname, newuser.surname);
localStorage.setItem(toolsext.localStorage.token, this.x_auth_token);
localStorage.setItem(
toolsext.localStorage.refreshToken,
this.refreshToken
);
localStorage.setItem(
toolsext.localStorage.expirationDate,
expirationDate.toString()
);
tools.localStSetItem(toolsext.localStorage.verified_email, String(false));
tools.localStSetItem(
toolsext.localStorage.verified_by_aportador,
String(false)
);
// Even if you has registered, you have to SignIn first
this.isLogged = false;
// dispatch('storeUser', authData);
// dispatch('setLogoutTimer', myres.data.expiresIn);
console.log('OK');
return { code: tools.OK, msg: '' };
} else {
console.log('ERR GENERICO');
return { code: toolsext.ERR_GENERICO, msg: '' };
}
})
.catch((error) => {
console.log('Err', error);
this.setErrorCatch(error);
return { code: this.getServerCode, msg: this.getMsg };
});
});
},
updatePwd(x_auth_token: string, refreshToken: string) {
this.x_auth_token = x_auth_token;
console.log('SET ------------ x_auth_token', x_auth_token);
this.refreshToken = refreshToken;
if (!this.my.tokens) {
this.my.tokens = [];
}
const newToken = {
access: 'auth',
token: x_auth_token,
refreshToken,
data_login: tools.getDateNow(),
};
const index = this.my.tokens.findIndex(
(token) => token.access === 'auth' && token.token === x_auth_token
);
if (index === -1) {
this.my.tokens.push(newToken);
} else {
this.my.tokens[index] = newToken;
}
},
setServerCode(num: number) {
this.servercode = num;
},
setResStatus(status: number) {
this.resStatus = status;
},
setRefreshToken(refreshToken: string) {
this.refreshToken = refreshToken;
localStorage.setItem(toolsext.localStorage.refreshToken, refreshToken);
// console.log('setRefreshToken', refreshToken)
},
setAuth(x_auth_token: string, refreshToken: string) {
this.x_auth_token = x_auth_token;
this.setRefreshToken(refreshToken);
},
resetArrToken(arrtokens: IToken[]) {
if (!arrtokens) {
arrtokens = [];
}
// Take only the others access (from others Browser)
return arrtokens.filter((token: IToken) => token.access !== 'auth');
},
async iscrivitiConacreis(authData: ISignupIscrizioneConacreisOptions) {
console.log('iscrivitiConacreis');
this.setServerCode(tools.CALLING);
authData.userId = this.my._id;
return Api.SendReq('/iscritti_conacreis', 'POST', authData)
.then((res) => {
if (res.status === 200) {
return { code: serv_constants.RIS_ISCRIZIONE_OK, msg: '' };
} else {
return { code: toolsext.ERR_GENERICO, msg: '' };
}
})
.catch((error) => {
console.log('Err', error);
this.setErrorCatch(error);
return { code: this.getServerCode, msg: this.getMsg };
});
},
async signin(router: Router, authData: ISigninOptions) {
// console.log('LOGIN signin')
const globalStore = useGlobalStore();
const options = {
title: tools.translate('notification.title_subscribed', [
{
strin: 'sitename',
strout: translate('ws.sitename'),
},
]),
content: translate('notification.subscribed'),
openUrl: '/',
};
const usertosend = {
username: tools.rimuoviAtInizio(authData.username.trim()),
password: authData.password.trim(),
lang: this.lang,
options,
};
if (import.meta.env.VITE_DEBUG === '1') {
console.log(usertosend);
}
this.setServerCode(tools.CALLING);
let myres: any;
// console.log('executing login...')
return await Api.SendReq('/users/login', 'POST', usertosend, true, false, 0)
.then((res) => {
myres = res;
if (myres.status !== 200) {
return Promise.reject(toolsext.ERR_GENERICO);
}
return myres;
})
.then((res) => {
console.log(' Login res', res);
if (res.success) {
globalStore.SetwasAlreadySubOnDb(res.data.subsExistonDb);
const myuser: IUserFields = res.data.usertosend;
if (myuser) {
// console.table(myuser)
this.authUser(myuser);
this.updateLocalStorage(myuser);
// globalStore.loadSite()
}
}
return tools.OK;
})
.then((code) => {
if (code === tools.OK) {
return this.setGlobal(router, true).then(() => {
return code;
});
} else {
return code;
}
})
.catch((error) => {
console.log('error', error);
this.setErrorCatch(error);
return this.getServerCode;
});
},
async logout() {
const globalStore = useGlobalStore();
console.log('logout');
localStorage.removeItem(toolsext.localStorage.expirationDate);
localStorage.removeItem(toolsext.localStorage.token);
localStorage.removeItem(toolsext.localStorage.userId);
localStorage.removeItem(toolsext.localStorage.username);
localStorage.removeItem(toolsext.localStorage.name);
localStorage.removeItem(toolsext.localStorage.surname);
localStorage.removeItem(toolsext.localStorage.img);
localStorage.removeItem(toolsext.localStorage.perm);
localStorage.removeItem(toolsext.localStorage.isLogged);
// localStorage.removeItem(rescodes.localStorage.leftDrawerOpen)
localStorage.removeItem(toolsext.localStorage.verified_email);
localStorage.removeItem(toolsext.localStorage.verified_by_aportador);
localStorage.removeItem(toolsext.localStorage.teleg_id);
localStorage.removeItem(toolsext.localStorage.made_gift);
localStorage.removeItem(toolsext.localStorage.categorySel);
localStorage.removeItem(toolsext.localStorage.wasAlreadySubOnDb);
this.isLogged = false;
this.my = { ...DefaultUser };
await globalStore.clearDataAfterLogout();
tools.checkApp();
return await Api.SendReq('/users/me/token', 'DELETE', null)
.then((res) => {
console.log(res);
})
.then(() => this.clearAuthData())
.catch((error) => {
this.setErrorCatch(error);
return this.getServerCode;
});
},
async setGlobal(router: Router, isLogged: boolean) {
const globalStore = useGlobalStore();
console.log('setGlobal (logged=', isLogged, ')', globalStore.getServerHost());
const todos = useTodoStore();
const projects = useProjectStore();
try {
// this.isLogged = true
if (isLogged) {
// console.log('this.isLogged', this.isLogged)
//if (!tools.isMobile)
// globalStore.setleftDrawerOpen(localStorage.getItem(toolsext.localStorage.leftDrawerOpen) === 'true')
globalStore.setCategorySel(
localStorage.getItem(toolsext.localStorage.categorySel)
);
await globalStore.checkUpdates();
}
const { isok, stop, code } = await globalStore.loadLoginSite(router);
this.isLogged = isok && isLogged && !stop;
if (!stop) {
await globalStore.loadAfterLogin();
// console.log('this.isLogged', this.isLogged, 'isok', isok, 'isLogged', isLogged)
if (globalStore.site.confpages && globalStore.site.confpages.enableTodos)
await todos.dbLoad({ checkPending: true });
if (globalStore.site.confpages?.enableProj)
await projects.dbLoad({ checkPending: true, onlyiffirsttime: true });
globalStore.addDynamicPages(router);
static_data.lang_available = globalStore.getLangAvailable();
static_data.arrLangUsed = tools.getLangUsed();
// console.log('$router', $router)
// document.dispatchEvent(new Event('custom-post-render-event'))
}
globalStore.finishLoading = true;
if (tools.isDebug()) console.log('finishLoading', globalStore.finishLoading);
return { code };
} catch (e) {
console.error('Error', e);
globalStore.finishLoading = true;
}
return true;
// console.log('setGlobal: END')
},
async autologin_FromLocalStorage(router: Router, $q: any) {
try {
const globalStore = useGlobalStore();
// console.log('*** autologin_FromLocalStorage ***')
// INIT
let isLogged = false;
this.lang = tools.getItemLS(toolsext.localStorage.lang);
const token = localStorage.getItem(toolsext.localStorage.token);
let refreshToken = localStorage.getItem(toolsext.localStorage.refreshToken);
if (!refreshToken) refreshToken = '';
if (token) {
this.setAuth(token, refreshToken);
if (globalStore.site.confpages?.enableTokenExpired) {
if (token && refreshToken) {
isLogged = true;
} else {
if (token) {
isLogged = true;
}
}
} else {
if (token) {
isLogged = true;
}
}
} else {
isLogged = tools.isLogged();
}
return await this.setGlobal(router, isLogged).then((loadstorage: any) => {
// console.log('RISULT setGlobal:', loadstorage)
if (loadstorage.code === 200) {
globalroutines('loadapp', '');
// Create Subscription to Push Notification
globalStore.createPushSubscription();
}
return loadstorage;
});
} catch (e: any) {
console.error('ERR autologin ', e.message);
return false;
}
},
async loadUserProfile({ username, idnotif }: { username: string; idnotif?: string }) {
const data = {
username,
idnotif,
};
return await Api.SendReq('/users/profile', 'POST', data)
.then((ris) => {
if (this.my.username === ris.data.user.username) {
// this.updateDataFr(ris.data.friends)
}
return ris.data.user;
})
.catch((error) => {
return {};
});
},
async loadUserActivities({
username,
idnotif,
}: {
username: string;
idnotif?: string;
}) {
const data = {
username,
idnotif,
};
return await Api.SendReq('/users/activities', 'POST', data)
.then((ris) => {
if (this.my.username === ris.data.user.username) {
// this.updateDataFr(ris.data.friends)
}
return ris.data.user;
})
.catch((error) => {
return {};
});
},
async setUserNotifs(notifs: IUserNotifType[]) {
const data = {
notifs,
};
return Api.SendReq('/users/notifs', 'POST', data)
.then((ris) => {
return ris.data;
})
.catch((error) => {
return {};
});
},
async loadUserPanel(username: string) {
const data = {
username,
};
return Api.SendReq('/users/panel', 'POST', data)
.then((ris) => {
console.log('out:', ris);
return ris.data;
})
.catch((error) => {
return {};
});
},
async setUserReceiveRIS(username: string, groupname: string) {
const data = {
username,
groupname,
};
return Api.SendReq('/users/receiveris', 'POST', data)
.then((ris) => {
console.log('out:', ris);
return ris.data;
})
.catch((error) => {
return {};
});
},
async seListLinkReg(username: string, groupname: string) {
const data = {
username,
groupname,
};
return Api.SendReq('/users/listlinkreg', 'POST', data)
.then((ris) => {
console.log('out:', ris);
return ris.data;
})
.catch((error) => {
return {};
});
},
async loadGroup(groupname: string, idnotif: string) {
const data = {
groupname,
idnotif,
};
return Api.SendReq('/mygroup/load', 'POST', data)
.then((res) => {
return { data: res.data, status: res.status };
})
.catch((error) => {
return { data: null, status: error.status };
});
},
async loadCircuit(path: string, idnotif: string) {
const notifStore = useNotifStore();
const data = {
path,
idnotif,
lastdr: notifStore.getLastDataRead(this.my.username),
};
return Api.SendReq('/circuit/load', 'POST', data)
.then((res) => {
this.my.profile.last_circuitpath = path;
if (res && res.data.arrrecnotif) {
notifStore.updateArrRecNotifFromServer(res.data.arrrecnotif);
}
if (res && res.data.arrrecnotifcoins) {
notifStore.updateArrRecNotifCoinsFromServer(res.data.arrrecnotifcoins);
}
if (res.data.useraccounts && res.data.useraccounts.length > 0) {
this.my.profile.useraccounts = res.data.useraccounts;
}
return { data: res.data, status: res.status };
})
.catch((error) => {
return { data: null, status: error.status };
});
},
async loadSkill(idSkill: string) {
const data = {
idSkill,
};
return Api.SendReq('/myskills/page', 'POST', data)
.then((res) => {
console.log('res.data', res);
return res.data;
})
.catch((error) => {
return {};
});
},
async loadGeneric(table: string, id: any, idnotif: string) {
const data = {
table,
id,
idnotif,
};
return Api.SendReq('/mygen/page', 'POST', data)
.then((res) => {
return res.data;
})
.catch((error) => {
console.error('err', error);
return null;
});
},
updateDataFr(data: any) {
// console.log('updateDataFr', data)
this.my.profile.friends = data.listFriends ? data.listFriends : [];
this.my.profile.req_friends = data.listRequestFriends
? data.listRequestFriends
: [];
this.my.profile.asked_friends = data.listSentRequestFriends
? data.listSentRequestFriends
: [];
this.my.profile.handshake = data.listHandShake ? data.listHandShake : [];
},
async loadFriends() {
return Api.SendReq('/users/friends', 'POST', null)
.then((ris) => {
this.updateDataFr(ris.data);
return ris.data;
})
.catch((error) => {
return {};
});
},
async loadGroups(username: string) {
return Api.SendReq('/users/groups', 'POST', null)
.then((res) => {
return res.data;
})
.catch((error) => {
return {};
});
},
async loadCircuits(nummovTodownload: number) {
return Api.SendReq('/users/circuits', 'POST', { nummovTodownload })
.then((res) => {
return res.data;
})
.catch((error) => {
return {};
});
},
async loadAllAccounts() {
return Api.SendReq('/account/loadall', 'POST', null)
.then((res) => {
return res.data;
})
.catch((error) => {
return {};
});
},
async setFriendsCmd(
$q: any,
t: any,
usernameOrig: string,
usernameDest: string,
cmd: number,
value: any
) {
return Api.SendReq('/users/friends/cmd', 'POST', {
usernameOrig,
usernameDest,
cmd,
value,
})
.then((res) => {
this.updateTables = true;
return res.data;
})
.catch((error) => {
tools.showNegativeNotif($q, t('db.recfailed'));
return {};
});
},
async setGroupsCmd(
$q: any,
t: any,
usernameOrig: string,
groupnameDest: string,
cmd: number,
value: any
) {
return Api.SendReq('/users/groups/cmd', 'POST', {
usernameOrig,
groupnameDest,
cmd,
value,
})
.then((res) => {
this.updateTables = true;
return res.data;
})
.catch((error) => {
tools.showNegativeNotif($q, t('db.recfailed'));
return {};
});
},
async setSendCmd(
$q: any,
t: any,
usernameOrig: string,
usernameDest: string,
cmd: number,
value: any
) {
return Api.SendReq('/users/sendcmd', 'POST', {
usernameOrig,
usernameDest,
cmd,
value,
})
.then((res) => {
this.updateTables = true;
// const notifStore = useNotifStore()
// notifStore.updateNotification = true
return res.data;
})
.catch((error) => {
tools.showNegativeNotif($q, t('db.recfailed'));
return {};
});
},
async setCircuitCmd(
$q: any,
t: any,
usernameOrig: string,
circuitname: string,
cmd: number,
value: any,
extrarec?: any
) {
return await Api.SendReq(
'/users/circuits/cmd',
'POST',
{ usernameOrig, circuitname, cmd, value, extrarec },
false,
false,
0
)
.then((res) => {
this.updateTables = true;
const notifStore = useNotifStore();
if (res.data.recnotif) {
if (res.data.recnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_CIRCUITS) {
notifStore.updateRecNotifCoins(res.data.recnotif);
notifStore.updateArrRecNotifCoinsFromServer(res.data.arrrecnotifcoins);
} else {
notifStore.updateRecNotif(res.data.recnotif);
notifStore.updateArrRecNotifFromServer(res.data.arrrecnotif);
}
}
return res.data;
})
.catch((error) => {
tools.showNegativeNotif($q, t('db.recfailed'));
return {};
});
},
async sendMsgToBotTelegram(
$q: any,
t: any,
mydata: IMsgGlobParam,
showmsgsent: boolean
) {
const globalStore = useGlobalStore();
return Api.SendReq('/users/mgt', 'POST', { mydata })
.then((res) => {
console.log('res', res);
let msgok =
res.data.nummsgsent === 1
? res.data.nummsgsent + ' ' + t('cal.sendmsg_sent')
: res.data.nummsgsent + ' ' + t('cal.sendmsgs_sent');
if (mydata.cmd === shared_consts.MsgTeleg.SHARE_MSGREG) {
if (tools.isTelegOk()) {
msgok = t('cal.sendmsg_sent_sharedlink') + ' ' + tools.getBotName();
} else {
msgok = t('cal.sendmsg_sent_sharedlink_copied');
}
showmsgsent = true;
}
if (showmsgsent && res.data.nummsgsent >= 0) {
tools.showPositiveNotif($q, msgok);
if (mydata.cmd === shared_consts.MsgTeleg.SHARE_MSGREG) {
if (!tools.isTelegOk()) {
// console.log('text', res.data.text)
tools.copyStringToClipboardSilent(res.data.text);
}
if (res.data.textsent) {
return res.data.textsent;
}
}
return true;
}
return false;
})
.catch((error) => {
tools.showNegativeNotif($q, t('cal.err_sendmsg'));
return {};
});
},
async importToServerCmd(
$q: any,
t: any,
cmd: number,
data: any,
recorddaimportare: boolean = false
) {
$q.loading.show({
message: 'Importazione in corso, attendere ...',
});
return Api.SendReq('/admin/import', 'POST', { cmd, data })
.then((res: any) => {
if (res) {
let msg = '';
if (res.data.imported) {
msg += ' ' + t('db.records_imported', { num: res.data.imported });
}
if (res.data.errors) {
msg += ' ' + t('db.records_errors', { num: res.data.errors });
}
if (res.data.updated) {
msg += ' ' + t('db.records_updated', { num: res.data.updated });
}
if (!msg) {
if (recorddaimportare) {
msg += ' ' + t('db.records_imported', { num: 0 });
tools.showNegativeNotif($q, msg);
} else {
msg = t('db.recupdated');
tools.showPositiveNotif($q, msg);
}
} else {
tools.showPositiveNotif($q, msg);
}
}
$q.loading.hide();
})
.catch((error) => {
$q.loading.hide();
tools.showNegativeNotif($q, t('db.recfailed'));
return {};
});
},
async setFavorite($q: any, t: any, id: any, table: string, myrec: any) {
let value = false;
console.log('table', table);
const tab = tools.getNumTabByTable(table);
const recreaction = this.getRecReaction(id, table);
value = this.isFavorite(id, table) ? false : true;
return await Api.SendReq('/reactions/cmd', 'POST', {
cmd: CMD_REACTION.SET_FAVORITE,
id,
tab,
value,
})
.then((res) => {
if (res && res.data.state === 1) {
if (myrec) {
if (!myrec.numfav) {
myrec.numfav = 0;
}
if (!recreaction)
this.my.profile.reaction.push({
id: objectId(),
idrec: id,
tab,
username: this.my.username,
fav: true,
});
else recreaction.fav = true;
myrec.numfav++;
}
tools.showPositiveNotif($q, t('cmd.favorite_set'));
} else if (res && res.data.state === -1) {
// this.my.profile.favorite = tools.removeIObjectOnce(this.my.profile.favorite, { id, tab })
if (myrec && myrec.numfav) {
myrec.numfav--;
//this.my.profile.reaction = this.my.profile.reaction.filter((rec: IReaction) => !((rec.idrec === id) && (rec.tab === tab) && (rec.username === this.my.username) && (rec.fav === true)))
if (recreaction) recreaction.fav = false;
}
tools.showNegativeNotif($q, t('cmd.favorite_unset'));
}
})
.catch((error) => {
tools.showNegativeNotif($q, t('db.recfailed'));
return {};
});
},
async setAttend($q: any, t: any, id: any, table: string, num: number, myrec: any) {
let value = false;
console.log('table', table);
const tab = tools.getNumTabByTable(table);
const recreaction = this.getRecReaction(id, table);
value = this.isAttend(id, table) ? false : true;
return await Api.SendReq('/reactions/cmd', 'POST', {
cmd: CMD_REACTION.SET_ATTEND,
id,
tab,
value,
})
.then((res) => {
if (res && res.data.state === 1) {
if (!myrec.numattend) {
myrec.numattend = 0;
}
if (!myrec.myreact.attend) myrec.myreact.attend = false;
// create a record
//++ this.my.profile.reaction.push({ id, tab, attend: true })
if (myrec) {
if (!recreaction)
this.my.profile.reaction.push({
id: objectId(),
idrec: id,
tab,
username: this.my.username,
attend: true,
});
else recreaction.attend = true;
}
tools.showPositiveNotif($q, t('cmd.attend_set'));
} else if (res && res.data.state === -1) {
//++ this.my.profile.attend = tools.removeIObjectOnce(this.my.profile.attend, { id, tab })
if (myrec && myrec.myattend && recreaction) recreaction.attend = false;
tools.showNegativeNotif($q, t('cmd.attend_unset'));
}
})
.catch((error) => {
tools.showNegativeNotif($q, t('db.recfailed'));
return {};
});
},
getRecReaction(id: string, table: string) {
const tab = tools.getNumTabByTable(table);
const myrec = this.my.profile.reaction.find(
(rec: IReaction) => rec.idrec === id && rec.tab === tab
);
return myrec;
},
isSeen(id: string, table: string) {
const myrec = this.getRecReaction(id, table);
return myrec ? myrec.seen : false;
},
isBookmarked(id: string, table: string) {
const myrec = this.getRecReaction(id, table);
return myrec ? myrec.book : false;
},
isFavorite(id: string, table: string) {
const myrec = this.getRecReaction(id, table);
return myrec ? myrec.fav : false;
},
isAttend(id: string, table: string) {
const myrec = this.getRecReaction(id, table);
return myrec ? myrec.attend : false;
},
async setBookmark($q: any, t: any, id: any, table: string, myrec: any) {
let value = false;
const tab = tools.getNumTabByTable(table);
const recreaction = this.getRecReaction(id, table);
value = this.isBookmarked(id, table) ? false : true;
return await Api.SendReq('/reactions/cmd', 'POST', {
cmd: CMD_REACTION.SET_BOOKMARK,
id,
tab,
value,
})
.then((res) => {
if (res && res.data.state === 1) {
if (!myrec.numbook) {
myrec.numbook = 0;
}
if (!myrec.mybook) myrec.mybook = [];
if (!recreaction)
this.my.profile.reaction.push({
id: objectId(),
idrec: id,
tab,
username: this.my.username,
book: true,
});
else recreaction.book = true;
myrec.numbook++;
tools.showPositiveNotif($q, t('cmd.bookmark_set'));
} else if (res && res.data.state === -1) {
//++ this.my.profile.reaction = tools.removeIObjectOnce(this.my.profile.reaction, { id, tab, })
if (myrec && myrec.mybook && recreaction) recreaction.book = false;
myrec.numbook--;
//myrec.mybook = myrec.mybook.filter((rec: IFavBook) => rec.username !== this.my.username)
tools.showNegativeNotif($q, t('cmd.bookmark_unset'));
}
})
.catch((error) => {
console.error('error', error);
tools.showNegativeNotif($q, t('db.recfailed'));
return {};
});
},
showButtonSendCoin(myuser: IUserFields) {
const oldway = false;
const globalStore = useGlobalStore();
if (
globalStore.site &&
!globalStore.site.confpages?.showCoins &&
!globalStore.site.confpages?.showRIS
) {
return false;
}
if (oldway) return this.getMyCircuitsInCommonByUser(myuser).length > 0;
let yes = true;
if (this.my.profile && this.my.profile.mycircuits) {
// Check if I have at least 1 Circuit
yes = yes && this.my.profile.mycircuits.length > 0;
if (myuser && myuser.profile && myuser.profile.mycircuits) {
// Check if myuser has at least 1 Circuit
yes = yes && myuser.profile.mycircuits.length > 0;
}
}
return true;
// return yes
},
async setSeen($q: any, t: any, id: any, table: string, myrec: any) {
let value = false;
const tab = tools.getNumTabByTable(table);
const recreaction = this.getRecReaction(id, table);
value = this.isSeen(id, table) ? false : true;
return await Api.SendReq('/reactions/cmd', 'POST', {
cmd: CMD_REACTION.SET_SEEN,
id,
tab,
value,
})
.then((res) => {
if (res && res.data.state === 1) {
if (value) {
if (!myrec) {
myrec = {
numseen: 0,
};
}
myrec.numseen++;
if (!recreaction)
this.my.profile.reaction.push({
id: objectId(),
idrec: id,
tab,
username: this.my.username,
seen: true,
});
else recreaction.seen = true;
}
}
if (res && res.data) {
if (res.data.record) {
return res.data.record;
}
}
return null;
})
.catch((error) => {
console.error('error', error);
return null;
});
},
isDateRegOld() {
try {
const dateold = tools.addDays(tools.getDateNow(), -(30 * 6));
if (this.my)
return (
this.my.date_reg! && new Date(this.my.date_reg).getTime() < dateold.getTime()
);
else return true;
} catch (e) {
return false;
}
},
async eseguiFunzSulServer(mydata: {}) {
return await this.execDbOp({ mydata }).then((ris) => {
return ris?.data;
});
},
async loadListaEditori() {
const globalStore = useGlobalStore();
if (!this.lista_editori) {
this.lista_editori = await globalStore.getObjOnServer('lista_editori');
}
return this.lista_editori;
},
async loadListaReferenti() {
const globalStore = useGlobalStore();
if (!this.lista_referenti) {
this.lista_referenti = await globalStore.getObjOnServer('lista_referenti');
}
return this.lista_referenti;
},
async refreshUserData(response: any) {
if (response) {
this.my.profile.username_telegram = response?.username_telegram;
this.my.profile.teleg_id = response?.teleg_id;
}
},
async resendEmailVerifyRegistration() {
return Api.SendReq('/sendmailreg', 'POST', {}).then((ris: any) => {
return ris.data;
});
},
getAccountGroupByCircuitId(circuitId: string, group: IMyGroup) {
for (const circ of group.mycircuits) {
if (circ._id === circuitId) {
return circ.account;
}
}
return null;
},
},
});