Aggiornamenti

This commit is contained in:
Paolo Arena
2020-07-04 10:54:05 +02:00
parent 2fc89ebc82
commit e526231576
30 changed files with 975 additions and 249 deletions

View File

@@ -71,13 +71,8 @@
Cuore desidera ardentemente?
</li>
<li>Attivare almeno <strong>2 metodi di pagamento</strong>.
<strong>PayPal</strong> è obbligatorio (occorrono 2 minuti per attivarlo).
Ti consente trasferimenti gratuiti in area Euro e puoi collegarci carte e conti
correnti. I tuoi dati sono al sicuro e non condivisi con il ricevente.
Sono consigliati il conto <strong>Revolut</strong> o <strong>N26</strong> come seconda opzione e
<strong>Western
Union</strong>, Xoom o TransferWise nei casi di
regali extraeuropei.
<strong>Revolut</strong> è quello maggiormente consigliato.<br>
Come seconda scelta c'è Paypal, ma ultimamente stiamo avendo problemi perchè tendono a bloccare i soldi sul conto per 6 mesi per controlli, quindi da utilizzare solo se impossiblitati ad aprire un conto con Revolut.
</li>
</ol>

View File

@@ -342,6 +342,11 @@
</q-slider>
</q-item-section>
<q-item-section avatar>
<!--{{tools.getlastnavestr(dashboard.lastnave) }} &nbsp;-->
{{ getNaveSognatoreStr(mianave)}}
<q-icon color="purple" name="fas fa-ship"></q-icon>
</q-item-section>
<q-item-section avatar>
<q-icon color="blue" name="fas fa-flag-checkered"></q-icon>
</q-item-section>

View File

@@ -29,6 +29,7 @@ export default class CMyFlotta extends MixinNave {
public flotta: any = null
public flotta_completa: any = null
public arrdonatori: any[] = []
public arrmediatori: any[] = []
public loading: boolean = false
public seluser = null
public showmsguser: boolean = false
@@ -43,6 +44,9 @@ export default class CMyFlotta extends MixinNave {
public username_sostituire: string = ''
public userfreestr: string = ''
public tuttiidoni: boolean = false
public showcommenti: boolean = true
public showcolmodifica: boolean = false
public showcoldati: boolean = false
public inviaemail: boolean = false
public seldonatore = null
public ordinamento: string = 'data'
@@ -55,6 +59,7 @@ export default class CMyFlotta extends MixinNave {
public tutorslo: string = ''
public date_start: Date = null
public date_close: Date = null
public revolut: string = ''
public email_paypal: string = ''
public note_payment: string = ''
public link_payment: string = ''
@@ -129,12 +134,19 @@ export default class CMyFlotta extends MixinNave {
this.date_start = this.flotta.date_start
this.date_close = this.flotta.date_close
this.note_payment = this.flotta.note_payment
this.revolut = this.flotta.revolut
this.email_paypal = this.flotta.email_paypal
this.link_payment = this.flotta.link_payment
this.link_superchat = this.flotta.link_superchat
}
}
public addstrnaveseprovv() {
if (this.flotta.provvisoria)
return ' (La FLOTTA è ancora Provvisoria !) '
return ''
}
public getflottastr() {
if (!!this.flotta) {
let mystr = ''
@@ -142,12 +154,24 @@ export default class CMyFlotta extends MixinNave {
mystr += ' Provvisoria '
mystr += 'Da ' + this.flotta.riga + '.' + Math.ceil(this.flotta.col_prima / 8) + ' a ' + this.flotta.riga + '.' + Math.ceil(this.flotta.col_ultima / 8)
let perc = 0;
if (this.flotta.DoniTotali > 0) {
perc = Math.round((this.flotta.DoniConfermati / this.flotta.DoniTotali) * 100)
let perc = 0
let conf = 0
let tot = 0
if (this.arrdonatori.length > 0) {
tot = this.getDoniTotali()
conf = this.getDoniConfermati()
} else {
tot = this.flotta.DoniTotali
conf = this.flotta.DoniConfermati
}
mystr += ' (' + this.flotta.DoniConfermati + '/' + this.flotta.DoniTotali + ') [' + perc + '%]'
if (tot > 0) {
perc = Math.round((conf / tot) * 100)
}
mystr += ' (' + conf + '/' + tot + ') [' + perc + '%]'
if (!!this.flotta.sognatore_nomecognome)
mystr += ' - ' + this.flotta.sognatore_nomecognome
@@ -174,7 +198,7 @@ export default class CMyFlotta extends MixinNave {
else if (this.flotta.DoniConfermati === this.flotta.DoniTotali && this.flotta.DoniTotali > 0)
return 'bg-green'
else if (this.flotta.DoniConfermati <= this.flotta.DoniTotali)
return 'bg-blue'
return 'bg-red'
else
return 'bg-blue'
}
@@ -194,6 +218,7 @@ export default class CMyFlotta extends MixinNave {
if (!!ris) {
this.arrdonatori = ris.arrdonatori
this.arrmediatori = ris.arrmediatori
this.flotta = ris.flotta
this.flotta.log_attivita = this.flotta.log_attivita.replace(/\n/g, '<br>')
@@ -212,27 +237,49 @@ export default class CMyFlotta extends MixinNave {
return this.seluser.name + ' (' + this.seluser.surname + ') è stato sostituito con ' + this.username_sostituire
}
public getnavestr(row, index) {
return tools.getRiganave(row.riga) + '.' + tools.getColnave(row.col) + ' D' + (((row.col - 1) % 8) + 1)
public getnave(row) {
return tools.getRiganave(row.riga) + '.' + tools.getColnave(row.col)
}
public HoRicevutoIlDono(rec) {
public getnavestr(row, index) {
let flottastr = tools.getRiganave(row.riga) + '.' + tools.getColnave(row.col) + ' D' + (((row.col - 1) % 8) + 1)
if (this.showcoldati) {
flottastr += ' ' + row.riga + '.' + row.col
}
return flottastr
}
public getwidthpos() {
return (this.showcoldati) ? '80' : '60'
}
public HoRicevutoIlDono(rec, annulla) {
this.seldonatore = rec
const msgtitle = this.$t('dashboard.dono_ricevuto_2')
const msginvia = this.$t('dashboard.confermi_dono_ricevuto', {
donatore: rec.name + ' ' + rec.surname
})
let mymsg = this.$t('dashboard.confermi_dono_ricevuto_msg', {
donatore: rec.name + ' ' + rec.surname + ' (' + this.$t('dashboard.posizione') + ' ' + rec.riga + '.' + rec.col + ')'
})
mymsg += ' [' + rec.riga + '.' + rec.col + ']'
let msgtitle = ''
let msginvia = ''
let mymsg = ''
if (annulla) {
msgtitle = 'Annulla la ricezione del dono'
msginvia = `Confermi di annullare il Dono da parte di ${rec.name} ${rec.surname} (${rec.username})'`
mymsg = ''
} else {
msgtitle = this.$t('dashboard.dono_ricevuto_2')
msginvia = this.$t('dashboard.confermi_dono_ricevuto', {
donatore: rec.name + ' ' + rec.surname
})
mymsg = this.$t('dashboard.confermi_dono_ricevuto_msg', {
donatore: rec.name + ' ' + rec.surname + ' (' + this.$t('dashboard.posizione') + ' ' + rec.riga + '.' + rec.col + ')'
})
mymsg += ' [' + rec.riga + '.' + rec.col + ']'
}
tools.askConfirm(this.$q, msgtitle, msginvia + ' ' + '? (Pos ' + rec.riga + '.' + rec.col + ')', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.DONO_RICEVUTO, 0, {
param1: {
_id: rec._id,
made_gift: true,
made_gift: !annulla,
annulla,
riga: rec.riga,
col: rec.col
},
@@ -288,6 +335,9 @@ export default class CMyFlotta extends MixinNave {
public async InviaMsgAFlotta(inviareale, tipomsg, msg) {
if ((tipomsg === tools.TipoMsg.SEND_MSG_EFFETTUA_IL_DONO) || (tipomsg === tools.TipoMsg.SEND_MSG_SOLLECITO_DONATORI_NO_DONO)) {
msg = this.addstrnaveseprovv() + msg
}
const msgtitle = msg
tools.askConfirm(this.$q, msgtitle, msg, translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.INVIA_MSG_A_FLOTTA, 0, {
@@ -314,12 +364,97 @@ export default class CMyFlotta extends MixinNave {
}
get getarr() {
let myarr = []
if (this.ordinamento === 'data')
return this.arrdonatori.sort((a, b) => tools.gettimestampstrDate(a.date_made_gift) - tools.gettimestampstrDate(b.date_made_gift) * (this.direzordin))
myarr = this.arrdonatori.sort((a, b) => tools.gettimestampstrDate(a.date_made_gift) - tools.gettimestampstrDate(b.date_made_gift) * (this.direzordin))
else if (this.ordinamento === 'num')
return this.arrdonatori.sort((a, b) => a.col - b.col * (this.direzordin))
myarr = this.arrdonatori.sort((a, b) => a.col - b.col * (this.direzordin))
else if (this.ordinamento === 'nationality')
myarr = this.arrdonatori.sort((a, b) => ('' + a.profile.nationality).localeCompare(b.profile.nationality) * (this.direzordin))
else
myarr = this.arrdonatori
return this.arrdonatori
return myarr.filter((rec) => ((!this.tuttiidoni && !rec.made_gift) || (this.tuttiidoni)))
}
public exportLista() {
let mystr = ''
let nave = ''
for (const rec of this.getarr) {
if (this.getnave(rec) !== nave) {
nave = this.getnave(rec)
mystr += '\n' + nave + ': ' + '\n'
}
if (rec.made_gift) {
mystr += '✅🎁'
} else {
if (!rec.date_made_gift) {
mystr += ' 👉🏻 '
} else {
mystr += ' 🎁 '
}
}
if (rec.profile.nationality === 'IT')
mystr += '🇮🇹'
else if (rec.profile.nationality === 'SI')
mystr += '🇸🇮'
else if (rec.profile.nationality === 'HR')
mystr += '🇭🇷'
else if (rec.profile.nationality === 'FR')
mystr += '🇫🇷'
else if (rec.profile.nationality === 'ES')
mystr += '🇪🇸'
else if (rec.profile.nationality === 'PT')
mystr += '🇵🇹'
else if (rec.profile.nationality === 'DE')
mystr += '🇩🇪'
else if (rec.profile.nationality === 'UK')
mystr += '🇬🇧'
else if (rec.profile.nationality === 'GB')
mystr += '🇬🇧'
else if (rec.profile.nationality === 'IE')
mystr += '🇮🇪'
else if (rec.profile.nationality === 'KE')
mystr += '🇰🇪'
else if (rec.profile.nationality === 'AU')
mystr += '🇦🇺'
else if (rec.profile.nationality === 'CM')
mystr += '🇨🇲'
else if (rec.profile.nationality === 'CO')
mystr += '🇨🇴'
else if (rec.profile.nationality === 'BR')
mystr += '🇧🇷'
else if (rec.profile.nationality === 'PL')
mystr += '🇵🇱'
else if (rec.profile.nationality === 'VE')
mystr += '🇻🇪'
else
mystr += '(' + rec.profile.nationality + ')'
mystr += ' ' + rec.name + ' ' + rec.surname + ' (' + rec.username + ')'
mystr += '\n'
}
tools.copyStringToClipboard(this, mystr, false)
}
public getDoniAttesaDiConferma() {
return this.arrdonatori.filter((rec) => (!!rec.date_made_gift && !rec.made_gift)).reduce((sum, item) => sum + 1, 0)
}
public getDoniTotali() {
return this.arrdonatori.filter((rec) => (!!rec)).reduce((sum, item) => sum + 1, 0)
}
public getDoniConfermati() {
return this.arrdonatori.filter((rec) => rec.made_gift).reduce((sum, item) => sum + 1, 0)
}
public getDoniMancanti() {
return this.arrdonatori.filter((rec) => (!rec.made_gift && !rec.date_made_gift)).reduce((sum, item) => sum + 1, 0)
}
public setordin(ord) {
@@ -465,7 +600,7 @@ export default class CMyFlotta extends MixinNave {
if (!!this.flotta)
open = (this.flotta.riga.toString() === this.last_riga_aperto) && (this.flotta.col_prima.toString() === this.last_col_aperto)
console.log('isaperto', open, 'lastriga = ', this.last_riga_aperto, this.flotta.riga, 'last_col_aperto', this.last_col_aperto, this.flotta.col_prima)
// console.log('isaperto', open, 'lastriga = ', this.last_riga_aperto, this.flotta.riga, 'last_col_aperto', this.last_col_aperto, this.flotta.col_prima)
return open
}
@@ -480,4 +615,19 @@ export default class CMyFlotta extends MixinNave {
this.loading = true
}
public getnamebyrec(rec) {
let mystr = rec.name + ' ' + rec.surname
if (this.showcoldati)
mystr += ' (' + rec.username + ')'
return mystr
}
public getwidthnome() {
if (this.showcoldati)
return 'width: 250px; '
else
return 'width: 200px; '
}
}

View File

@@ -18,17 +18,6 @@
<CDateTime
label="Data Inizio"
class="cursor-pointer"
:value.sync="date_close"
:readonly="false"
:minuteinterval="30"
:dense="true"
:canEdit="true"
@savetoclose="change_field('date_close')">
</CDateTime>
<CDateTime
label="Data Fine"
class="cursor-pointer"
:value.sync="date_start"
:readonly="false"
:minuteinterval="30"
@@ -36,6 +25,17 @@
:canEdit="true"
@savetoclose="change_field('date_start')">
</CDateTime>
<CDateTime
label="Data Fine"
class="cursor-pointer"
:value.sync="date_close"
:readonly="false"
:minuteinterval="30"
:dense="true"
:canEdit="true"
@savetoclose="change_field('date_close')">
</CDateTime>
</div>
<q-tabs
@@ -90,6 +90,13 @@
debounce="1000"
@input="change_field('email_paypal')">
</q-input>
<q-input v-model="revolut" style="max-width: 300px;" label="Revolut:"
filled dense
:readonly="true"
debounce="1000"
@input="change_field('revolut')">
</q-input>
<q-input standout bottom-slots
v-model="link_payment" style="max-width: 400px;" label="Link per Paypal.me:"
@@ -99,7 +106,7 @@
@input="change_link_payment">
<q-btn round dense flat icon="send"
type="a" :href="link_payment"
type="a" :href="tools.getlinkstd(link_payment)"
target="_blank" color="primary">
</q-btn>
</q-input>
@@ -162,6 +169,34 @@
</q-tab-panel>
<q-tab-panel name="mediatore">
<div>
<strong>MEDIATORI:</strong>
<br>
<div v-for="(rec, index) of arrmediatori">
<div class="row justify-center q-px-xs content-center" style="max-width: 350px;">
<div style="width: 30px;">
{{index + 1}}
</div>
<div :style="`color: blue; ` + getwidthnome()">
<q-btn v-if="!!rec.profile" flat rounded dense color="blue"
:size="tools.getsizesmall()"
:label=getnamebyrec(rec)
@click="viewdashboard(rec)">
</q-btn>
</div>
<div style="color: blue; width: 40px;">
<q-btn color="blue"
dense
size="md"
label="Msg"
@click="clickseluser(rec)">
</q-btn>
</div>
</div>
</div>
</div>
<div class="row q-pa-sm q-ma-sm" style="max-width: 450px;">
<div class="q-pa-sm">
<q-btn rounded text-color="secondary" icon="fab fa-telegram"
@@ -171,7 +206,7 @@
</div>
<div class="q-pa-sm">
<q-btn rounded color="primary" icon="fab fa-telegram"
:label="$t('dialog.sendmsg') + ` a Tutti Donatori`"
:label="$t('dialog.sendmsg') + ` a Tutti Mediatori`"
@click="InviaMsgAFlotta(true, tools.TipoMsg.SEND_MSG_A_MEDIATORI, 'Inviare ai Mediatori?')"></q-btn>
</div>
</div>
@@ -211,18 +246,22 @@
</q-tab-panel>
</q-tab-panels>
<q-field rounded outlined bg-color="orange-3" dense>
<div class="justify-evenly" style="max-width: 300px;">
<strong>Legenda dei codici speciali da inserire nei messaggi: </strong>
<div>{link_paypalme}</div>
<div>{link_superchat}</div>
<div>{tutor1}</div>
<div>{tutor2}</div>
<div>{tutor3}</div>
<div>{tutorslo}</div>
<div>{sognatore}</div>
</div>
</q-field>
<div v-if="tools.isAdmin()">
<q-field rounded outlined bg-color="orange-3" dense>
<div class="justify-evenly" style="max-width: 300px;">
<strong>Legenda dei codici speciali da inserire nei messaggi: </strong>
<div>{link_paypalme}</div>
<div>{link_superchat}</div>
<div>{tutor1}</div>
<div>{tutor2}</div>
<div>{tutor3}</div>
<div>{tutorslo}</div>
<div>{date_start}</div>
<div>{date_close}</div>
<div>{sognatore}</div>
</div>
</q-field>
</div>
</q-tab-panel>
<q-tab-panel name="flotta">
@@ -233,9 +272,23 @@
</q-toggle>
<q-toggle v-model="showcommenti"
label="Mostra i Commenti">
</q-toggle>
<q-toggle v-model="showcolmodifica"
label="Modifica">
</q-toggle>
<q-toggle v-model="showcoldati"
label="Mostra Dati Extra">
</q-toggle>
<div v-if="!!flotta" class="text-evidente bordo_stondato justify-between q-pa-xs-sm">
<div class="">
<q-btn rounded color="blue"
SOGNATORE:
<q-btn rounded color="green"
:label="flotta.sognatore_nomecognome + ' ' + ' (' + flotta.sognatore + ')'"
@click="viewdashboard({username: flotta.sognatore })">
</q-btn>
@@ -244,24 +297,34 @@
<div class="">
<div>
{{$t('dashboard.doni_ricevuti')}}:
<span class="ricevuti dati">{{flotta.DoniConfermati}}</span>
<span class="ricevuti dati">{{getDoniConfermati()}}</span>
</div>
</div>
<div class="">
<div class="inviati">
{{$t('dashboard.doni_inviati_da_confermare')}}:
<span class="inviati dati">{{flotta.DoniAttesaDiConferma}}</span>
<span class="inviati dati">{{getDoniAttesaDiConferma()}}</span>
</div>
</div>
<div class="">
<div class="">
{{$t('dashboard.doni_mancanti')}}:
<span class="mancanti dati">{{flotta.DoniMancanti}}</span>
<span class="mancanti dati">{{getDoniMancanti()}}</span>
</div>
</div>
</div>
<q-btn
rounded
dense
color="primary"
size="md"
label="Copia questa Lista negli appunti"
@click="exportLista()">
</q-btn>
<div class="row">
<div class="row justify-center q-px-xs content-center">
<div style="width: 40px;">
@@ -291,22 +354,40 @@
<div style="width: 80px;">
Esegui
</div>
<div style="width: 40px;">
<div v-if="showcolmodifica" style="width: 80px;">
Annulla
</div>
<div v-if="showcoldati" style="width: 70px;">
Nave Posiz
</div>
<div v-else style="width: 40px;">
Nave
</div>
<div style="width: 250px;">
Nome Cognome (Username)
<div style="width: 30px;">
<q-btn
flat
rounded
dense
color="primary"
size="md"
label="Nat"
@click="setordin('nationality')">
</q-btn>
</div>
<div style="width: 40px;">
<div :style="getwidthnome()">
Nome Cognome
</div>
<div v-if="showcoldati" style="width: 40px;">
Tess
</div>
<div style="width: 40px;">
<div v-if="showcoldati" style="width: 40px;">
Msg
</div>
<div style="width: 60px;">
<div v-if="showcolmodifica" style="width: 60px;">
Sostituisci
</div>
<div style="width: 100px;">
<div v-if="showcommenti" style="width: 100px;">
Commenti
</div>
@@ -315,8 +396,7 @@
<div class="row" v-for="(rec, index) of getarr">
<div class="row justify-center q-px-xs content-center"
v-if="(!tuttiidoni && !rec.made_gift) || (tuttiidoni)">
<div class="row justify-center q-px-xs content-center">
<div class="row items-center q-mx-md justify-between" style="padding: 2px;">
<div style="width: 40px;">
{{index + 1}}
@@ -334,7 +414,7 @@
size="md"
:label="$t('dashboard.dono_ricevuto_3', {donatore: rec.name })"
@click="HoRicevutoIlDono(rec)">
@click="HoRicevutoIlDono(rec, false)">
</q-btn>
</div>
<div v-if="rec.made_gift">
@@ -348,7 +428,17 @@
</q-chip>
</div>
</div>
<div style="color: blue; width: 60px;">
<div v-if="showcolmodifica" style="width: 80px;">
<q-btn v-if="rec.made_gift || rec.date_made_gift"
rounded
dense
color="negative"
size="md"
label="Annulla"
@click="HoRicevutoIlDono(rec, true)">
</q-btn>
</div>
<div :style="`color: blue; width: ` + getwidthpos() + `;`">
<q-btn rounded color="blue"
flat
dense
@@ -357,17 +447,22 @@
@click="Mostraplacca(tools.getRiganave(rec.riga), tools.getColnave(rec.col))">
</q-btn>
</div>
<div style="color: blue; width: 250px;">
<div style="width: 30px;">
<q-avatar v-if="tools.geticon(rec.profile.nationality)" :class="tools.geticon(rec.profile.nationality)"
size="sm">
</q-avatar>
</div>
<div :style="`color: blue; ` + getwidthnome()">
<q-btn v-if="!!rec.profile" flat rounded dense color="blue"
:size="tools.getsizesmall()"
:label="rec.name + ' ' + rec.surname + ' (' + rec.username + ')'"
:label=getnamebyrec(rec)
@click="viewdashboard(rec)">
</q-btn>
</div>
<div v-if="!tools.isMobile()">
<div v-if="showcoldati && !tools.isMobile()">
({{ rec.num_tess }})
</div>
<div style="color: blue; width: 40px;">
<div v-if="showcolmodifica" style="color: blue; width: 40px;">
<q-btn color="blue"
dense
size="md"
@@ -375,7 +470,7 @@
@click="clickseluser(rec)">
</q-btn>
</div>
<div style="color: blue; width: 70px;">
<div v-if="showcolmodifica" style="color: blue; width: 70px;">
<q-btn color="red"
dense
size="md"
@@ -384,9 +479,12 @@
</q-btn>
</div>
</div>
<div v-if="!!rec.commento_al_sognatore" class="wrap">
<div v-if="showcommenti && !!rec.commento_al_sognatore" class="wrap">
{{ rec.commento_al_sognatore }}
</div>
<div v-if="showcoldati && !!rec.ind_order" class="wrap">
({{ rec.ind_order }})
</div>
</div>
</div>

View File

@@ -13,11 +13,12 @@ import { CMyChipList } from '../CMyChipList'
import { CVideo } from '../CVideo'
import { validations } from './CMyNave-validate'
import { validationMixin } from 'vuelidate'
import { CCopyBtn } from '../CCopyBtn'
@Component({
mixins: [validationMixin],
validations,
components: { CTitleBanner, CMyChipList, CVideo }
components: { CTitleBanner, CMyChipList, CVideo, CCopyBtn }
})
export default class CMyNave extends MixinNave {
@@ -62,6 +63,7 @@ export default class CMyNave extends MixinNave {
public username_sostituire: string = ''
public userfreestr: string = ''
public commento_al_sognatore: string = ''
public tabpagam: string = 'paypal'
public MyPagination: {
sortBy: string,
descending: boolean,
@@ -100,7 +102,13 @@ export default class CMyNave extends MixinNave {
{ name: 'date_made_gift', align: 'center', label: 'Inviato', field: 'date_made_gift', sortable: true },
// { name: 'tel', align: 'center', label: 'Tel', field: 'tel', sortable: true },
{ name: 'made_gift', align: 'center', label: 'Conferm.', field: 'made_gift', sortable: true },
{ name: 'commento_al_sognatore', align: 'center', label: 'Commento', field: 'commento_al_sognatore', sortable: true },
{
name: 'commento_al_sognatore',
align: 'center',
label: 'Commento',
field: 'commento_al_sognatore',
sortable: true
},
]
public tragitto = [
@@ -211,6 +219,10 @@ export default class CMyNave extends MixinNave {
} else if (this.sonoSognatore()) {
this.tabnave = 'sognatore'
}
if (!!this.getRevolutPagamentoSognatore()) {
this.tabpagam = 'revolut'
}
}
public getListaDonatoriDaConfermare() {
@@ -330,7 +342,7 @@ export default class CMyNave extends MixinNave {
return false
}
get getsuperchat(){
get getsuperchat() {
if (!!this.flotta) {
return this.flotta.link_superchat
}
@@ -412,14 +424,17 @@ export default class CMyNave extends MixinNave {
const mymsg = this.$t('dashboard.msg_bot_conferma', {
donatore: this.iodonatore.name + ' ' + this.iodonatore.surname,
sognatore: this.sognatoredelDono().name + ' ' + this.sognatoredelDono().surname
sognatore: this.sognatoredelDono().name + ' ' + this.sognatoredelDono().surname,
commento: this.commento_al_sognatore + ' (' + this.tabpagam + ')',
})
tools.askConfirm(this.$q, msgtitle, msginvia + ' ' + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.DONO_INVIATO, 0, {
param1: {
riga: this.posiz.riga,
col: this.posiz.col,
_id: this.iodonatore._id,
date_made_gift: tools.getDateNow(),
commento_al_sognatore: this.commento_al_sognatore,
commento_al_sognatore: this.commento_al_sognatore + ' (' + this.tabpagam + ')',
},
param2: this.sognatoredelDono().username,
param3: mymsg
@@ -466,6 +481,24 @@ export default class CMyNave extends MixinNave {
return ''
}
public getlinkRevolutSognatore() {
const rec = this.sognatoredelDono()
if (!!rec) {
if (!!rec.profile)
return rec.profile.revolut
}
return ''
}
public getRevolutPagamentoSognatore() {
const rec = this.sognatoredelDono()
if (!!rec) {
if (!!rec.profile)
return rec.profile.revolut
}
return ''
}
public getpaypalmePagamentoSognatore() {
const rec = this.sognatoredelDono()
if (!!rec) {
@@ -484,6 +517,14 @@ export default class CMyNave extends MixinNave {
return ''
}
public getnomesognatore() {
const rec = this.sognatoredelDono()
if (!!rec) {
return rec.name + ' ' + rec.surname
}
return ''
}
get getDonoInviato() {
if (!!this.iodonatore) {
return !!this.iodonatore.date_made_gift
@@ -1128,4 +1169,13 @@ export default class CMyNave extends MixinNave {
return !this.FattoDono && !this.sonoSecondaTessituraDonatore() && !this.listanavi
}
get getImgPaypal() {
if (!!this.iodonatore) {
if (tools.getlang() === 'it')
return 'statics/images/send_to_a_friend-it.jpg'
}
return 'statics/images/send_to_a_friend.jpg'
}
}

View File

@@ -115,45 +115,114 @@
</div>
<br>
</div>
<div class="text-evidente2 bordo_stondato_blu2">
<div v-if="GiornoDelDonoArrivato && !donatore_navepers.provvisoria">
<q-img src="statics/images/regalo.jpg"
class=""
style="height: 150px; width: 150px;"
alt="regalo">
</q-img>
<q-tabs
v-model="tabpagam"
dense
class="bg-blue text-white shadow-2"
indicator-color="white"
align="center"
narrow-indicator
@input="changetab"
>
<q-tab v-if="!!getlinkRevolutSognatore()" name="revolut" icon="img:statics/images/revolut.jpg" label="revolut"></q-tab>
<q-tab v-if="!!getemailPagamentoSognatore()" name="paypal" icon="img:statics/images/paypal.jpg" label="paypal"></q-tab>
</q-tabs>
<div v-if="!FattoDono && !donoinviato"
v-html="$t('dashboard.effettua_il_dono', {email: getemailPagamentoSognatore() })">
</div>
<CTitleBanner v-if="!FattoDono && !donoinviato" class="q-pa-xs"
:title="$t('dashboard.come_inviare_regalo_con_paypal')"
bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
<q-tab-panels v-model="tabpagam" animated>
<q-tab-panel name="paypal">
<div>
<q-img src="../../statics/images/regalo.jpg"
class=""
style="height: 150px; width: 150px;"
alt="regalo">
</q-img>
<q-img src="../../statics/images/paypal.jpg"
class=""
style="height: 150px; width: 150px;"
alt="regalo">
</q-img>
<CVideo myvideokey="5rp_XEV6Mzg">
</CVideo>
<CCopyBtn v-if="!FattoDono && !donoinviato"
title="Email Paypal" :texttocopy="getemailPagamentoSognatore()">
</CTitleBanner>
<div v-if="!FattoDono && !!getpaypalmePagamentoSognatore() && !donoinviato"
v-html="$t('dashboard.paypal_me', {link_payment: getpaypalmePagamentoSognatore() })">
</div>
<CTitleBanner v-if="!FattoDono && !!getpaypalmePagamentoSognatore() && !donoinviato"
class="q-pa-xs"
:title="$t('dashboard.come_inviare_regalo_con_paypal') + '.me'"
bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
</CCopyBtn>
<CVideo myvideokey="VzCy4BxQKhM">
<div v-if="!FattoDono && !donoinviato"
v-html="$t('dashboard.effettua_il_dono', {email: getemailPagamentoSognatore(), sognatore: getnomesognatore() })">
</div>
<q-img v-if="!FattoDono && !donoinviato"
:src="getImgPaypal"
style="width: 366px; height: 254px;"
alt="sending to a friend">
</q-img>
<CTitleBanner v-if="!FattoDono && !donoinviato" class="q-pa-xs"
:title="$t('dashboard.come_inviare_regalo_con_paypal')"
bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
<CVideo myvideokey="5rp_XEV6Mzg">
</CVideo>
</CTitleBanner>
<div v-if="!FattoDono && !!getpaypalmePagamentoSognatore() && !donoinviato"
v-html="$t('dashboard.paypal_me', {link_payment: tools.getlinkstd(getpaypalmePagamentoSognatore()) })">
</div>
<CTitleBanner v-if="!FattoDono && !!getpaypalmePagamentoSognatore() && !donoinviato"
class="q-pa-xs"
:title="$t('dashboard.come_inviare_regalo_con_paypal') + '.me'"
bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
<CVideo myvideokey="VzCy4BxQKhM">
</CVideo>
</CTitleBanner>
</div>
</q-tab-panel>
<q-tab-panel name="revolut">
<q-img src="../../statics/images/regalo.jpg"
class=""
style="height: 150px; width: 150px;"
alt="regalo">
</q-img>
<q-img src="../../statics/images/revolut.jpg"
class=""
style="height: 150px; width: 150px;"
alt="regalo">
</q-img>
<br>
<q-btn
rounded
icon="fas fa-gift"
color="primary"
type="a"
size="md"
label="Link Revolut"
:href="getlinkRevolutSognatore()"
target="__blank">
</q-btn>
<br>
<br>
<a :href="getlinkRevolutSognatore()" target="_blank">{{ getlinkRevolutSognatore() }}</a>
</q-tab-panel>
</q-tab-panels>
</CVideo>
</CTitleBanner>
<div v-if="!FattoDono && !!getnoteaggiuntivePagamentoSognatore() && !donoinviato"
v-html="getnoteaggiuntivePagamentoSognatore()">
</div>
@@ -466,6 +535,7 @@
<br>
{{'(' + getnavestr(props.row) + ')'}} - {{ tools.getstrshortDateTime(props.row.date_made_gift)
}}
- {{ props.row.commento_al_sognatore }}
</div>
</q-td>
<q-td v-if="!tools.isMobile()" key="posizione" :props="props">

View File

@@ -44,4 +44,28 @@ export default class CNextZoom extends MixinBase {
}
return false
}
public getlinkzoom(rec) {
if (rec === null) {
rec = {
typeconf: tools.TYPECONF_ZOOM,
id_conf_zoom: ''
}
}
let typeconf = rec.typeconf
if (typeconf === '')
typeconf = tools.TYPECONF_ZOOM
let mylink = 'https://zoom.us/j/'
if (typeconf === tools.TYPECONF_JITSI)
mylink = 'https://meet.jit.si/'
if (rec.id_conf_zoom === '') {
rec.id_conf_zoom = '6668882000'
}
return mylink + rec.id_conf_zoom
}
}

View File

@@ -1,65 +1,69 @@
<template>
<div>
<div>
<div>
<CTitleBanner v-if="listacalzoom.length > 0" class="q-pa-xs" :title="$t('pages.nextzoom')"
bgcolor="bg-primary" clcolor="text-white"
mystyle="" myclass="myshad" canopen="true">
<CTitleBanner v-if="listacalzoom.length > 0" class="q-pa-xs" :title="$t('pages.nextzoom')"
bgcolor="bg-primary" clcolor="text-white"
mystyle="" myclass="myshad" canopen="true">
<div class="flex flex-center">
<div class="flex flex-center">
<div class="row animazione justify-center q-gutter-md">
<q-btn v-if="showzoom" size="md" type="a" :href="tools.getLinkZoom()"
target="_blank" rounded color="white" text-color="primary" icon="fas fa-video"
:label="$t('steps.entra_zoom')">
</q-btn>
<div class="row animazione justify-center q-gutter-md">
<transition-group name="fade" mode="out-in"
appear
enter-active-class="animazione fadeIn"
leave-active-class="animazione fadeOut">
<q-item v-for="(confer, index) in listacalzoom" :key="confer._id"
class="q-mb-xs animated clBorderZoom q-pa-sm" v-ripple>
<q-btn v-if="showzoom" size="md" type="a" :href="tools.getLinkZoom()"
target="_blank" rounded color="white" text-color="primary" icon="fas fa-video"
:label="$t('steps.entra_zoom')">
</q-btn>
<q-item-section avatar>
<q-avatar v-if="tools.geticon(confer.lang)" :class="tools.geticon(confer.lang)"
size="sm">
</q-avatar>
<q-avatar v-else color="primary" text-color="white" class="text-center">
{{ tools.capitalize(confer.lang) }}
</q-avatar>
</q-item-section>
<transition-group name="fade" mode="out-in"
appear
enter-active-class="animazione fadeIn"
leave-active-class="animazione fadeOut">
<q-item v-for="(confer, index) in listacalzoom" :key="confer._id"
class="q-mb-xs animated clBorderZoom q-pa-sm" v-ripple>
<q-item-section class="text-center">
<q-item-label class="title">{{ confer.title }}</q-item-label>
<q-item-label class="text-center">
<q-icon v-if="confer.benvenuto" name="fas fa-check" size="md" color="blue"></q-icon>
<q-icon v-if="!!confer.icon" :name="confer.icon" size="md" inverted :color="confer.color"></q-icon>
</q-item-label>
<q-item-label class="zoom_data">{{
tools.getstrDateMonthWeekTimeShort(confer.date_start) }}
</q-item-label>
<q-item-label class="note">
<q-chip
style="background-color: lightblue !important;"
text-color="black"
<q-item-section avatar>
<q-avatar v-if="tools.geticon(confer.lang)" :class="tools.geticon(confer.lang)"
size="sm">
</q-avatar>
<q-avatar v-else color="primary" text-color="white" class="text-center">
{{ tools.capitalize(confer.lang) }}
</q-avatar>
</q-item-section>
>{{ confer.note }}
</q-chip>
</q-item-label>
</q-item-section>
</q-item>
</transition-group>
</div>
</div>
</CTitleBanner>
<q-item-section class="text-center">
<q-item-label class="title">{{ confer.title }}</q-item-label>
<q-item-label class="text-center">
<q-icon v-if="confer.benvenuto" name="fas fa-check" size="md" color="blue"></q-icon>
<q-icon v-if="!!confer.icon" :name="confer.icon" size="md" inverted :color="confer.color"></q-icon>
</q-item-label>
<q-item-label class="zoom_data">{{
tools.getstrDateMonthWeekTimeShort(confer.date_start) }}
</q-item-label>
<q-item-label class="note">
<q-chip
style="background-color: lightblue !important;"
text-color="black"
>{{ confer.note }}
</q-chip>
</q-item-label>
<q-item-label class="link">
<a :href="getlinkzoom(confer)" target="_blank">{{getlinkzoom(confer)}}</a>
</q-item-label>
</q-item-section>
</q-item>
</transition-group>
</div>
</div>
</CTitleBanner>
</div>
</div>
</template>
<script lang="ts" src="./CNextZoom.ts">
</script>
<style lang="scss" scoped>
@import './CNextZoom.scss';
@import './CNextZoom.scss';
</style>

View File

@@ -464,6 +464,19 @@ export default class CStatus extends MixinBase {
return false
}
}
get isselectRevolut() {
if (UserStore.state.my.profile) {
// console.log('pay', UserStore.state.my.profile.paymenttypes)
if (UserStore.state.my.profile.paymenttypes) {
if (UserStore.state.my.profile.paymenttypes.includes('revolut')) {
return true
}
}
return false
}
}
public geticonstep(mystep) {

View File

@@ -104,6 +104,22 @@
<div v-html="$t(mystep.descr, {sitename: $t('ws.sitename')})"></div>
</div>
<CTitleBanner class="q-pa-xs" :title="$t('steps.paymenttype_revolut')" bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="true">
<CVideo myvideokey="nST5iHM2LbE">
</CVideo>
<q-btn class="q-ma-md" size="md" type="a" href="https://www.revolut.com/"
target="_blank" rounded color="primary" icon="info"
:label="$t('steps.paymenttype_revolut_link')">
</q-btn>
</CTitleBanner>
<!--
<CTitleBanner class="q-pa-xs" :title="$t('steps.paymenttype_paypal')" bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
@@ -127,23 +143,9 @@
</CTitleBanner>
</CTitleBanner>
-->
<CTitleBanner class="q-pa-xs" :title="$t('steps.paymenttype_revolut')" bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
<CVideo myvideokey="nST5iHM2LbE">
</CVideo>
<q-btn class="q-ma-md" size="md" type="a" href="https://www.revolut.com/"
target="_blank" rounded color="primary" icon="info"
:label="$t('steps.paymenttype_revolut_link')">
</q-btn>
</CTitleBanner>
<div>
<!--<CRequisiti :statebool="RequisitoPayment" :msgTrue="$t('steps.paymenttype_long2')"
@@ -158,6 +160,13 @@
jointable="paymenttypes">
</CMyFieldDb>
<CMyFieldDb v-if="isselectRevolut" :title="$t('reg.revolut')"
table="users"
mykey="profile"
mysubkey="revolut"
:type="tools.FieldType.string">
</CMyFieldDb>
<CMyFieldDb v-if="isselectPaypal" :title="$t('reg.email_paypal')"
table="users"
mykey="profile"
@@ -172,6 +181,7 @@
:type="tools.FieldType.string">
</CMyFieldDb>
<CMyFieldDb :title="$t('reg.note_payment')"
table="users"
mykey="profile"