Skip to content

Commit

Permalink
fix: Deleted ticket publish prevention logic (#5172)
Browse files Browse the repository at this point in the history
  • Loading branch information
iamareebjamal authored Sep 29, 2020
1 parent d2c4e5d commit 13f8f74
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions app/mixins/event-wizard.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,15 @@ export default Mixin.create(MutableArray, CustomFormMixin, {
];
},

allTicketsDeleted(tickets, deleted) {
if (!deleted) {return true}
const deletedTickets = new Set(deleted);
const eventTickets = new Set(tickets.toArray());

// eventTickets - deletedTickets
return new Set([...eventTickets].filter(ticket => !deletedTickets.has(ticket))).size === 0;
},

/**
* Save event & related data
*
Expand All @@ -71,8 +80,8 @@ export default Mixin.create(MutableArray, CustomFormMixin, {
}
}
const numberOfTickets = data.tickets ? data.tickets.length : 0;

if (event.name && event.startsAtDate && event.endsAtDate && (event.state === 'draft' || (numberOfTickets > 0 && event.deletedTickets?.length !== numberOfTickets))) {
const areAllTicketsDeleted = this.allTicketsDeleted(data.tickets, event.deletedTickets);
if (event.name && event.startsAtDate && event.endsAtDate && (event.state === 'draft' || (numberOfTickets > 0 && !areAllTicketsDeleted))) {
await destroyDeletedTickets(event.deletedTickets);
await event.save();

Expand Down Expand Up @@ -134,7 +143,7 @@ export default Mixin.create(MutableArray, CustomFormMixin, {
if (event.startsAtDate === undefined || event.endsAtDate === undefined) {
errorObject.errors.push({ 'detail': 'Dates have not been provided' });
}
if (numberOfTickets === 0 || event.deletedTickets?.length === numberOfTickets) {
if (numberOfTickets === 0 || areAllTicketsDeleted) {
errorObject.errors.push({ 'detail': 'Tickets are required for publishing/published event' });
}
throw (errorObject);
Expand Down Expand Up @@ -226,7 +235,7 @@ export default Mixin.create(MutableArray, CustomFormMixin, {
},
onValidate(callback) {
this.onValid(() => {
const allTicketsDeleted = this.deletedTickets?.length === this.data.event.tickets.length;
const allTicketsDeleted = this.allTicketsDeleted(this.data.event.tickets, this.deletedTickets);
if (allTicketsDeleted) {
this.notify.error('Tickets are required for publishing/published event');
}
Expand Down

1 comment on commit 13f8f74

@vercel
Copy link

@vercel vercel bot commented on 13f8f74 Sep 29, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.