class Zone < ActiveRecord::Base
  translates # TODO: Remove once we're all done with translations!
  
  # When selecting zones that an asset occupies, we allow the zone to set
  # whether or not the zone is "sometimes" occupied. This is false by default.
  attr_writer :sometimes
  
  scope :alphabetical, -> { order(:label) }
  scope :matching_label, ->(label) {
    where(plain_label: Zone.plainify_label(label))
  }
  scope :for_items, -> { where(arel_table[:type_id].gt(1)) }

  # Temporary writer to keep the English translation record updated, while
  # primarily using the attribute on the model itself.
  #
  # Once this app and DTI 2020 are both comfortably off the translation system,
  # we can remove this!
  def label=(new_label)
    globalize.write(:en, :label, new_label)
    write_attribute(:label, new_label)
  end

  # Temporary writer to keep the English translation record updated, while
  # primarily using the attribute on the model itself.
  #
  # Once this app and DTI 2020 are both comfortably off the translation system,
  # we can remove this!
  def plain_label=(new_plain_label)
    globalize.write(:en, :plain_label, new_plain_label)
    write_attribute(:plain_label, new_plain_label)
  end

  def as_json(options={})
    super({only: [:id, :depth, :label]}.merge(options))
  end

  def uncertain_label
    @sometimes ? "#{label} sometimes" : label
  end
  
  def self.plainify_label(label)
    label.delete('\- /').parameterize
  end
end