- fix zona provinciale

- email abilitazione circuito: invio email ad admin
- admin che abilita la fiducia cliccando sul bottone
This commit is contained in:
Surya Paolo
2025-11-27 23:51:43 +01:00
parent 1bd41058a6
commit cfb830a0ad
19 changed files with 710 additions and 79 deletions

View File

@@ -138,8 +138,8 @@
</div>
<h3 class="card-title">App già installata! 🎉</h3>
<p class="card-description">
Ottimo! Stai già usando RISO come app installata. Puoi accedere sempre dalla
tua schermata home.
Ottimo! Stai già usando l'App installata. Puoi accedere sempre dalla
tua schermata Home.
</p>
<div class="benefits-list">

View File

@@ -15,7 +15,7 @@ import type { ISpecialField } from '@src/model'
export default defineComponent({
name: 'CMySelectCity',
emits: ['update:modelValue'],
emits: ['update:modelValue', 'changevalRec'],
props: {
modelValue: [String, Number, Object],
label: {
@@ -109,8 +109,10 @@ export default defineComponent({
}
function changevalRec(newval: any) {
if (props.db_type > 0)
if (props.db_type > 0) {
setValDb($q, props.db_field, newval, props.db_type, false, props.table, props.db_subfield, props.db_id, 0, props.db_subsubfield, props.db_specialField)
emit('changevalRec')
}
}

View File

@@ -291,7 +291,9 @@ export default defineComponent({
disabled: false,
title: 'Verifica Telegram',
description:
'Collega il tuo account Telegram per partecipare alle community RISO ed essere contattato!',
'Collega il tuo account Telegram per partecipare alle community ' +
tools.sitename() +
' ed essere contattato!',
completed: isTelegramVerified.value,
avatar: {
color: isTelegramVerified.value ? 'positive' : telegramStatus.value.color,
@@ -572,16 +574,22 @@ export default defineComponent({
$q.dialog({
title: 'Perché Telegram?',
message:
'<p><strong>RISO utilizza Telegram per connettere la sua community in tutta Italia!</strong></p>' +
'<p><strong>' +
tools.sitename() +
' utilizza Telegram per connettere la sua community in tutta Italia!</strong></p>' +
'<p style="margin-top: 12px;">' +
'✅ Contatta direttamente i membri usando il bottone "Messaggia"<br>' +
'✅ Chat provinciali e nazionali RISO attive<br>' +
'✅ Chat provinciali e nazionali' +
tools.sitename() +
' attive<br>' +
'✅ Migliaia di utenti con cui interagire<br>' +
'✅ Eventi, iniziative e aggiornamenti in tempo reale<br>' +
'✅ Gruppi ampi senza limiti WhatsApp<br>' +
'✅ Gratuito, sicuro e senza pubblicità' +
'</p>' +
'<p style="margin-top: 12px;"><em>Unisciti alla community su Telegram e scopri tutto quello che RISO ha da offrire!</em></p>',
'<p style="margin-top: 12px;"><em>Unisciti alla community su Telegram e scopri tutto quello che ' +
tools.sitename() +
' ha da offrire!</em></p>',
html: true,
options: {
type: 'radio',
@@ -638,16 +646,22 @@ export default defineComponent({
$q.dialog({
title: 'Perché Telegram?',
message:
'<p><strong>RISO utilizza Telegram per connettere la sua community in tutta Italia!</strong></p>' +
'<p><strong>' +
tools.sitename() +
' utilizza Telegram per connettere la sua community in tutta Italia!</strong></p>' +
'<p style="margin-top: 12px;">' +
'✅ Contatta direttamente i membri usando il bottone "Messaggia"<br>' +
'✅ Chat provinciali e nazionali RISO attive<br>' +
'✅ Chat provinciali e nazionali ' +
tools.sitename() +
' attive<br>' +
'✅ Migliaia di utenti con cui interagire<br>' +
'✅ Eventi, iniziative e aggiornamenti in tempo reale<br>' +
'✅ Gruppi ampi senza limiti WhatsApp<br>' +
'✅ Gratuito, sicuro e senza pubblicità' +
'</p>' +
'<p style="margin-top: 12px;"><em>Unisciti alla community su Telegram e scopri tutto quello che RISO ha da offrire!</em></p>',
'<p style="margin-top: 12px;"><em>Unisciti alla community su Telegram e scopri tutto quello che ' +
tools.sitename() +
' ha da offrire!</em></p>',
html: true,
ok: {
label: 'Chiudi',
@@ -825,6 +839,29 @@ export default defineComponent({
contact.value.profile.resid_str_comune = '';
}
// Se la provincia selezionata non esiste, mostra comunque il primo Circuito in cui si è entrati !
if (!strProv.value && contact.value.profile.mycircuits.length >= 0) {
mycircuit.value = circuitStore.getCircuitByName(
contact.value.profile.mycircuits[0].circuitname
);
}
if (!globalStore.isPresenteCardsByProv(strProv.value)) {
if (contact.value && contact.value.profile.resid_card) {
contact.value.profile.resid_card = '';
}
}
if (card.value) {
circuitsel.value = card.value;
}
// Initialize circuits based on residence
if (strProv.value) {
mylistcircuits.value = circuitStore.getCircuitsNameByProvince(strProv.value);
updateCircuito()
}
// Trova il primo step non completato e aprilo
const firstIncompleteIndex = orderedSteps.value.findIndex(
(step) => !step.completed
@@ -842,39 +879,28 @@ export default defineComponent({
watch(
() => strProv.value,
(newval: string) => {
mycircuit.value = circuitStore.getCircuitByProvinceAndCard(
strProv.value,
card.value
);
// Se la provincia selezionata non esiste, mostra comunque il primo Circuito in cui si è entrati !
if (!strProv.value && contact.value.profile.mycircuits.length >= 0) {
mycircuit.value = circuitStore.getCircuitByName(
contact.value.profile.mycircuits[0].circuitname
);
}
if (!globalStore.isPresenteCardsByProv(strProv.value)) {
if (contact.value && contact.value.profile.resid_card) {
contact.value.profile.resid_card = '';
}
}
updateCircuito()
updateContact();
}
);
watch(
() => card.value,
() => {
mycircuit.value = circuitStore.getCircuitByProvinceAndCard(
strProv.value,
card.value
);
}
() => { updateCircuito()}
);
const updateCircuito = () => {
mycircuit.value = circuitStore.getCircuitByProvinceAndCard(
strProv.value,
card.value
);
};
watch(
() => circuitsel.value,
() => {
if (circuitsel.value) {
mycircuit.value = circuitStore.getCircuitByName(circuitsel.value);
updateCircuito()
}
}
);
@@ -928,15 +954,11 @@ export default defineComponent({
if (userStore.isUserOk()) {
updateContact();
// Initialize circuits based on residence
if (contact.value?.profile.resid_province) {
mylistcircuits.value = circuitStore.getCircuitsNameByProvince(strProv.value);
mycircuit.value = circuitStore.getCircuitByProvinceAndCard(
strProv.value,
card.value
);
}
if (!mycircuit.value && !strProv.value && contact.value.profile.mycircuits.length >= 0) {
if (
!mycircuit.value &&
!strProv.value &&
contact.value.profile.mycircuits.length >= 0
) {
mycircuit.value = circuitStore.getCircuitByName(
contact.value.profile.mycircuits[0].circuitname
);
@@ -944,6 +966,14 @@ export default defineComponent({
}
});
function updateZona(newval: any) {
if (circuitsel.value) {
contact.value.profile.resid_card = circuitsel.value;
userStore.saveZona($q, t, contact.value._id, contact.value.profile.resid_card);
}
}
onBeforeUnmount(() => {
stopPolling();
});
@@ -1015,6 +1045,7 @@ export default defineComponent({
updateContact,
strProv,
isCurrentStepComune,
updateZona,
};
},
});

View File

@@ -198,7 +198,7 @@
<!-- Contenuto Circuito Locale -->
<template v-if="stepConfig.key === 'circuit'">
<div v-if="stepResidence.checkOk()">
<CMySelectCity
<!--CMySelectCity
v-if="
globalStore.isPresenteCardsByProv(contact.profile.resid_province)
"
@@ -214,7 +214,8 @@
:db_rec="contact"
:value2="contact.profile.resid_province"
class="q-mt-md"
/>
@changevalRec="updateContact"
/>-->
<p v-if="contact.profile.resid_province" class="step-description">
Entra nel circuito locale per scambiare beni e servizi con le persone
@@ -225,7 +226,7 @@
⚠️ Attenzione: Se non si sceglie il Comune di Residenza (il passaggio precedente) non è possibile poter scegliere la Provincia in cui accedere al Circuito RIS del tuo territorio.
</div>
<div v-if="mycircuit">mycircuit.value: {{ mycircuit.name }}</div>
<q-select
v-if="mylistcircuits && mylistcircuits.length > 1"
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
@@ -236,6 +237,7 @@
:options="mylistcircuits"
label="Scegli il Circuito della tua Zona"
class="modern-select q-mb-md"
@change="updateZona"
/>
<CMyCircuit

View File

@@ -99,7 +99,7 @@
/>
<div class="text-h6 q-mt-md">Configura Username Telegram</div>
<p class="q-mt-sm">
Vai su <strong>BOT RISO</strong> Telegram ed imposta l'Username.
Vai su <strong>BOT {{tools.sitename()}}</strong> Telegram ed imposta l'Username.
</p>
<q-btn
unelevated
@@ -736,7 +736,7 @@
color="primary"
class="q-mr-sm"
/>
<div class="text-h6">Come entrare in RISO</div>
<div class="text-h6">Come entrare in {{tools.sitename()}}</div>
<q-space />
<q-btn
icon="close"
@@ -757,13 +757,13 @@
/>
<div>
<p class="text-weight-medium q-mb-sm">
Per accedere a RISO hai bisogno di un invito
Per accedere a {{ tools.sitename() }} hai bisogno di un invito
</p>
<p class="text-body2">L'invito può essere di due tipi:</p>
<ul class="invitation-types">
<li>
<strong>Username dell'invitante:</strong> inserisci lo username di chi
ti ha parlato di RISO
ti ha parlato di {{tools.sitename()}}
</li>
<li>
<strong>Link di registrazione:</strong> usa il link personale che ti è
@@ -781,7 +781,7 @@
color="secondary"
/>
<div>
<p class="text-weight-medium q-mb-sm">Non conosci nessuno di RISO?</p>
<p class="text-weight-medium q-mb-sm">Non conosci nessuno di {{tools.sitename()}}?</p>
<p class="text-body2">
Nessun problema! Puoi unirti alla comunità attraverso i nostri gruppi
territoriali su Telegram oppure contattarci direttamente via email. Saremo

View File

@@ -91,9 +91,9 @@
<q-expansion-item expand-separator group="somegroup" icon="fas fa-medal"
:label="$t('statusreg.lastsharedlink')" header-class="text-purple">
<div>
<div class="text-center text-bold text-h6">Unisciti a RISO</div>
<div class="text-center text-bold text-h6">Unisciti a {{tools.sitename()}}</div>
<div class="text-center">
Se ancora non sei registrato a RISO, scegli un invitante che
Se ancora non sei registrato a {{tools.sitename()}}, scegli un invitante che
conosci. Questa persona dovrà ammetterti per permetterti di
accedere alle funzionalità.
</div>
@@ -187,11 +187,11 @@
<q-card-section>
<div class="q-pa-md" style="max-width: 350px; margin: auto">
<div class="text-center text-bold text-h6">
Aiuta RISO a crescere
Aiuta {{tools.sitename()}} a crescere
</div>
<div class="text-center">
Condividi il tuo link d'invito, alimentando nuovi ingressi
alla RETE Solidale di RISO.
alla RETE Solidale di {{tools.sitename()}}.
</div>
<q-list bordered>
<TransitionGroup name="fade" appear enter-active-class="animazione fadeIn"

View File

@@ -141,7 +141,7 @@ export default defineComponent({
if (navigator.share) {
try {
await navigator.share({
title: 'Progetto RISO',
title: tools.sitename(),
text: messaggioBase,
});