Class: ServiceInfo

Inherits:
ActiveRecord::Base
  • Object
show all
Extended by:
EnumField::EnumeratedAttribute
Includes:
TranslationCms::WhiteList
Defined in:
app/models/service_info.rb

Overview

Schema Information

Table name: service_infos

id                             :integer          not null, primary key
structure_id                   :integer
description_translations       :hstore           default({})
items_title_translations       :hstore           default({})
items_description_translations :hstore           default({})
items_ids                      :integer          default([])
show_on_main                   :boolean          default(FALSE)
params                         :hstore           default({})
created_at                     :datetime
updated_at                     :datetime

Instance Method Summary collapse

Instance Method Details

#child_services_ratesObject



56
57
58
# File 'app/models/service_info.rb', line 56

def child_services_rates
  TranslationCms::Api::Rates::Service.find_rates_by_service(params)
end

#crm_paramsObject



43
44
45
# File 'app/models/service_info.rb', line 43

def crm_params
  params.to_json
end

#crm_params=(serialized) ⇒ Object



47
48
49
# File 'app/models/service_info.rb', line 47

def crm_params=(serialized)
  self.params = ActiveSupport::JSON.decode(serialized)
end

#crm_serviceObject



87
88
89
90
91
# File 'app/models/service_info.rb', line 87

def crm_service
  Rails.cache.fetch "raw_service_#{crm_service_id}", expires_in: 1.hour do
    TranslationCms::Api::Service.find(crm_service_id).first
  end
end

#crm_service_idObject



83
84
85
# File 'app/models/service_info.rb', line 83

def crm_service_id
  @crm_service_id ||= params.try(:[], 'service_id').try(:to_i)
end

#extra_featuresObject



74
75
76
77
78
79
80
81
# File 'app/models/service_info.rb', line 74

def extra_features
  service_id = params['service_id'].to_i
  return [] unless service_id > 0

  TranslationCms::Api::Rates::Feature.all!.select do |f|
    (f.service_id == service_id) && f.feature_type.extras?
  end
end

#itemsObject



33
34
35
# File 'app/models/service_info.rb', line 33

def items
  Structure.visible.sorted.where(id: items_ids)
end

#package_price(package) ⇒ Object



64
65
66
67
68
69
70
71
72
# File 'app/models/service_info.rb', line 64

def package_price(package)
  package ||= packages.first
  base = service_rate
  if package.price_type
    base + package.price_type.calc(package.price, base: base)
  else
    base
  end
end

#packagesObject



60
61
62
# File 'app/models/service_info.rb', line 60

def packages
  @packages ||= TranslationCms::Api::OrderPackage.all!
end


37
38
39
40
41
# File 'app/models/service_info.rb', line 37

def related_posts
  return [] if related_posts_ids.blank?

  Post.includes(:cover).past.where(id: related_posts_ids).limit(12)
end

#service_rateObject



51
52
53
54
# File 'app/models/service_info.rb', line 51

def service_rate
  @base_price ||= TranslationCms::Api::Setting.all!.first.base_price
  (TranslationCms::Api::Rates::Service.find_rate(params).try(:price) || 1) * @base_price || 0.1
end