From 44305d8778c852e62563a865f183381fab9087eb Mon Sep 17 00:00:00 2001 From: Paolo Arena Date: Thu, 24 Oct 2019 23:30:18 +0200 Subject: [PATCH] - Delete Event with ask confirmation - Fix dateStart only 1 view if is the same day - Sending a message from the Event Page: to a user or to a "Event" - Add button "Ask Info" - Starting view msg into the messagepopup component --- .../CEventsCalendar/CEventsCalendar.ts | 93 ++++++- .../CEventsCalendar/CEventsCalendar.vue | 115 +++++---- src/components/Header/Header.vue | 2 - .../toolbar/messagePopover/messagePopover.ts | 42 ++-- .../toolbar/messagePopover/messagePopover.vue | 48 ++-- src/model/Calendar.ts | 29 +++ src/model/UserStore.ts | 2 + src/statics/i18n.js | 58 ++++- src/store/Modules/GlobalStore.ts | 12 +- .../Modules/Store/calendar/CalendarStore.ts | 11 +- src/store/Modules/UserStore.ts | 38 ++- src/store/Modules/lists.ts | 1 + src/store/Modules/tools.ts | 237 +++++++++++++----- 13 files changed, 508 insertions(+), 180 deletions(-) diff --git a/src/components/CEventsCalendar/CEventsCalendar.ts b/src/components/CEventsCalendar/CEventsCalendar.ts index fee862c..9cf1aa3 100644 --- a/src/components/CEventsCalendar/CEventsCalendar.ts +++ b/src/components/CEventsCalendar/CEventsCalendar.ts @@ -22,7 +22,7 @@ import QDateTimeScroller from '@quasar/quasar-app-extension-qscroller/src/compon import { CTodo } from '@src/components/todos/CTodo' import { SingleProject } from '@src/components/projects/SingleProject' import { IEvents } from '@src/model' -import { IBookedEvent, IBookedEventPage, EState } from '@src/model/Calendar' +import { IBookedEvent, IBookedEventPage, IMessagePage, EState, IMessage, IDest, IOrigin } from '@src/model/Calendar' import { costanti } from '@src/store/Modules/costanti' import router from '@router' import { static_data } from '@src/db/static_data' @@ -58,6 +58,17 @@ export default class CEventsCalendar extends Vue { modified: false } + public formAskForDefault: IMessage = { + dest: { + idapp: process.env.APP_ID, + username: '' + }, + origin: { + userId: '' + }, + message: '' + } + public mioalert = false public dateFormatter: any = '' @@ -78,10 +89,16 @@ export default class CEventsCalendar extends Vue { bookedevent: null, state: EState.None } + public askInfopage: IMessagePage = { + show: false, + msg: null, + state: EState.None + } public contextDay = null public eventForm: IEvents = { ...this.formDefault } public bookEventForm = { ...this.formbookEventDefault } + public askInfoForm: IMessage = { ...this.formAskForDefault } public displayEvent = false public myevent = null // public events = [] @@ -355,7 +372,6 @@ export default class CEventsCalendar extends Vue { return this } - public $refs: { calendar: any } @@ -434,6 +450,7 @@ export default class CEventsCalendar extends Vue { this.myevent = eventparam this.bookEventForm.msgbooking = '' this.bookEventForm.numpeople = 1 + this.bookEventForm.booked = true this.bookEventpage.state = EState.Creating this.displayEvent = false @@ -441,6 +458,28 @@ export default class CEventsCalendar extends Vue { } } + public askForInfoEventMenu(eventparam) { + if (!UserStore.state.isLogged || !UserStore.state.verified_email) { + // Visu right Toolbar to make SignIn + GlobalStore.state.RightDrawerOpen = true + // this.$router.push('/signin') + } else { + console.log('askForInfoEventMenu') + this.askInfoForm = { ...this.formAskForDefault } + + this.myevent = eventparam + + this.askInfoForm = { + message: '' + } + + this.askInfopage.state = EState.Creating + + this.displayEvent = false + this.askInfopage.show = true // show dialog + } + } + public clEvent(event: IEvents) { return (this.isAlreadyBooked(event) ? 'text-left bg-light-green-1' : 'text-left') } @@ -460,10 +499,7 @@ export default class CEventsCalendar extends Vue { } public deleteEvent(eventparam) { - const index = this.findEventIndex(eventparam) - if (index >= 0) { - CalendarStore.state.eventlist.splice(index, 1) - } + tools.CancelEvent(this, eventparam) } public findEventIndex(eventparam) { @@ -514,7 +550,7 @@ export default class CEventsCalendar extends Vue { const mydatatosave = { id: myrec._id, - table: 'myevents', + table: tools.TABEVENTS, fieldsvalue: myrec } @@ -557,7 +593,7 @@ export default class CEventsCalendar extends Vue { // ++Save into the Database const mydatatosave = { id: data._id, - table: 'myevents', + table: tools.TABEVENTS, fieldsvalue: data } @@ -565,7 +601,7 @@ export default class CEventsCalendar extends Vue { this.UpdateDbByFields(data, true) } else { const mydataadd = { - table: 'myevents', + table: tools.TABEVENTS, data } @@ -623,7 +659,36 @@ export default class CEventsCalendar extends Vue { } public sendMsg(myevent: IEvents) { - // .. + const self = this + this.askInfopage.show = false + + const data: IMessage = { + idapp: process.env.APP_ID, + origin: { + userId: UserStore.state.userId, + page: '', + event_id: myevent._id, + infoevent: tools.gettextevent(this, myevent) + }, + dest: { + idapp: process.env.APP_ID, + username: myevent.teacher + }, + read: false, + deleted: false, + message: this.askInfoForm.message, + datemsg: tools.getDateNow() + } + + this.SendMsgEvent(data).then((ris) => { + self.contextDay = null + if (ris) + tools.showPositiveNotif(self.$q, self.$t('cal.sendmsg_sent')) + else + tools.showNegativeNotif(self.$q, self.$t('cal.sendmsg_error')) + }) + + } public saveBookEvent(myevent: IEvents) { @@ -772,6 +837,10 @@ export default class CEventsCalendar extends Vue { return await CalendarStore.actions.BookEvent(eventparam) } + public async SendMsgEvent(param: IMessage) { + return await UserStore.actions.SendMsgEvent(param) + } + public isAlreadyBooked(eventparam: IEvents) { return CalendarStore.getters.findEventBooked(eventparam, true) } @@ -961,6 +1030,8 @@ export default class CEventsCalendar extends Vue { // check if event is in the past const datenow = tools.addDays(tools.getDateNow(), -1) - return (myevent.dateTimeEnd >= datenow) + // console.log('datenow', datenow, 'end', myevent.dateTimeEnd) + + return (new Date(myevent.dateTimeEnd) >= datenow) } } diff --git a/src/components/CEventsCalendar/CEventsCalendar.vue b/src/components/CEventsCalendar/CEventsCalendar.vue index 463ee3b..84e40f4 100644 --- a/src/components/CEventsCalendar/CEventsCalendar.vue +++ b/src/components/CEventsCalendar/CEventsCalendar.vue @@ -74,23 +74,9 @@
- {{$t('cal.when')}}: - {{ tools.getstrDate(myevent.dateTimeStart)}} - {{ tools.getstrDate(myevent.dateTimeEnd)}} - - - {{$t('cal.hours')}}: - {{ myevent.infoextra }} - - - - - - {{$t('cal.hours')}}: - {{$t('cal.starttime')}} {{ tools.getstrTime(myevent.dateTimeStart) }} - {{ $t('cal.endtime')}}: {{ tools.getstrTime(myevent.dateTimeEnd) }} - - - + {{$t('cal.when')}}: + +

- {{$t('cal.when')}}: - {{func_tools.getDateStr(myevent.dateTimeStart)}} - - {{func_tools.getDateStr(myevent.dateTimeEnd)}}
- - {{$t('cal.hours')}}: - {{ myevent.infoextra }} - - - - - - {{$t('cal.hours')}}: - {{$t('cal.starttime')}} {{ tools.getstrTime(myevent.dateTimeStart) }} - - - {{$t('cal.endtime')}} - - - - {{ tools.getstrTime(myevent.dateTimeEnd) }} - - - - + {{$t('cal.when')}}: + +
@@ -369,7 +335,7 @@ - @@ -380,6 +346,53 @@ + + + + + {{$t('cal.booking')}} + + + + + + + +
+ + + {{myevent.title}} + +
+ {{$t('cal.when')}}: + + +
+
+ + + + + + + +
+
+
+ + + + +
+
+ @@ -547,17 +560,7 @@

- -
- {{func_tools.getDateStr(event.dateTimeStart)}} - {{ event.infoextra }} -
-
-
- {{tools.getstrDateTime(event.dateTimeStart)}} - - {{tools.getstrDateTime(event.dateTimeEnd)}} -
-
+
@@ -649,12 +652,16 @@

- + + - -