Sha256: 0a618fb6f0e2db08c29389836109d133d0e7fa4ccce8829c3cacf66ee5f558ac

Contents?: true

Size: 1.56 KB

Versions: 15

Compression:

Stored size: 1.56 KB

Contents

# frozen_string_literal: true

module PriceHubble
  # The PriceHubble valuation result for a given property.
  #
  # @see https://docs.pricehubble.com/#international-valuation
  class Valuation < BaseEntity
    # Mapped and tracked attributes
    tracked_attr :currency, :sale_price, :sale_price_range, :rent_gross,
                 :rent_gross_range, :rent_net, :rent_net_range, :confidence,
                 :scores, :status, :deal_type, :valuation_date, :country_code

    # Define attribute types for casting
    typed_attr :currency, :string_inquirer
    typed_attr :confidence, :string_inquirer
    typed_attr :deal_type, :string_inquirer
    typed_attr :country_code, :string_inquirer
    typed_attr :sale_price_range, :range
    typed_attr :rent_gross_range, :range
    typed_attr :rent_net_range, :range

    # Associations
    with_options(persist: true, initialize: true) do
      has_one :property
      has_one :scores, class_name: ValuationScores
    end

    # A streamlined helper to get the value by the deal type. (sale price
    # if deal type is +sale+ or gross rent value if deal type is +rent+)
    #
    # @return [Integer, nil] the value of the property
    def value
      return sale_price if deal_type.sale?

      rent_gross
    end

    # A streamlined helper to get the value range by the deal type. (sale price
    # range if deal type is +sale+ or gross rent range if deal type is +rent+)
    #
    # @return [Range, nil] the value range of the property
    def value_range
      return sale_price_range if deal_type.sale?

      rent_gross_range
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
pricehubble-1.3.0 lib/price_hubble/entity/valuation.rb
pricehubble-1.2.5 lib/price_hubble/entity/valuation.rb
pricehubble-1.2.4 lib/price_hubble/entity/valuation.rb
pricehubble-1.2.3 lib/price_hubble/entity/valuation.rb
pricehubble-1.2.2 lib/price_hubble/entity/valuation.rb
pricehubble-1.2.1 lib/price_hubble/entity/valuation.rb
pricehubble-1.2.0 lib/price_hubble/entity/valuation.rb
pricehubble-1.1.0 lib/pricehubble/entity/valuation.rb
pricehubble-1.0.0 lib/pricehubble/entity/valuation.rb
pricehubble-0.4.2 lib/pricehubble/entity/valuation.rb
pricehubble-0.4.1 lib/pricehubble/entity/valuation.rb
pricehubble-0.4.0 lib/pricehubble/entity/valuation.rb
pricehubble-0.3.0 lib/pricehubble/entity/valuation.rb
pricehubble-0.2.0 lib/pricehubble/entity/valuation.rb
pricehubble-0.1.0 lib/pricehubble/entity/valuation.rb