- Poter impostare per ogni Provincia un Circuito RIS specifico, anziché quello provinciale:

Esempio: Napoli: (Circuito RIS Campania) e Sud Sardegna: Cagliari.
This commit is contained in:
Surya Paolo
2025-07-21 19:08:37 +02:00
parent f12341f780
commit 6779b0ea25
72 changed files with 237 additions and 3592485 deletions

View File

@@ -45,7 +45,7 @@
color="primary"
icon="fab fa-telegram"
href="https://t.me/surya1977"
:label="`Contatta l'Assistenza (Paolo)`"
:label="`Contatta l'Assistenza (Surya)`"
>
</q-btn>

View File

@@ -1,9 +1,9 @@
const msg_website_it = {
ws: {
sitename: 'Gruppo Macro',
siteshortname: 'Gruppo Macro',
description: '',
keywords: '',
sitename: 'RISO',
siteshortname: 'RISO',
description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS',
},
hours: {
descr: 'Descrizione',
@@ -16,20 +16,29 @@ const msg_website_it = {
pages: {
home: 'Home',
profile: 'Profilo',
install_site: 'Installa Sito',
profile2: 'ProfiloU',
mypage2: 'mypage2',
myservice2: 'myservice2',
myhosps2: 'myhosps2',
mygood2: 'mygood2',
catalogo: 'Catalogo',
fundraising: 'Sostieni il Progetto',
notifs: 'Configura le Notifiche',
unsubscribe: 'Disiscriviti',
unsubscribe_user: 'Disiscriviti User',
test: 'Test',
projects: 'Progetti',
report: 'Report Ore',
producer: 'Produttore',
orderinfo: 'Ordini Effettuati',
products: 'Prodotti',
productslist: 'Lista Prodotti',
collabora: 'Collabora',
storehouses: 'Magazzino',
departments: 'Uffici',
orders: 'Ordini Ricevuti',
orders2: 'Ordini Ricevuti',
sharewithus: 'Condividi con Noi',
checkout: 'Carrello',
payment: 'Pagamenti',
regok: 'Registrazione Confermata',
presentazione: 'Presentazione',
presentazione2: 'Presentazione',
@@ -75,12 +84,14 @@ const msg_website_it = {
eventodef: 'Evento:',
prova: 'prova',
dbop: 'Operazioni',
dbopmacro: 'Operazioni Macro',
projall: 'Comunitari',
groups: 'Lista Gruppi',
projectsShared: 'Condivisi da me',
myprojects: 'Privati',
favproj: 'Favoriti',
admin_ecommerce: 'ECommerce',
ecommerce: 'Prodotti',
ecommerce_menu: 'ECommerce1',
hours: 'Ore',
department: 'Uffici',
title: 'Titolo',
@@ -109,11 +120,16 @@ const msg_website_it = {
onlyif_logged: 'Solo se Loggati',
only_residenti: 'Solo Residenti',
only_consiglio: 'Solo Consiglieri',
only_collab: 'Solo Collaboratori',
color: 'Colore',
mainMenu: 'Menu Principale',
subtitle: 'Sottotitolo',
lang: 'Lingua',
keywords: 'Parole Chiave',
desctiption: 'Descrizione',
heightimg: 'Altezza Immagine',
},
msg: {
myAppName: 'Più che Buono',
myAppName: 'Riso',
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...',
myDescriz: '',
@@ -172,18 +188,7 @@ const msg_website_it = {
descr: '<ul class="mylist" style="padding-left: 20px;">'
+ '<li>📱<strong>Condividendo la APP</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
+ '<li>👥 Aiutando a creare Gruppi Territoriali nella vostra città, impegnandosi a realizzare progetti per il Bene Comune, in onore ai principi Amorevoli e di condivisione.</li>'
+ '<li>🌱 Sostenendo le persone attorno a voi, e rispettando la nostra vera Casa: Madre Natura e Tutti gli Esseri Viventi. ❤️</li>'
+ '<li>👨🏻‍💻 Con una <strong>piccola donazione</strong> per le spese dei Server, manutenzione e per i continui sviluppi e miglioramenti</li></ul>' +
'1) Tramite <strong><a href="https://paypal.me/paoloarena" target="_blank">Paypal</a></strong>:<br>' +
'<br>2) Tramite <strong>Satispay</strong>: <a href="https://www.satispay.com/app/match/link/money-box/S6Y-SVN--62712D42-35B0-4BB9-8511-410C2AB8CD45" target="_blank">Clicca qui</a><br>' +
'<div style="font-size: 1rem; background-color: white; color: blue; border: solid 2px #f00; margin: 5px; padding: 5px; border-radius: 10px; " ' +
'class="row justify-around">' +
'Se ancora non hai Satispay <a href="https://www.satispay.com/promo/PAOLOARENA4">Richiedila cliccando qui</a></br>' +
'</div>' +
'<br>3) Tramite <strong>Bonifico Bancario</strong>:<br>' +
'(Scrivi a Surya (<a href="https://t.me/surya1977">@surya1977</a>) per le coordinate</br>' +
'' +
'4) In alternativa scegli tu una forma di Dono <br />' +
+ '<li>🌱 Sostenendo le persone attorno a voi, e rispettando la nostra vera Casa: Madre Natura e Tutti gli Esseri Viventi. ❤️</li>' +
'Grazie Mille per l\'Aiuto ed il Supporto' +
'<br>',
},

View File

@@ -1,6 +1,6 @@
/* GRUPPOMACRO APP
/* RISO APP
*/
import {
import type {
IListRoutes,
ILang,
IPreloadImages,
@@ -44,7 +44,6 @@ const firstPage = {
infooter: true,
}
function getDynamicPages(site: ISites): IListRoutes[] {
const baseroutes: IListRoutes[] = [
@@ -71,11 +70,34 @@ function getDynamicPages(site: ISites): IListRoutes[] {
},
{
active: true,
order: 400,
path: '/test-lungo',
materialIcon: 'fas fa-test',
name: 'mypages.test_lungo',
component: () => import('@src/views/testLungo/testLungo.vue'),
order: 12,
path: '/goods',
materialIcon: 'fas fa-tshirt',
name: 'mypages.goods',
component: () => import('@src/root/goods/goods.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/services',
materialIcon: 'fas fa-house-user',
name: 'mypages.services',
component: () => import('@src/root/services/services.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/activities',
materialIcon: 'fas fa-house-user',
name: 'mypages.activities',
component: () => import('@src/root/activities/activities.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
@@ -90,6 +112,17 @@ function getDynamicPages(site: ISites): IListRoutes[] {
inmenu: false,
infooter: false,
},
{
active: true,
order: 15,
path: '/hosps',
materialIcon: 'fas fa-bed',
name: 'mypages.hosp',
component: () => import('@src/root/hosp/hosp.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: site.confpages && site.confpages.enableCircuits,
order: 16,
@@ -102,7 +135,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
infooter: true,
},
{
active: site.confpages && site.confpages.enableEvents,
active: true,
order: 20,
path: '/events',
materialIcon: 'fas fa-bullhorn',
@@ -124,7 +157,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
infooter: false,
},
{
active: site.confpages && site.confpages.showProfile,
active: true,
order: 120,
path: '/myprofile',
materialIcon: 'fas fa-user',
@@ -135,7 +168,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
infooter: true,
},
{
active: site.confpages && site.confpages.showProfile,
active: true,
order: 120,
path: '/editprofile',
materialIcon: 'fas fa-user',
@@ -146,7 +179,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
infooter: false,
},
{
active: site.confpages && site.confpages.showiscrittiMenu,
active: true,
order: 130,
path: '/friends',
materialIcon: 'fas fa-user-friends',
@@ -241,6 +274,16 @@ function getDynamicPages(site: ISites): IListRoutes[] {
inmenu: false,
infooter: false,
},
{
active: true,
order: 150,
path: '/sostieniilprogetto',
materialIcon: 'fas fa-hand-holding-heart',
name: 'pages.fundraising',
component: () => import('@src/root/fundraising/fundraising.vue'),
inmenu: false,
infooter: false,
},
{
active: true,
order: 80,
@@ -259,7 +302,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
export function firstimagehome() {
let img = 'statics/images/background.jpg'
const img = 'statics/images/background.jpg'
return img
}

View File

@@ -1293,6 +1293,7 @@ export interface IProvince {
descr: string
card: string
link_grp: string
idCircuitToAssign?: string
link_telegram: string
}

View File

@@ -358,7 +358,8 @@ const msg_it = {
addedgroup: 'Aggiunto all\'Organizzazione',
addedfidocircuit: 'Fiducia abilitata al {circuitname}',
addedcircuit: 'Aggiunto al {circuitname}',
domanda_trusted: 'Ammetti {username}?',
ammissione_nuovo_ingresso: 'Ammissione nuovo ingresso:',
domanda_trusted: 'Ammetti {username} in {sitename}?',
domanda_reject: 'Non lo conosci? Vuoi rifiutare l\'accesso a {username}?',
trusted: 'Hai Accettato la Fiducia a {username}',
domanda_ask_friend: 'Chiedere l\'Amicizia a {username}?',
@@ -1436,6 +1437,7 @@ const msg_it = {
regs: 'Regioni',
link_grp: 'Link Territoriale',
card: 'Direz. Cardinale',
idCircuitToAssign: 'Circuito da Assegnare',
link_telegram: 'Link Telegram',
},
annunci: {
@@ -1834,7 +1836,7 @@ const msg_it = {
step_nomecognome: '<strong>Facoltativo</strong>: Per farti trovare dai tuoi amici puoi inserire anche un Nome o Soprannome',
step_circuito_title: '1) Circuito Provinciale',
step_circuito_italia_title: '2) Circuito Nazionale',
step_circuito: 'Entra nel Circuito del tuo territorio. Potrai così utilizzare il tuo conto personale in RIS, per scambiare Beni, Servizi, ecc.',
step_circuito: 'Entra nel Circuito del tuo territorio. Potrai così utilizzare il tuo <strong>conto personale in RIS</strong>, per scambiare Beni, Servizi, ecc.',
step_circuito_ok: 'Ottimo! Sei entrato nel Circuito del tuo territorio.',
step_circuito_italia_ok: 'Ottimo! Sei entrato nel Circuito RIS ITALIA !',
non_sono_dentro_al_mio_circuito: 'Per poter accedere al Circuito ITALIA è necessario prima essere stati accettati al Circuito Territoriale',

View File

@@ -195,15 +195,32 @@ export const useCircuitStore = defineStore('CircuitStore', {
},
getCircuitByProvinceAndCard(prov: string, card: string): ICircuit | undefined | null {
return this.listcircuits.find((rec: ICircuit) => rec.strProv === prov && ((rec.card === card) || (!card)))
// Controlla se questa provincia ha un circuito specifico
const globalStore = useGlobalStore();
const idCircuit = globalStore.getIdCircuitToAssignByProv(prov);
if (idCircuit) {
return this.getCircuitByCircuitId(idCircuit)
} else {
return this.listcircuits.find((rec: ICircuit) => rec.strProv === prov && ((rec.card === card) || (!card)))
}
},
getCircuitsByProvince(prov: string): ICircuit[] {
return this.listcircuits.filter((rec: ICircuit) => rec.strProv === prov)
const globalStore = useGlobalStore();
const idCircuit = globalStore.getIdCircuitToAssignByProv(prov);
if (idCircuit) {
return this.listcircuits.filter((rec: ICircuit) => rec._id === idCircuit)
} else {
return this.listcircuits.filter((rec: ICircuit) => rec.strProv === prov)
}
},
getCircuitsNameByProvince(prov: string): ICircuit[] {
const filterarr = this.listcircuits.filter((rec: ICircuit) => rec.strProv === prov)
const filterarr = this.getCircuitsByProvince(prov);
let arrcirc = filterarr.map((subArray: any) => {
return subArray.name;
})

View File

@@ -1011,6 +1011,12 @@ export const colProvinces = [
AddCol({ name: 'reg', label_trans: 'city.reg' }),
AddCol({ name: 'prov', label_trans: 'city.prov' }),
AddCol({ name: 'card', label_trans: 'city.card' }),
AddCol({
name: 'idCircuitToAssign', label_trans: 'city.idCircuitToAssign',
fieldtype: costanti.FieldType.select,
jointable: 'listcircuits',
}),
AddCol({ name: 'descr', label_trans: 'store.description' }),
AddCol({ name: 'lat', label_trans: 'city.lat' }),
AddCol({ name: 'long', label_trans: 'city.long' }),

View File

@@ -6122,10 +6122,11 @@ export const tools = {
$q.dialog({
message: t(value ? 'db.domanda_trusted' : 'db.domanda_reject', {
username: usernameDest,
sitename: t('ws.sitename'),
}),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda'),
title: t('db.ammissione_nuovo_ingresso'),
}).onOk(() => {
userStore
.setFriendsCmd(

View File

@@ -483,6 +483,13 @@ export const useGlobalStore = defineStore('GlobalStore', {
return arrprov && arrprov.length > 0;
},
getIdCircuitToAssignByProv: (state: IGlobalState) => (myprov: string): string => {
const arrprov: any[] = state.provinces.filter(
(recprov: IProvince) => recprov.prov === myprov && !!recprov.idCircuitToAssign
);
return arrprov && arrprov.length > 0 ? arrprov[0].idCircuitToAssign : '';
},
getRespByUsername: (state: IGlobalState) => (username: string) => {
const rec = state.resps.find((recin: any) => recin.username === username);
return !!rec ? rec.name + ' ' + rec.surname : '';