40 lines
861 B
JavaScript
40 lines
861 B
JavaScript
import { List, Record } from 'immutable';
|
|
|
|
import Post from './Post.js';
|
|
import TicketClass from './TicketClass.js';
|
|
|
|
export default class Event extends Record({
|
|
id: null,
|
|
isTicketed: false,
|
|
requireLoginToSeeAuction: false,
|
|
description: null,
|
|
endTime: null,
|
|
images: new List(),
|
|
posts: new List(),
|
|
showFrom: null,
|
|
showUntil: null,
|
|
startTime: null,
|
|
tagline: null,
|
|
title: null,
|
|
url: null,
|
|
ticketClasses: new List(),
|
|
}) {
|
|
get isSoldOut() {
|
|
if (this.isTicketed) {
|
|
return false;
|
|
}
|
|
|
|
return this.ticketClasses.find(t => t.available > 0) || false;
|
|
}
|
|
}
|
|
|
|
Event.fromJS = (data = {}) => {
|
|
return new Event({
|
|
id: data._id,
|
|
...data,
|
|
images: new List(data.images),
|
|
posts: new List(data.posts.map(p => Post.fromJS(p))),
|
|
ticketClasses: new List(data.ticketClasses.map(t => TicketClass.fromJS(t))),
|
|
});
|
|
};
|