Sha256: 0a16ae9fd3e038d34803f2c47d344145fdb660ceabfaef336604711069acd5d4

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

class Property < MLS::Model

  include MLS::Slugger
  include MLS::Avatar

  has_many :units
  has_many :references, as: :subject
  has_many :listings, :through => :units
  has_many :localities
  has_many :regions, :through => :localities
  has_many :image_orderings, as: :subject

  has_many   :addresses do
    def primary
      where(:primary => true).first
    end
  end

  def photos
    image_orderings.sort_by(&:order).map(&:image)
  end

  def contact
    @contact ||= listings.where(leased_at: nil, authorized: true, type: ['Lease', 'Sublease'])
            .order(size: :desc).first.try(:contact)
  end

  def address
    addresses.find(&:primary)
  end
  
  def neighborhood_region
    params = {:query => address.neighborhood} if address.try(:neighborhood)
    params ||= {:query => neighborhood} if neighborhood
    params ||= {:type => "Neighborhood"}
    fetch_region(params)
  end
  
  def city_region
    fetch_region(:type => "City")
  end
  
  def market
    fetch_region(:is_market => true)
  end
  
  def target_region
    fetch_region(:target => true)
  end
  
  def fetch_region(params)
    if regions.loaded?
      params = params.map{|k,v| [k, v]}
      regions.to_a.find{|r| r[params[0][0]] == params[0][1]}
    else
      regions.where(params).first
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mls-1.4.3 lib/mls/property.rb