Class: TranslationCms::Api::Rates::Service

Inherits:
Base
  • Object
show all
Extended by:
EnumField::EnumeratedAttribute
Defined in:
lib/translation_cms/api/rates/service.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

all!, custom_scope!, default_attributes, destroy, dummy_resource!, #method_missing_with_translations_will_change, parsed!, path_with_custom_scope, resource_type!, update

Class Method Details

.find_rate(params = {}) ⇒ Object



36
37
38
39
40
41
42
43
44
45
# File 'lib/translation_cms/api/rates/service.rb', line 36

def find_rate(params = {})
  service = find_or_first(params['service_id'], TranslationCms::Api::Service.all!)
  target_id = params[
    service.component_ids.include?(OrderFormComponent.category.id) ? 'category_id' : 'industry_id'
  ].to_i

  all!.detect do |rate|
    (rate.service_id == service.id) && ((target_id <= 0) || (rate.target_id == target_id))
  end
end

.find_rates_by_service(params = {}) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/translation_cms/api/rates/service.rb', line 47

def find_rates_by_service(params = {})
  service = find_or_first(params['service_id'], TranslationCms::Api::Service.all!)
  result = {}
  targets = TranslationCms::Api::IndustryExpertise.all!
  @base_price ||= TranslationCms::Api::Setting.all!.first.base_price

  all!.each do |rt|
    next unless rt.service_id == service.id

    result[rt.target_id] ||= {
      target: find_or_first(rt.target_id, targets),
      rate: rt,
      price: rt[:price] * @base_price || 0.1
    }
    result[rt.target_id][:rate] = rt if result[rt.target_id][:rate].price > rt.price
  end

  result
end

Instance Method Details

#category?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/translation_cms/api/rates/service.rb', line 19

def category?
  target == 'Category'
end

#category_idObject



27
28
29
# File 'lib/translation_cms/api/rates/service.rb', line 27

def category_id
  target_id unless category?
end

#industry_expertise?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/translation_cms/api/rates/service.rb', line 23

def industry_expertise?
  target == 'IndustryExpertise'
end

#industry_expertise_idObject



31
32
33
# File 'lib/translation_cms/api/rates/service.rb', line 31

def industry_expertise_id
  target_id unless industry_expertise?
end

#serviceObject



15
16
17
# File 'lib/translation_cms/api/rates/service.rb', line 15

def service
  @service ||= TranslationCms::Api::Service.find(service_id).first
end