import { List, Record } from 'immutable';

export default class Item extends Record({
  bidCount: 0,
  bidIncrement: 10,
  catalogNumber: null,
  currentPrice: 0,
  description: null,
  donor: null,
  end: null,
  estimatedValue: null,
  eventId: null,
  hideAfterEnd: false,
  hideBeforeStart: false,
  id: null,
  images: new List(),
  isShippable: false,
  notifyOnAvailable: false,
  quantityAvailable: 1,
  soldCount: 0,
  start: null,
  startingPrice: null,
  subtitle: null,
  title: null,
  type: null,
  shippingCost: 0,
}) {
  get isSoldOut() {
    return this.quantityAvailable > this.soldCount;
  }

  get totalWithShipping() {
    return this.currentPrice + this.shippingCost;
  }
}

Item.fromJS = (data = {}) => {
  return new Item({
    id: data._id,
    ...data,
    images: List(data.images),
  });
};
