- implementing immutable.js
This commit is contained in:
39
app/domain/Event.js
Normal file
39
app/domain/Event.js
Normal file
@@ -0,0 +1,39 @@
|
||||
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))),
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user