From eb69d875822a1b6c50fe4606e66097d3ffce798e Mon Sep 17 00:00:00 2001 From: maze-runner Date: Wed, 23 Jun 2021 19:25:33 +0530 Subject: [PATCH 1/3] f --- app/components/side-bar.js | 2 +- .../view/tickets/attendees/cell-action.js | 53 ++++++++++++++++++- .../events/view/tickets/attendees/list.js | 21 +++++--- app/models/attendee.js | 1 + .../view/tickets/attendees/cell-action.hbs | 22 ++++++-- 5 files changed, 84 insertions(+), 15 deletions(-) diff --git a/app/components/side-bar.js b/app/components/side-bar.js index 6576ecf4076..25a5f13139d 100644 --- a/app/components/side-bar.js +++ b/app/components/side-bar.js @@ -61,7 +61,7 @@ export default class SideBar extends Component { $(function() { $(window).on('scroll', function() { - const menuPosition = $('#event-contents').offset().top; + const menuPosition = $('#event-contents').offset()?.top; if ($(window).scrollTop() > menuPosition) { $('#public-event-content').addClass('fixed'); } else { diff --git a/app/components/ui-table/cell/events/view/tickets/attendees/cell-action.js b/app/components/ui-table/cell/events/view/tickets/attendees/cell-action.js index ef3e79cd247..eb67605434a 100644 --- a/app/components/ui-table/cell/events/view/tickets/attendees/cell-action.js +++ b/app/components/ui-table/cell/events/view/tickets/attendees/cell-action.js @@ -1,5 +1,54 @@ import classic from 'ember-classic-decorator'; import Component from '@ember/component'; - +import moment from 'moment'; @classic -export default class CellAction extends Component {} +export default class CellAction extends Component { + currentlyCheckedin = []; + eventdates = []; + get allDates() { + const dates = []; + const date1 = moment(this.extraRecords.event.get('endsAtDate')); + const date2 = moment(this.extraRecords.event.get('startsAtDate')); + const diff = date1.diff(date2, 'days'); + for (let i = 0; i < diff; i++) { + dates.push((moment(this.extraRecords.event.get('startsAtDate'), 'MM-DD-YYYY').add(i, 'days').format('MM-DD-YYYY'))); + this.eventdates.push(moment(this.extraRecords.event.get('startsAtDate'), 'MM-DD-YYYY').add(i, 'days').format('MM-DD-YYYY')); + } + return dates; + } + + get checkinTimes() { + if (this.extraRecords.checkinTimes) { + const x = this.extraRecords.checkinTimes?.split(','); + const checkinDates = []; + for (const i of x) { + checkinDates.push(moment(i).format('MM-DD-YYYY')); + } + return checkinDates; + } + return []; + } + + get checkoutTimes() { + if (this.extraRecords.checkoutTimes) { + const x = this.extraRecords.checkoutTimes?.split(','); + const checkoutDates = []; + for (const i of x) { + checkoutDates.push(moment(i).format('MM-DD-YYYY')); + } + return checkoutDates; + } + return []; + } + + get currentlyChecked() { + for (const i of this.eventdates) { + const checkinCount = this.checkinTimes?.filter(x => x === i).length || 0; + const checkoutCount = this.checkoutTimes?.filter(x => x === i).length || 0; + if (checkinCount > checkoutCount && !this.currentlyCheckedin.includes(i)) { + this.currentlyCheckedin.push(i); + } + } + return this.currentlyCheckedin; + } +} diff --git a/app/controllers/events/view/tickets/attendees/list.js b/app/controllers/events/view/tickets/attendees/list.js index 08f00708ec0..916bd7c7b28 100644 --- a/app/controllers/events/view/tickets/attendees/list.js +++ b/app/controllers/events/view/tickets/attendees/list.js @@ -60,7 +60,7 @@ export default class extends Controller.extend(EmberTableControllerMixin) { name : 'Actions', valuePath : 'id', width : 90, - extraValuePaths : ['order', 'isCheckedIn'], + extraValuePaths : ['order', 'isCheckedIn', 'event', 'checkinTimes', 'checkoutTimes'], cellComponent : 'ui-table/cell/events/view/tickets/attendees/cell-action', actions : { toggleCheckIn: this.toggleCheckIn.bind(this) @@ -70,16 +70,23 @@ export default class extends Controller.extend(EmberTableControllerMixin) { } @action - toggleCheckIn(attendee_id) { + toggleCheckIn(attendee_id, date, isCheckedInCurrently) { const attendee = this.store.peekRecord('attendee', attendee_id, { backgroundReload: false }); - attendee.toggleProperty('isCheckedIn'); - if (attendee.isCheckedIn) { - const newCheckinTimes = attendee.get('checkinTimes') === null ? `${moment().toISOString()}` : `${attendee.get('checkinTimes')},${moment().toISOString()}`; + let myTime = moment().toISOString(); + if (moment(date, 'MM-DD-YYYY').format('MM-DD-YYYY') !== moment().format('MM-DD-YYYY')) { + myTime = moment(date, 'MM-DD-YYYY'); + myTime = myTime.format('YYYY-MM-DD') + 'T13:00:00.000Z'; + } + if (!isCheckedInCurrently) { + const newCheckinTimes = attendee.get('checkinTimes') === null ? `${myTime}` : `${attendee.get('checkinTimes')},${myTime}`; attendee.set('checkinTimes', newCheckinTimes); + } else { + const newCheckoutTimes = attendee.get('checkoutTimes') === null ? `${myTime}` : `${attendee.get('checkoutTimes')},${myTime}`; + attendee.set('checkoutTimes', newCheckoutTimes); } attendee.save() - .then(savedAttendee => { - const message = savedAttendee.isCheckedIn ? this.l10n.t('Attendee Checked-In Successfully') : this.l10n.t('Attendee Checked-Out Successfully'); + .then(() => { + const message = !isCheckedInCurrently ? this.l10n.t('Attendee Checked-In Successfully') : this.l10n.t('Attendee Checked-Out Successfully'); this.notify.success(message); this.refreshModel.bind(this)(); }) diff --git a/app/models/attendee.js b/app/models/attendee.js index de42e624c60..0a45f2c57d2 100644 --- a/app/models/attendee.js +++ b/app/models/attendee.js @@ -12,6 +12,7 @@ export default ModelBase.extend({ lastname : attr('string'), isCheckedIn : attr('boolean', { defaultValue: false }), checkinTimes : attr('string'), + checkoutTimes : attr('string'), state : attr('string'), address : attr('string'), pdfUrl : attr('string'), diff --git a/app/templates/components/ui-table/cell/events/view/tickets/attendees/cell-action.hbs b/app/templates/components/ui-table/cell/events/view/tickets/attendees/cell-action.hbs index d7d27a79e20..06bbed67c08 100644 --- a/app/templates/components/ui-table/cell/events/view/tickets/attendees/cell-action.hbs +++ b/app/templates/components/ui-table/cell/events/view/tickets/attendees/cell-action.hbs @@ -1,7 +1,19 @@ {{#if (eq this.extraRecords.order.status 'completed')}} - {{#if this.extraRecords.isCheckedIn}} - - {{else}} - - {{/if}} + +
+ {{t 'Checkin'}} +
+ + +
{{/if}} +{{this.currentlyChecked}} From c9affdd0bfcb4e6eb85dfbdf56d1a0c2ccbc91ad Mon Sep 17 00:00:00 2001 From: maze-runner Date: Thu, 1 Jul 2021 19:43:08 +0530 Subject: [PATCH 2/3] width --- .../events/view/tickets/attendees/list.js | 12 ++++++------ .../events/view/tickets/attendees/cell-action.hbs | 3 +-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/controllers/events/view/tickets/attendees/list.js b/app/controllers/events/view/tickets/attendees/list.js index 916bd7c7b28..92006602201 100644 --- a/app/controllers/events/view/tickets/attendees/list.js +++ b/app/controllers/events/view/tickets/attendees/list.js @@ -25,7 +25,7 @@ export default class extends Controller.extend(EmberTableControllerMixin) { }, { name : 'Date and Time', - width : 140, + width : 120, valuePath : 'order.completed_at', extraValuePaths : ['order'], cellComponent : 'ui-table/cell/events/view/tickets/attendees/cell-date', @@ -34,7 +34,7 @@ export default class extends Controller.extend(EmberTableControllerMixin) { }, { name : 'Ticket Price', - width : 90, + width : 50, valuePath : 'ticket.price', extraValuePaths : ['event', 'discountCode'], cellComponent : 'ui-table/cell/events/view/tickets/attendees/cell-price', @@ -44,22 +44,22 @@ export default class extends Controller.extend(EmberTableControllerMixin) { { name : 'First Name', valuePath : 'firstname', - width : 100 + width : 60 }, { name : 'Last Name', valuePath : 'lastname', - width : 90 + width : 60 }, { name : 'Email', valuePath : 'email', - width : 120 + width : 130 }, { name : 'Actions', valuePath : 'id', - width : 90, + width : 130, extraValuePaths : ['order', 'isCheckedIn', 'event', 'checkinTimes', 'checkoutTimes'], cellComponent : 'ui-table/cell/events/view/tickets/attendees/cell-action', actions : { diff --git a/app/templates/components/ui-table/cell/events/view/tickets/attendees/cell-action.hbs b/app/templates/components/ui-table/cell/events/view/tickets/attendees/cell-action.hbs index 06bbed67c08..67d300238dc 100644 --- a/app/templates/components/ui-table/cell/events/view/tickets/attendees/cell-action.hbs +++ b/app/templates/components/ui-table/cell/events/view/tickets/attendees/cell-action.hbs @@ -1,5 +1,5 @@ {{#if (eq this.extraRecords.order.status 'completed')}} - +
{{t 'Checkin'}}
@@ -16,4 +16,3 @@
{{/if}} -{{this.currentlyChecked}} From 1feb5593cfb6ab81434d9d7f5ea48d1091ed3585 Mon Sep 17 00:00:00 2001 From: Sundaram Dubey <56407566+maze-runnar@users.noreply.github.com> Date: Thu, 29 Jul 2021 17:22:42 +0530 Subject: [PATCH 3/3] Update app/controllers/events/view/tickets/attendees/list.js Co-authored-by: Meghal Bisht --- app/controllers/events/view/tickets/attendees/list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/events/view/tickets/attendees/list.js b/app/controllers/events/view/tickets/attendees/list.js index 92006602201..89413ed8797 100644 --- a/app/controllers/events/view/tickets/attendees/list.js +++ b/app/controllers/events/view/tickets/attendees/list.js @@ -75,7 +75,7 @@ export default class extends Controller.extend(EmberTableControllerMixin) { let myTime = moment().toISOString(); if (moment(date, 'MM-DD-YYYY').format('MM-DD-YYYY') !== moment().format('MM-DD-YYYY')) { myTime = moment(date, 'MM-DD-YYYY'); - myTime = myTime.format('YYYY-MM-DD') + 'T13:00:00.000Z'; + myTime = myTime.format('YYYY-MM-DD') + 'T13:00:00.000Z'; } if (!isCheckedInCurrently) { const newCheckinTimes = attendee.get('checkinTimes') === null ? `${myTime}` : `${attendee.get('checkinTimes')},${myTime}`;