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..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,23 +44,23 @@ 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,
- extraValuePaths : ['order', 'isCheckedIn'],
+ width : 130,
+ 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..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,7 +1,18 @@
{{#if (eq this.extraRecords.order.status 'completed')}}
- {{#if this.extraRecords.isCheckedIn}}
-
- {{else}}
-
- {{/if}}
+
+
+ {{t 'Checkin'}}
+
+
+
+
{{/if}}