Lista Doni Navi

This commit is contained in:
Paolo Arena
2020-03-25 09:26:08 +01:00
parent e0f61836ff
commit c25d103a0c
14 changed files with 1022 additions and 580 deletions

View File

@@ -35,6 +35,10 @@
border-radius: 16px; border-radius: 16px;
} }
.cont_donatore {
justify-content: space-between;
}
.you { .you {
background-color: yellow; background-color: yellow;
} }
@@ -56,7 +60,7 @@
} }
.extra{ .extra{
opacity: 0.6; opacity: 1;
} }
.passo{ .passo{
@@ -106,3 +110,7 @@
.ricevuti{ .ricevuti{
color: green; color: green;
} }
.title-nave {
color: blue;
}

View File

@@ -348,6 +348,20 @@ export default class CMyNave extends MixinNave {
return !!this.iodonatore return !!this.iodonatore
} }
public sonoSecondaTessituraDonatore() {
const mediatore = this.getmediatore()
for (const rec of this.nave.rec.donatore.arrdonatori) {
if (!!rec) {
if (mediatore) {
if ((mediatore.ind_order === rec.ind_order) && (rec.num_tess === 2))
return true
}
}
}
return false
}
public sonoSognatore() { public sonoSognatore() {
return !!this.iosognatore return !!this.iosognatore
} }
@@ -426,6 +440,10 @@ export default class CMyNave extends MixinNave {
} }
public geticon(rec) { public geticon(rec) {
if (!rec)
return ''
// console.log('this.rigadoni', this.rigadoni, 'ind', rec.ind)
if (!rec.ind) if (!rec.ind)
return '' return ''
if (this.rigadoni >= this.getrigaNaveByInd(rec.ind)) { if (this.rigadoni >= this.getrigaNaveByInd(rec.ind)) {
@@ -444,7 +462,8 @@ export default class CMyNave extends MixinNave {
tools.askConfirm(this.$q, msgtitle, msginvia + ' ' + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.INVIA_MSG_A_DONATORI, 0, { tools.askConfirm(this.$q, msgtitle, msginvia + ' ' + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.INVIA_MSG_A_DONATORI, 0, {
param1: msgobj, param1: msgobj,
param2: navemediatore param2: navemediatore,
param3: tools.TipoMsg.SEND_LINK_CHAT_DONATORI
}) })
} }
@@ -502,6 +521,13 @@ export default class CMyNave extends MixinNave {
return '' return ''
} }
public getindex(recdonatore, index) {
if (recdonatore.ind_order === this.nave.rec.donatore.recmediatore.ind_order && (recdonatore.num_tess === 2))
return 'TESS'
return 'D' + (index)
}
public getposizione() { public getposizione() {
return this.$t('dashboard.posizione') + ' ' + this.getisProvvisoriaStr() + this.nave.riga + '.' + this.nave.col return this.$t('dashboard.posizione') + ' ' + this.getisProvvisoriaStr() + this.nave.riga + '.' + this.nave.col
} }

View File

@@ -111,13 +111,13 @@
</div> </div>
<div class="donatore">DONATORI:</div> <div class="donatore">DONATORI:</div>
<div v-for="(donatore, index) in nave.rec.mediatore.arrdonatori" :key="index"> <div v-for="(donatore, index) in nave.rec.mediatore.arrdonatori" :key="index">
<div v-if="donatore" :class="`cont_donatore ` + getclassSelect(donatore)"> <div v-if="donatore" :class="`cont_donatore row ` + getclassSelect(donatore)">
D{{index + 1}} - {{ donatore.name }} {{ donatore.surname }} ({{ {{ getindex(donatore, index + 1) }} - {{ donatore.name }} {{ donatore.surname }}
donatore.username }}) - {{ ({{
donatore.riga}}.{{donatore.col}}<br> donatore.username }}) - {{ donatore.riga}}.{{donatore.col}}
</div>
<q-icon v-if="donatore.made_gift" color="green" inverted size="sm" <q-icon v-if="donatore.made_gift" color="green" inverted size="sm"
:name="geticon(rec)" class="gift"></q-icon> name="fas fa-gift" class="gift"></q-icon>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -205,10 +205,18 @@
</div> </div>
<div class="donatore">DONATORI:</div> <div class="donatore">DONATORI:</div>
<div v-for="(donatore, index) in nave.rec.donatore.arrdonatori" :key="index"> <div v-for="(donatore, index) in nave.rec.donatore.arrdonatori" :key="index">
<div v-if="donatore" :class="`cont_donatore ` + getclassSelect(donatore)"> <div v-if="donatore" :class="`cont_donatore row ` + getclassSelect(donatore)">
D{{index + 1}} - {{ donatore.name }} {{ donatore.surname }} ({{ <div>
{{ getindex(donatore, index + 1) }} - {{ donatore.name }} {{
donatore.surname }} ({{
donatore.username }}) - {{ donatore.username }}) - {{
donatore.riga}}.{{donatore.col}}<br> donatore.riga}}.{{donatore.col}}<br>
</div>
<div>
<q-icon v-if="donatore.made_gift" color="green" inverted size="sm"
name="fas fa-gift" class="gift"></q-icon>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -228,12 +236,17 @@
</div> </div>
<div v-if="sonoDonatore()"> <div v-if="sonoDonatore()">
<div v-html="$t('dashboard.sonosognatore')"> <div v-if="sonoSecondaTessituraDonatore()"
v-html="$t('dashboard.sonodonatore_seconda_tessitura')">
</div>
<div v-else>
<div v-if="!FattoDono" v-html="$t('dashboard.sonodonatore')">
</div> </div>
<div v-if="!FattoDono" class="text-evidente bordo_stondato"> <div v-if="!FattoDono" class="text-evidente bordo_stondato">
<div>Quando effettuare il Regalo: <strong>{{ getGiornoDelDono() }}</strong><br></div> <div>Quando effettuare il Regalo: <strong>{{ getGiornoDelDono() }}</strong><br>
</div>
<div> <div>
Metodi Disponibili: Metodi Disponibili:
@@ -308,6 +321,7 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</q-tab-panel> </q-tab-panel>
<q-tab-panel name="sognatore" class="pan_sognatore"> <q-tab-panel name="sognatore" class="pan_sognatore">

View File

@@ -76,7 +76,8 @@
</CVerifyTelegram> </CVerifyTelegram>
<div v-else> <div v-else>
<br> <br>
<q-btn color="primary" icon="fab fa-telegram" :label="$t('components.authentication.telegram.openbot')" <q-btn color="primary" icon="fab fa-telegram"
:label="$t('components.authentication.telegram.openbot')"
type="a" type="a"
:href="getLinkBotTelegram" target="_blank"></q-btn> :href="getLinkBotTelegram" target="_blank"></q-btn>
<br> <br>
@@ -108,9 +109,11 @@
</CVideo> </CVideo>
<q-btn class="q-ma-md" size="md" type="a" href="https://www.paypal.com/" <q-btn class="q-ma-md" size="md" type="a" href="https://www.paypal.com/"
target="_blank" rounded color="primary" icon="info" :label="$t('steps.paymenttype_paypal_link')"> target="_blank" rounded color="primary" icon="info"
:label="$t('steps.paymenttype_paypal_link')">
</q-btn> </q-btn>
<CTitleBanner class="q-pa-xs" :title="$t('steps.paymenttype_paypal_carta_conto')" bgcolor="bg-primary" <CTitleBanner class="q-pa-xs" :title="$t('steps.paymenttype_paypal_carta_conto')"
bgcolor="bg-primary"
clcolor="text-white" clcolor="text-white"
myclass="myshad" canopen="true" :visible="true"> myclass="myshad" canopen="true" :visible="true">
@@ -216,7 +219,8 @@
<h3>ISTRUZIONI ZOOM</h3> <h3>ISTRUZIONI ZOOM</h3>
<ul style="text-align: left; font-size:0.75rem;"> <ul style="text-align: left; font-size:0.75rem;">
<li>1. Scarica l'app (<a href="https://play.google.com/store/apps/details?id=us.zoom.videomeetings" <li>1. Scarica l'app (<a
href="https://play.google.com/store/apps/details?id=us.zoom.videomeetings"
target="_blank">store</a> o <a href="https://zoom.us/support/download" target="_blank">store</a> o <a href="https://zoom.us/support/download"
target="_blank">da PC</a>) target="_blank">da PC</a>)
</li> </li>
@@ -253,7 +257,9 @@
<ul style="text-align: left; font-size:0.75rem;"> <ul style="text-align: left; font-size:0.75rem;">
<li>Cancel button to remove the video (📹) </li> <li>Cancel button to remove the video (📹) </li>
<li>Share' button: to share shared content</li> <li>Share' button: to share shared content</li>
<li>Participants' button where on the left, at the bottom, you will find the CHAT.</li> <li>Participants' button where on the left, at the bottom, you will find the
CHAT.
</li>
<li>Button 'More': you'll find Raise Hands to ask questions.</li> <li>Button 'More': you'll find Raise Hands to ask questions.</li>
</ul> </ul>
</div> </div>
@@ -324,10 +330,16 @@
</CRequisiti> </CRequisiti>
<CRequisiti v-if="Completato9Req" :statebool="Completato9Req" :msgTrue="$t('steps.enter_nave_9req_ok')" <CRequisiti v-if="Completato9Req" :statebool="Completato9Req"
:msgTrue="$t('steps.enter_nave_9req_ok')"
:msgFalse="$t('steps.enter_nave_9req_ko')"> :msgFalse="$t('steps.enter_nave_9req_ko')">
</CRequisiti> </CRequisiti>
<div v-if="CompletatoRequisiti">
<q-btn class="q-mb-md" rounded size="md" color="primary" to="/dashboard"
:label="$t('dashboard.entra_in_lavagna')"></q-btn>
</div>
</div> </div>
<div v-else> <div v-else>
<div v-if="mystep.page"> <div v-if="mystep.page">

View File

@@ -28,5 +28,4 @@ export default class Allnavi extends MixinBase {
public async mounted() { public async mounted() {
this.ris = await GlobalStore.actions.GetArrNavi() this.ris = await GlobalStore.actions.GetArrNavi()
} }
} }

View File

@@ -9,3 +9,24 @@
.DoniConfermati{ .DoniConfermati{
color: green; color: green;
} }
.cont_donatore {
border: solid 2px #4198ef;
padding: 2px 8px;
margin: 2px 4px;
font-size: 1rem;
border-radius: 16px;
}
.donatore, .mediatore, .sognatore, .title-nave, .intermedio2, .intermedio3 {
padding: 2px 4px;
margin: 2px 4px;
color: white;
font-size: 1rem;
border-radius: 16px;
}
.donatore {
background-color: red;
}

View File

@@ -12,6 +12,7 @@ import { CTitle } from '../../../components/CTitle'
import { CMyPage } from '../../../components/CMyPage' import { CMyPage } from '../../../components/CMyPage'
import MixinBase from '../../../mixins/mixin-base' import MixinBase from '../../../mixins/mixin-base'
import { CMyNave } from '../../../components/CMyNave' import { CMyNave } from '../../../components/CMyNave'
import { lists } from '../../../store/Modules/lists'
const namespace = 'CalendarModule' const namespace = 'CalendarModule'
@@ -23,15 +24,31 @@ export default class Listadoninavi extends MixinBase {
public $t: any public $t: any
public $q public $q
public incaricamento: boolean = false public incaricamento: boolean = false
public myloadingload: boolean = false public loading: boolean = false
public showdonatori: boolean = false
public showmsguser: boolean = false
public arrdoninavi = [] public arrdoninavi = []
public MyPagination: { public selrec = null
sortBy: string, public seluser = null
descending: boolean, public seldonatore = null
page: number, public msg_tosend: string = ''
rowsNumber: number, // specifying this determines pagination is server-side public msg_tosend_user: string = ''
rowsPerPage: number public pagination = {
} = { sortBy: 'index', descending: false, page: 1, rowsNumber: 10, rowsPerPage: 10 } sortBy: 'desc',
descending: false,
page: 2,
rowsPerPage: 10
// rowsNumber: xx if getting data from a server
}
public pagination2 = {
sortBy: 'desc',
descending: false,
page: 2,
rowsPerPage: 8
// rowsNumber: xx if getting data from a server
}
public coldoninavi: any[] = [ public coldoninavi: any[] = [
{ {
name: 'index', name: 'index',
@@ -42,27 +59,162 @@ export default class Listadoninavi extends MixinBase {
sortable: true sortable: true
}, },
{ name: 'rigacol', align: 'center', label: 'Nave', field: 'riga', sortable: true }, { name: 'rigacol', align: 'center', label: 'Nave', field: 'riga', sortable: true },
{ name: 'date_gift_chat_open', align: 'center', label: '⏰ Gift Chat', field: 'date_gift_chat_open', sortable: true }, {
name: 'date_gift_chat_open',
align: 'center',
label: '⏰ Gift Chat',
field: 'date_gift_chat_open',
sortable: true
},
{ name: 'date_start', align: 'center', label: '⏰ Partenza', field: 'date_start', sortable: true }, { name: 'date_start', align: 'center', label: '⏰ Partenza', field: 'date_start', sortable: true },
{ name: 'mediatore', align: 'center', label: '🌀 Mediatore', field: '', sortable: true }, { name: 'mediatore', align: 'center', label: '🌀 Mediatore', field: '', sortable: true },
{ name: 'sognatore', align: 'center', label: 'Sognatore', field: '', sortable: true }, { name: 'sognatore', align: 'center', label: 'Sognatore', field: '', sortable: true },
{ name: 'donatori', align: 'center', label: 'Donatori', field: '', sortable: true },
{ name: 'DoniAttesaDiConferma', align: 'center', label: '🎁 Wait', field: 'DoniAttesaDiConferma', sortable: true }, { name: 'DoniAttesaDiConferma', align: 'center', label: '🎁 Wait', field: 'DoniAttesaDiConferma', sortable: true },
{ name: 'DoniMancanti', align: 'center', label: '🎁 Mancano', field: 'DoniMancanti', sortable: true }, { name: 'DoniMancanti', align: 'center', label: '🎁 Mancano', field: 'DoniMancanti', sortable: true },
{ name: 'DoniConfermati', align: 'center', label: '🎁 OK', field: 'DoniConfermati', sortable: true }, { name: 'DoniConfermati', align: 'center', label: '🎁 OK', field: 'DoniConfermati', sortable: true },
{ name: 'note', align: 'left', label: 'Note', field: 'note', sortable: true },
{ name: 'note_interne', align: 'left', label: 'Note Interne', field: 'note_interne', sortable: true },
]
public coldonatori: any[] = [
{
name: 'index',
required: true,
label: 'Num',
align: 'left',
field: 'index',
sortable: true
},
{ name: 'rigacol', align: 'center', label: 'Posizione', field: '', sortable: true },
{ name: 'name', align: 'center', label: 'Nome', field: 'name', sortable: true },
{ name: 'num_tess', align: 'center', label: 'Tessitura', field: 'num_tess', sortable: true },
{ name: 'date_made_gift', align: 'center', label: 'Inviato', field: 'date_made_gift', sortable: true },
{ name: 'made_gift', align: 'center', label: 'Dono', field: 'made_gift', sortable: true },
] ]
public async mounted() { public async mounted() {
this.incaricamento = true this.loading = true
this.$q.loading.show({ message: this.$t('otherpages.update') }) // this.$q.loading.show({ message: this.$t('otherpages.update') })
const ris = await GlobalStore.actions.GetArrDoniNavi() const ris = await GlobalStore.actions.GetArrDoniNavi()
console.log('ris', ris) console.log('ris', ris)
this.arrdoninavi = ris.arrnavi this.arrdoninavi = ris.arrnavi
this.$q.loading.hide() // this.$q.loading.hide()
this.incaricamento = false this.loading = false
} }
public deveDonare(rec) {
return (rec.ind_order !== this.selrec.donatore.recmediatore.ind_order && rec.num_tess === 2)
}
public clickdonatori(rec) {
this.selrec = rec
this.showdonatori = true
}
public clickseluser(rec) {
this.seluser = rec
this.showmsguser = true
}
public HoRicevutoIlDono(rec) {
this.seldonatore = rec
const msgtitle = this.$t('dashboard.dono_ricevuto_2')
const msginvia = this.$t('dashboard.confermi_dono_ricevuto', {
donatore: rec.name + ' ' + rec.surname
})
tools.askConfirm(this.$q, msgtitle, msginvia + ' ' + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.DONO_RICEVUTO, 0, {
param1: {
_id: rec._id,
made_gift: true
},
param2: '',
param3: ''
})
}
public Chiudi() {
this.showdonatori = false
this.seldonatore = null
}
public ActionAfterYes(action, item, data) {
console.log('ActionAfterYes...')
if (action === lists.MenuAction.DONO_RICEVUTO) {
if (!!this.seldonatore) {
this.seldonatore.made_gift = true
}
}
}
public async InviaMsgANave(msgobj, navemediatore) {
const msgtitle = translate('dialog.sendmsg')
tools.askConfirm(this.$q, msgtitle, msgobj.msgpar1 + ' ' + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.INVIA_MSG_A_DONATORI, 0, {
param1: msgobj,
param2: navemediatore,
})
}
public async InviaMsgAUserConfirm(msgobj, navemediatore) {
const msgtitle = translate('dialog.sendmsg')
tools.askConfirm(this.$q, msgtitle, msgobj.msgpar1 + ' ' + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.INVIA_MSG_A_SINGOLO, 0, {
param1: msgobj,
param2: navemediatore,
})
}
public InviaMsgADonatori() {
if (!this.msg_tosend)
return
const msgobj = {
tipomsg: tools.TipoMsg.SEND_MSG,
msgpar1: this.msg_tosend,
inviareale: true,
}
const navemediatore = this.selrec.donatore.recmediatore
this.InviaMsgANave(msgobj, navemediatore)
}
public InviaMsgAUser() {
if (!this.msg_tosend_user)
return
const msgobj = {
tipomsg: tools.TipoMsg.SEND_MSG_SINGOLO,
msgpar1: this.msg_tosend_user,
username: this.seluser.username,
inviareale: true,
}
const naveuser = this.seluser
this.InviaMsgAUserConfirm(msgobj, naveuser)
}
public SaveField(rec, myfield) {
if (!!rec) {
const mydata = {}
mydata[myfield] = rec[myfield]
console.log('mydata', mydata, 'id', rec.id)
tools.saveFieldToServer(this, 'navi', rec.id, mydata)
}
}
} }

View File

@@ -13,7 +13,8 @@
title="Doni Navi" title="Doni Navi"
:data="arrdoninavi" :data="arrdoninavi"
:columns="coldoninavi" :columns="coldoninavi"
:Pagination.sync="MyPagination" :loading="loading"
:Pagination.sync="pagination"
row-key="index"> row-key="index">
<template v-slot:body="props"> <template v-slot:body="props">
<q-tr :props="props"> <q-tr :props="props">
@@ -23,49 +24,204 @@
<q-td key="rigacol" :props="props"> <q-td key="rigacol" :props="props">
{{ props.row.riga }}.{{ props.row.col }} {{ props.row.riga }}.{{ props.row.col }}
</q-td> </q-td>
<q-td key="col" :props="props">
{{ props.row.col }}
</q-td>
<q-td key="date_gift_chat_open" :props="props"> <q-td key="date_gift_chat_open" :props="props">
<div v-if="!!props.row.rec.mediatore.arrdonatori"> <div v-if="!!props.row.rec.donatore.arrdonatori">
{{ tools.getstrshortDate(props.row.rec.mediatore.arrdonatori[0].date_gift_chat_open) {{ tools.getstrshortDate(props.row.rec.donatore.arrdonatori[0].date_gift_chat_open)
}} }}
</div> </div>
<a v-if="!!props.row.rec.mediatore.recmediatore.link_chat" :href="props.row.rec.mediatore.recmediatore.link_chat" target="_blank">Link</a> <a v-if="!!props.row.rec.donatore.recmediatore.link_chat"
:href="props.row.rec.donatore.recmediatore.link_chat" target="_blank">Link</a>
<div v-if="props.row.rec.donatore.recmediatore.sent_msg_howto_make_gift">(Link Inviato)</div>
</q-td> </q-td>
<q-td key="date_start" :props="props"> <q-td key="date_start" :props="props">
<div v-if="!!props.row.rec.mediatore.arrdonatori"> <div v-if="!!props.row.rec.donatore.arrdonatori">
{{ tools.getstrshortDate(props.row.rec.mediatore.arrdonatori[0].date_start) }} {{ tools.getstrshortDate(props.row.rec.donatore.arrdonatori[0].date_start) }}
</div> </div>
</q-td> </q-td>
<q-td key="mediatore" :props="props"> <q-td key="mediatore" :props="props">
<div v-if="!!props.row.rec.mediatore.recmediatore"> <q-btn v-if="!!props.row.rec.donatore.recmediatore" flat rounded color="blue"
{{ props.row.rec.mediatore.recmediatore.name }} {{ :label="props.row.rec.donatore.recmediatore.name + ` ` + props.row.rec.donatore.recmediatore.surname"
props.row.rec.mediatore.recmediatore.surname }} @click="clickseluser(props.row.rec.donatore.recmediatore)">
</div> </q-btn>
</q-td> </q-td>
<q-td key="sognatore" :props="props"> <q-td key="sognatore" :props="props">
<div v-if="!!props.row.rec.mediatore.recsognatori[0]"> <q-btn v-if="!!props.row.rec.donatore.recsognatori[0]" flat rounded color="blue"
{{ props.row.rec.mediatore.recsognatori[0].name }} {{ :label="props.row.rec.donatore.recsognatori[0].name + ` ` + props.row.rec.donatore.recsognatori[0].surname"
props.row.rec.mediatore.recsognatori[0].surname }} @click="clickseluser(props.row.rec.donatore.recsognatori[0])">
</q-btn>
</q-td>
<q-td key="donatori" :props="props">
<q-btn flat rounded color="blue"
:label="$t('dashboard.donatori')"
@click="clickdonatori(props.row.rec)">
</q-btn>
</q-td>
<q-td key="DoniAttesaDiConferma" :props="props">
<div v-if="props.row.DoniAttesaDiConferma > 0" class="DoniAttesaDiConferma">{{
props.row.DoniAttesaDiConferma }}
</div> </div>
</q-td> </q-td>
<q-td key="DoniAttesaDiConferma" :props="props">
<div v-if="props.row.DoniAttesaDiConferma > 0" class="DoniAttesaDiConferma">{{ props.row.DoniAttesaDiConferma }} </div>
</q-td>
<q-td key="DoniMancanti" :props="props"> <q-td key="DoniMancanti" :props="props">
<div v-if="props.row.DoniMancanti > 0" class="DoniMancanti">{{ props.row.DoniMancanti }}</div> <div v-if="props.row.DoniMancanti > 0" class="DoniMancanti">{{ props.row.DoniMancanti
}}
</div>
</q-td> </q-td>
<q-td key="DoniConfermati" :props="props"> <q-td key="DoniConfermati" :props="props">
<div v-if="props.row.DoniConfermati > 0" class="DoniConfermati">{{ props.row.DoniConfermati }}</div> <div v-if="props.row.DoniConfermati > 0" class="DoniConfermati">{{
props.row.DoniConfermati }}
</div>
</q-td>
<q-td key="note" :props="props">
<div class="Note">
<div v-if="props.row.note">{{ props.row.note }}</div>
<div v-else>---</div>
<q-popup-edit v-model="props.row.note" buttons @save="SaveField(props.row, 'note')">
<q-field>
<q-input v-model="props.row.note" />
</q-field>
</q-popup-edit>
</div>
</q-td>
<q-td key="note_interne" :props="props">
<div class="Note">
<div v-if="props.row.note_interne">{{ props.row.note_interne }}</div>
<div v-else>---</div>
<q-popup-edit v-model="props.row.note_interne" buttons @save="SaveField(props.row, 'note_interne')">
<q-field>
<q-input v-model="props.row.note_interne" />
</q-field>
</q-popup-edit>
</div>
</q-td> </q-td>
</q-tr> </q-tr>
</template> </template>
</q-table> </q-table>
</CTitleBanner> </CTitleBanner>
<q-dialog v-model="showdonatori">
<q-card v-if="selrec" :style="`min-width: `+ tools.myheight_dialog() + `px;` ">
<q-toolbar class="bg-primary text-white" style="min-height: 30px;">
<q-toolbar-title>
{{$t('dashboard.donatori')}}
</q-toolbar-title>
<q-btn flat round color="white" icon="close" v-close-popup clickable @click="Chiudi"></q-btn>
</q-toolbar>
<q-card-section class="inset-shadow" style="padding: 4px !important;">
<div class="row justify-center q-gutter-md">
<div>
<q-table
dense
color="primary"
title="Donatori"
:data="selrec.donatore.arrdonatori"
:columns="coldonatori"
:Pagination="pagination2"
row-key="index">
<template v-slot:body="props">
<q-tr :props="props">
<q-td key="index" :props="props">
D{{ props.row.index }}
</q-td>
<q-td key="rigacol" :props="props">
{{ props.row.riga }}.{{ props.row.col }}
</q-td>
<q-td key="name" :props="props">
<q-btn flat rounded color="blue"
:label="props.row.name + ` ` + props.row.surname"
@click="clickseluser(props.row)">
</q-btn>
</q-td>
<q-td key="num_tess" :props="props">
{{ props.row.num_tess }}
</q-td>
<q-td key="date_made_gift" :props="props">
{{ tools.getstrshortDateTime(props.row.date_made_gift) }}
</q-td>
<q-td key="made_gift" :props="props">
<div v-if="deveDonare(props.row)">
<div class="row justify-center">
<q-btn v-if="!props.row.made_gift"
push
rounded
color="primary"
size="md"
:label="$t('dashboard.dono_ricevuto_3', {donatore: props.row.name })"
@click="HoRicevutoIlDono(props.row)">
</q-btn>
</div>
<q-icon v-if="props.row.made_gift" color="green" inverted size="sm"
name="fas fa-gift" class="gift"></q-icon>
</div>
<div v-else>
--------
</div>
</q-td>
</q-tr>
</template>
</q-table>
<div class="q-ma-sm text-center">
<div>Invia un Messaggio a tutti questi Donatori:</div>
<q-input type="textarea"
autogrow
v-model="msg_tosend" :label="$t('cal.msgbooking')"
input-class="myinput-area">
</q-input>
<div class="row justify-center centermydiv q-gutter-sm" style="max-width: 420px;">
<q-btn rounded text-color="secondary" icon="fab fa-telegram"
:label="$t('dialog.sendmsg')"
@click="InviaMsgADonatori()"></q-btn>
</div>
</div>
</div>
</div>
</q-card-section>
</q-card>
</q-dialog>
<q-dialog v-model="showmsguser">
<q-card v-if="seluser" :style="`min-width: `+ tools.myheight_dialog() + `px;` ">
<q-toolbar class="bg-primary text-white" style="min-height: 30px;">
<q-toolbar-title>
{{$t('dashboard.donatori')}}
</q-toolbar-title>
<q-btn flat round color="white" icon="close" v-close-popup clickable @click="Chiudi"></q-btn>
</q-toolbar>
<q-card-section class="inset-shadow" style="padding: 4px !important;">
<div class="row justify-center q-gutter-md">
<div>
<div class="q-ma-sm text-center">
<div>Invia un Messaggio a {{seluser.name }} {{ seluser.surname }}:</div>
<q-input type="textarea"
autogrow
v-model="msg_tosend_user" :label="$t('cal.msgbooking')"
input-class="myinput-area">
</q-input>
<div class="row justify-center centermydiv q-gutter-sm" style="max-width: 420px;">
<q-btn rounded text-color="secondary" icon="fab fa-telegram"
:label="$t('dialog.sendmsg') + ` a ` + seluser.name + ` ` + seluser.surname"
@click="InviaMsgAUser()"></q-btn>
</div>
</div>
</div>
</div>
</q-card-section>
</q-card>
</q-dialog>
</div> </div>
</div> </div>
</template> </template>

View File

@@ -215,8 +215,9 @@ const msg_it = {
'cambia la "cronologia per i nuovi membri" da nascosta a visibile.</li>' + 'cambia la "cronologia per i nuovi membri" da nascosta a visibile.</li>' +
'<li>Per trovare il <strong>link della Chat appena creata</strong>: clicca sul nome della chat in alto, clicca sulla Matita -> "Tipo di Gruppo" -> "invita nel gruppo tramite link", clicca su "copia link" e incollalo qui sotto, sulla casella <strong>"Link Gift Chat"</strong></li>' + '<li>Per trovare il <strong>link della Chat appena creata</strong>: clicca sul nome della chat in alto, clicca sulla Matita -> "Tipo di Gruppo" -> "invita nel gruppo tramite link", clicca su "copia link" e incollalo qui sotto, sulla casella <strong>"Link Gift Chat"</strong></li>' +
'<li>Invia il Link della Gift Chat a tutti i Donatori, cliccando sul bottone qui sotto.</li></ol>', '<li>Invia il Link della Gift Chat a tutti i Donatori, cliccando sul bottone qui sotto.</li></ol>',
sonosognatore: '<ol class="lista"><li>Quando sei in questa posizione, verrai invitato ad entrare in una <strong>Gift Chat</strong> (Telegram) e qui troverai anche gli altri 7 Donatori, il Mediatore, il Sognatore e un rappresentante dello Staff.</li>' + sonodonatore: '<ol class="lista"><li>Quando sei in questa posizione, verrai invitato ad entrare in una <strong>Gift Chat</strong> (Telegram) e qui troverai anche gli altri 7 Donatori, il Mediatore, il Sognatore e un rappresentante dello Staff.</li>' +
'<li>Effettuerai il tuo dono <strong>ESATTAMENTE il giorno indicato</strong> e nella modalità di pagamento che troverai scritto qui.<br></ol>', '<li>Effettuerai il tuo dono <strong>ESATTAMENTE il giorno indicato</strong> e nella modalità di pagamento che troverai scritto qui.<br></ol>',
sonodonatore_seconda_tessitura: '<ol class="lista"><li>Qui tu sei Mediatore e anche Donatore, ma essendo la seconda Tessitura, non avrai bisogno di effettuare nuovamente il tuo dono<br></ol>',
link_chat: 'Link della Gift Chat Telegram', link_chat: 'Link della Gift Chat Telegram',
donatori:'Donatori', donatori:'Donatori',
donatore:'Donatore', donatore:'Donatore',
@@ -244,6 +245,7 @@ const msg_it = {
confermi_dono_ricevuto_msg: '{sognatore} conferma di aver ricevuto il Dono di 33€ da parte di {donatore}', confermi_dono_ricevuto_msg: '{sognatore} conferma di aver ricevuto il Dono di 33€ da parte di {donatore}',
msg_bot_conferma: '{donatore} ha confermato di aver inviato il suo Dono di 33€ a {sognatore}', msg_bot_conferma: '{donatore} ha confermato di aver inviato il suo Dono di 33€ a {sognatore}',
ricevuto_dono_ok: 'Hai confermato che il dono è stato Ricevuto', ricevuto_dono_ok: 'Hai confermato che il dono è stato Ricevuto',
entra_in_lavagna: 'Entra sulla Tua Lavagna per vedere le Navi in Partenza',
}, },
reg: { reg: {
registered: 'Registrato', registered: 'Registrato',

View File

@@ -782,14 +782,15 @@ namespace Actions {
}) })
} }
async function InviaMsgADonatori(context, { msgobj, navemediatore }) { async function InviaMsgADonatori(context, { msgobj, navemediatore, tipomsg }) {
console.log('InviaMsgADonatori', msgobj) console.log('InviaMsgADonatori', msgobj)
const mydata = { const mydata = {
idapp: process.env.APP_ID, idapp: process.env.APP_ID,
tipomsg: tools.TipoMsg.SEND_LINK_CHAT_DONATORI,
msgextra: msgobj.msgextra, msgextra: msgobj.msgextra,
msgpar1: msgobj.msgpar1, msgpar1: msgobj.msgpar1,
username: msgobj.username,
tipomsg,
inviareale: msgobj.inviareale, inviareale: msgobj.inviareale,
navemediatore navemediatore
} }

View File

@@ -167,6 +167,7 @@ const colnavi = [
AddCol({ name: 'ind_order', label_trans: 'ind_order' }), AddCol({ name: 'ind_order', label_trans: 'ind_order' }),
AddCol({ name: 'parent_id', label_trans: 'parent_id' }), AddCol({ name: 'parent_id', label_trans: 'parent_id' }),
AddCol({ name: 'date_start', label_trans: 'date_start', fieldtype: tools.FieldType.date }), AddCol({ name: 'date_start', label_trans: 'date_start', fieldtype: tools.FieldType.date }),
AddCol({ name: 'date_gift_chat_open', label_trans: 'date_gift_chat_open', fieldtype: tools.FieldType.date }),
AddCol({ name: 'link_chat', label_trans: 'reg.link_chat' }), AddCol({ name: 'link_chat', label_trans: 'reg.link_chat' }),
AddCol({ name: 'sent_msg_howto_make_gift', label_trans: 'sent_msg_howto_make_gift', fieldtype: tools.FieldType.boolean }), AddCol({ name: 'sent_msg_howto_make_gift', label_trans: 'sent_msg_howto_make_gift', fieldtype: tools.FieldType.boolean }),
AddCol({ name: 'made_gift', label_trans: 'reg.made_gift', fieldtype: tools.FieldType.boolean }), AddCol({ name: 'made_gift', label_trans: 'reg.made_gift', fieldtype: tools.FieldType.boolean }),
@@ -175,6 +176,8 @@ const colnavi = [
AddCol({ name: 'received_gift', label_trans: 'received_gift', fieldtype: tools.FieldType.boolean }), AddCol({ name: 'received_gift', label_trans: 'received_gift', fieldtype: tools.FieldType.boolean }),
AddCol({ name: 'date_received_gift', label_trans: 'date_received_gift', fieldtype: tools.FieldType.date }), AddCol({ name: 'date_received_gift', label_trans: 'date_received_gift', fieldtype: tools.FieldType.date }),
AddCol({ name: 'num_tess', label_trans: 'num_tess', fieldtype: tools.FieldType.number }), AddCol({ name: 'num_tess', label_trans: 'num_tess', fieldtype: tools.FieldType.number }),
AddCol({ name: 'note', label_trans: 'note', fieldtype: tools.FieldType.string }),
AddCol({ name: 'note_interne', label_trans: 'note_interne', fieldtype: tools.FieldType.string }),
AddCol(DeleteRec), AddCol(DeleteRec),
AddCol(DuplicateRec) AddCol(DuplicateRec)
] ]

View File

@@ -22,6 +22,7 @@ export const lists = {
DELETE_USERLIST: 335, DELETE_USERLIST: 335,
REGALA_INVITATO: 340, REGALA_INVITATO: 340,
INVIA_MSG_A_DONATORI: 350, INVIA_MSG_A_DONATORI: 350,
INVIA_MSG_A_SINGOLO: 355,
DONO_INVIATO: 360, DONO_INVIATO: 360,
DONO_RICEVUTO: 370, DONO_RICEVUTO: 370,

View File

@@ -60,6 +60,8 @@ export const tools = {
TipoMsg: { TipoMsg: {
SEND_LINK_CHAT_DONATORI: 1, SEND_LINK_CHAT_DONATORI: 1,
SEND_MSG: 2,
SEND_MSG_SINGOLO: 3
}, },
listBestColor: [ listBestColor: [
@@ -1501,7 +1503,11 @@ export const tools = {
}) })
} else if (func === lists.MenuAction.INVIA_MSG_A_DONATORI) { } else if (func === lists.MenuAction.INVIA_MSG_A_DONATORI) {
// console.log('param1', par.param1) // console.log('param1', par.param1)
GlobalStore.actions.InviaMsgADonatori({ msgobj: par.param1, navemediatore: par.param2 }).then((ris) => { GlobalStore.actions.InviaMsgADonatori({
msgobj: par.param1,
navemediatore: par.param2,
tipomsg: par.param1.tipomsg
}).then((ris) => {
if (ris) { if (ris) {
if (par.param1.inviareale) if (par.param1.inviareale)
tools.showPositiveNotif(myself.$q, myself.$t('dashboard.msg_donatori_ok')) tools.showPositiveNotif(myself.$q, myself.$t('dashboard.msg_donatori_ok'))
@@ -1509,6 +1515,19 @@ export const tools = {
} else } else
tools.showNegativeNotif(myself.$q, myself.$t('db.recfailed')) tools.showNegativeNotif(myself.$q, myself.$t('db.recfailed'))
}) })
} else if (func === lists.MenuAction.INVIA_MSG_A_SINGOLO) {
// console.log('param1', par.param1)
GlobalStore.actions.InviaMsgADonatori({
msgobj: par.param1,
navemediatore: par.param2,
tipomsg: par.param1.tipomsg
})
.then((ris) => {
if (ris) {
tools.showPositiveNotif(myself.$q, myself.$t('cal.sendmsg_sent'))
} else
tools.showNegativeNotif(myself.$q, myself.$t('db.recfailed'))
})
} else if (func === lists.MenuAction.DONO_INVIATO) { } else if (func === lists.MenuAction.DONO_INVIATO) {
const mydatatosave = { const mydatatosave = {
id: par.param1._id, id: par.param1._id,
@@ -2402,8 +2421,10 @@ export const tools = {
return '337' return '337'
} else if (Screen.width < 600) { } else if (Screen.width < 600) {
return '400' return '400'
} else { } else if (Screen.width < 900) {
return '500' return '500'
} else {
return '600'
} }
}, },

View File

@@ -2,7 +2,7 @@
<div> <div>
<CTitleBanner title="Operazioni su DB:"></CTitleBanner> <CTitleBanner title="Operazioni su DB:"></CTitleBanner>
<div class="row justify-center q-gutter-sm q-list--bordered center_img" style="max-width: 600px"> <div class="row justify-center q-gutter-sm q-list--bordered center_img" style="max-width: 600px">
<div class="row"> <!--<div class="row">
<q-btn label="Passa i codici Telefoni sul campo cell" color="primary" <q-btn label="Passa i codici Telefoni sul campo cell" color="primary"
@click="EseguiFunz('changeCellInt')"></q-btn> @click="EseguiFunz('changeCellInt')"></q-btn>
<br></div> <br></div>
@@ -19,30 +19,46 @@
<div class="row"> <div class="row">
<q-btn label="NUM_TESS A 1" color="primary" @click="EseguiFunz('numtessUno')"></q-btn><br> <q-btn label="NUM_TESS A 1" color="primary" @click="EseguiFunz('numtessUno')"></q-btn><br>
</div> </div>
-->
<div class="row"> <div class="row">
<q-btn label="Inizializza ListaIngresso" color="negative" @click="EseguiFunz('initListaIngresso')"></q-btn><br> <q-btn label="CORREGGI NUM_TESS" color="primary" @click="EseguiFunz('Corregginumtess')"></q-btn>
<q-btn label="Crea ListaIngresso" color="negative" @click="EseguiFunz('creaLista')"></q-btn> <br>
</div>
<div class="row">
<!--<q-btn label="Inizializza ListaIngresso" color="negative"
@click="EseguiFunz('initListaIngresso')"></q-btn>
<br>-->
</div> </div>
<!-- <!--
<div class="row"> <div class="row">
<q-btn label="Elimina Navi" color="negative" @click="EseguiFunz('delNavi')"></q-btn><br> <q-btn label="Elimina Navi" color="negative" @click="EseguiFunz('delNavi')"></q-btn><br>
</div> </div>
--> -->
<!--<div class="row">
<q-btn label="Elimina Navi non Partite" color="negative"
@click="EseguiFunz('delNaviNoStarted')"></q-btn>
<br>
</div>-->
<div class="row"> <div class="row">
<q-btn label="Elimina Navi non Partite" color="negative" @click="EseguiFunz('delNaviNoStarted')"></q-btn><br> <q-btn label="Elimina Navi Provvisorie" color="negative"
@click="EseguiFunz('delNaviProvvisorie')"></q-btn>
<q-btn label="Crea ListaIngresso" color="positive" @click="EseguiFunz('creaLista')"></q-btn>
</div> </div>
<div class="row"> <div class="q-pa-sm">
<q-btn label="Elimina Navi Provvisorie" color="negative" @click="EseguiFunz('delNaviProvvisorie')"></q-btn><br>
</div>
<div>
<CDateTime <CDateTime
:value.sync="date_start" :value.sync="date_start"
:label="$t('cal.eventstartdatetime')" :label="$t('cal.eventstartdatetime')"
:readonly="false"> :readonly="false">
</CDateTime> </CDateTime>
<q-input v-model="numpersone" type="number" autofocus label="Num Persone to Add" style="width: 50px;"></q-input> <q-input v-model="numpersone" type="number" autofocus label="Num Persone to Add"
<q-btn label="Crea Navi Provvisorie" color="negative" @click="EseguiFunz('creaNaviProvvisorie')"></q-btn> style="width: 50px;"></q-input>
<q-btn label="Crea Navi Definitive" color="negative" @click="EseguiFunz('creaNaviDefinitive')"></q-btn> <q-btn label="Crea Navi Provvisorie" color="primary"
@click="EseguiFunz('creaNaviProvvisorie')"></q-btn>
<br>
<q-btn label="Crea Navi Definitive" color="primary" @click="EseguiFunz('creaNaviDefinitive')"></q-btn>
</div> </div>
<div v-if="!incaricamento" class="row"> <div v-if="!incaricamento" class="row">
<CMyFieldDb title="Riga" <CMyFieldDb title="Riga"
@@ -78,26 +94,36 @@
</div> </div>
<div class="row"> <div class="row">
<q-btn label="Pulisci chi non è presente in Nave" color="primary" @click="EseguiFunz('pulisciNonPresenzeInNave')"></q-btn><br> <q-btn label="Pulisci chi non è presente in Nave" color="primary"
@click="EseguiFunz('pulisciNonPresenzeInNave')"></q-btn>
<br>
</div> </div>
<div class="row"> <div class="row">
<q-btn label="Visualizza Lista Nave" color="primary" @click="EseguiFunz('visuListaNave')"></q-btn><br> <q-btn label="Visualizza Lista Nave" color="primary" @click="EseguiFunz('visuListaNave')"></q-btn>
</div> </div>
<div class="row"> <div class="row">
<q-btn label="Visualizza ListaIngresso" color="primary" @click="EseguiFunz('visuListaIngresso')"></q-btn><br> <q-btn label="Visualizza ListaIngresso" color="primary"
</div> @click="EseguiFunz('visuListaIngresso')"></q-btn>
<div class="row"> <br>
<q-btn label="CHECK SE INSERIRE UTENTI IN Nave" color="primary" @click="EseguiFunz('checkInserimentiUtentiInNave')"></q-btn><br>
</div> </div>
<!--<div class="row">
<q-btn label="CHECK SE INSERIRE UTENTI IN Nave" color="primary"
@click="EseguiFunz('checkInserimentiUtentiInNave')"></q-btn>
<br>
</div>-->
<div class="row"> <div class="row">
<q-input v-model="riga" type="number" autofocus label="Riga" style="width: 50px;"></q-input> <q-input v-model="riga" type="number" autofocus label="Riga" style="width: 50px;"></q-input>
<q-input v-model="col" type="number" autofocus label="Col" style="width: 50px;"></q-input> <q-input v-model="col" type="number" autofocus label="Col" style="width: 50px;"></q-input>
<q-btn label="Visualizza Nave da 8" color="primary" @click="EseguiFunz('visuPlacca')"></q-btn><br> <q-btn label="Visualizza Nave da 8" color="primary" @click="EseguiFunz('visuPlacca')"></q-btn>
<q-btn label="Visualizza Nave" color="primary" @click="EseguiFunz('visuNave')"></q-btn><br> <br>
<q-btn label="Visualizza Nave" color="primary" @click="EseguiFunz('visuNave')"></q-btn>
<br>
</div> </div>
<div class="row">listadonatoridelsognatore <div class="row">listadonatoridelsognatore
<q-input v-model="placca" type="textarea" autofocus label="Placca" autogrow style="width: 500px; height: 400px;"></q-input> <q-input v-model="placca" type="textarea" autofocus label="Placca" autogrow
style="width: 500px; height: 400px;"></q-input>
<br> <br>
</div> </div>
</div> </div>