Class: Lib::Boats::RentPricePerSeason

Inherits:
Object
  • Object
show all
Extended by:
ActionView::Helpers::NumberHelper, Custom::CurrencyHelper, Custom::PriceHelper
Defined in:
app/serializers/lib/boats/rent_price_per_season.rb

Class Method Summary collapse

Methods included from Custom::CurrencyHelper

currency_attribute_name, currency_for_label, currency_symbol, num_to_cur

Methods included from Custom::SelectHelper

#collection_for_select, #collection_name_by_id

Methods included from Custom::PriceHelper

price_discount, price_format

Class Method Details

.min_rentprice(boat, currency) ⇒ Hash

Вернёт отформатированное минимальное число среди цен на аренду вместе с подписью. Если у лодки не заполнены цены - вернёт дефлотное значение. value возвращается, но не используется.

Returns:

  • (Hash)

    { value: String, perseason: String }



14
15
16
17
18
19
20
21
# File 'app/serializers/lib/boats/rent_price_per_season.rb', line 14

def self.min_rentprice(boat, currency)
  ::Dictionaries::BoatCharterAttribute::ALL.map do |attr|
    {
      attr:  attr.to_s,
      value: boat.send(currency_attribute_name(attr, currency))
    }
  end.delete_if { |el| !el[:value].present? }.sort_by { |el| el[:value] }.first || { attr: 'charter_1_day_high', value: 0 }
end

.price(boat, currency = 'USD', rent_price_id = nil) ⇒ Object



41
42
43
44
# File 'app/serializers/lib/boats/rent_price_per_season.rb', line 41

def self.price(boat, currency = 'USD', rent_price_id = nil)
  attr = spot_rentprice_id(boat, currency, rent_price_id)
  price_format(boat, attr, currency: currency)
end

.price_discount(boat, currency = 'USD') ⇒ Object



46
47
48
# File 'app/serializers/lib/boats/rent_price_per_season.rb', line 46

def self.price_discount(boat, currency = 'USD')
  boat.send('%s_discount' % min_rentprice(boat, currency)[:attr])
end

.spot_rentprice_id(boat, currency = 'USD', rent_price_id = nil) ⇒ String

Определить столбец, из которого надо взять цену аренды. Может зависеть от контекста - от того, какой параметр выставлен в поисковой форме. Если с поисковой формы приходит nil или пустая строка - вернёт дефолтное значение. Если у лодки не заполнено искомое поле - вернёт дефолтное значение. Дефолтное значение - вычисляется с помощью min_rent_price

Parameters:

  • rent_price_id (Symbol, String) (defaults to: nil)

    Например: charter_1_day_low

Returns:

  • (String)


32
33
34
35
36
37
38
39
# File 'app/serializers/lib/boats/rent_price_per_season.rb', line 32

def self.spot_rentprice_id(boat, currency = 'USD', rent_price_id = nil)
  default_id =  min_rentprice(boat, currency)[:attr]
  return default_id unless rent_price_id

  return default_id unless boat.attributes[currency_attribute_name(rent_price_id, currency)].present?

  rent_price_id.to_s
end