class WeWorkRemotely::Company
  attr_accessor :name, :jobs

  @@all = []

  def initialize(name)
    @name = name
    @jobs = []
  end

  def self.all
    @@all
  end

  def self.destroy_all
    @@all.clear
  end

  def save
    @@all << self
  end

  def self.create(name)
    company = WeWorkRemotely::Company.new(name)
    company.save
    company
  end

  def add_job(job)
    self.jobs << job unless self.jobs.include?(job)
    job.company = self unless job.company == self
  end

  def categories
    self.jobs.collect { |job| job.category }.uniq
  end

  def self.find_or_create_by_name(name, *job)
    self.all.detect { |company| company.name == name } || self.create(name)
  end

end