Class: ServiceInfo
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- ServiceInfo
- 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
- #child_services_rates ⇒ Object
- #crm_params ⇒ Object
- #crm_params=(serialized) ⇒ Object
- #crm_service ⇒ Object
- #crm_service_id ⇒ Object
- #extra_features ⇒ Object
- #items ⇒ Object
- #package_price(package) ⇒ Object
- #packages ⇒ Object
- #related_posts ⇒ Object
- #service_rate ⇒ Object
Instance Method Details
#child_services_rates ⇒ Object
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_params ⇒ Object
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_service ⇒ Object
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_id ⇒ Object
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_features ⇒ Object
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 |
#items ⇒ Object
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 |
#packages ⇒ Object
60 61 62 |
# File 'app/models/service_info.rb', line 60 def packages @packages ||= TranslationCms::Api::OrderPackage.all! end |
#related_posts ⇒ Object
37 38 39 40 41 |
# File 'app/models/service_info.rb', line 37 def return [] if .blank? Post.includes(:cover).past.where(id: ).limit(12) end |
#service_rate ⇒ Object
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 |