Class: Lib::Boats::RentPricePerSeason
- Inherits:
-
Object
- Object
- Lib::Boats::RentPricePerSeason
- Extended by:
- ActionView::Helpers::NumberHelper, Custom::CurrencyHelper, Custom::PriceHelper
- Defined in:
- app/serializers/lib/boats/rent_price_per_season.rb
Class Method Summary collapse
-
.min_rentprice(boat, currency) ⇒ Hash
Вернёт отформатированное минимальное число среди цен на аренду вместе с подписью.
- .price(boat, currency = 'USD', rent_price_id = nil) ⇒ Object
- .price_discount(boat, currency = 'USD') ⇒ Object
-
.spot_rentprice_id(boat, currency = 'USD', rent_price_id = nil) ⇒ String
Определить столбец, из которого надо взять цену аренды.
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
Class Method Details
.min_rentprice(boat, currency) ⇒ Hash
Вернёт отформатированное минимальное число среди цен на аренду вместе с подписью. Если у лодки не заполнены цены - вернёт дефлотное значение. value возвращается, но не используется.
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
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 |