Sha256: 1b058e016e94033f40e1c2d138abfafd2eace8247e266ac08c44421db6fbbc61

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

class LifetimeType
  include EnumField::DefineEnum
  include ActionView::Helpers::NumberHelper

  attr_reader :code

  def initialize(code)
    @code = code.to_sym
  end

  def title
    I18n.t(code, scope: [:lifetime_type])
  end

  def orders_count?
    @code == :orders_count
  end

  def orders_total?
    @code == :orders_total
  end

  def words_count?
    @code == :words_count
  end

  def symbol(options = {})
    case @code
    when :orders_total then '$'
    when :words_count then " pages#{options[:plus]}"
    else ''
    end
  end

  def current(finance)
    case @code
    when :orders_count then finance.try :completed_orders_count
    when :orders_total then finance.try :completed_payments_total
    when :words_count then finance.try :completed_words_count
    end
  end

  def current_with_symbol(account)
    [number_with_precision(current(account).to_f, precision: 2, strip_insignificant_zeros: true), symbol].join
  end

  def affilate_title
    I18n.t(code, scope: [:affilate, :commission_type])
  end

  define_enum do |builder|
    builder.member :orders_count, object: new(:orders_count)
    builder.member :orders_total, object: new(:orders_total)
    builder.member :words_count, object: new(:words_count)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
translation_cms-0.1.5 app/models/enums/lifetime_type.rb