Module: SpreeCmCommissioner::PricingRules::BuildParams
- Defined in:
- app/services/spree_cm_commissioner/pricing_rules/build_params.rb
Class Method Summary collapse
- .build_action_attributes(action_data, template = nil) ⇒ Object
- .build_rules_attributes(rules_array) ⇒ Object
- .permitted_group_params(params) ⇒ Object
- .set_preferences(calculator, preferences) ⇒ Object
Class Method Details
.build_action_attributes(action_data, template = nil) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'app/services/spree_cm_commissioner/pricing_rules/build_params.rb', line 34 def build_action_attributes(action_data, template = nil) return nil unless action_data&.dig(:calculator) calc_data = action_data[:calculator] calculator = calc_data[:type].safe_constantize&.new set_preferences(calculator, calc_data[:preferences]) if calculator action_type = action_data[:type] || template&.dig(:action, :type) { id: action_data[:id], type: action_type, calculator: calculator } end |
.build_rules_attributes(rules_array) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'app/services/spree_cm_commissioner/pricing_rules/build_params.rb', line 21 def build_rules_attributes(rules_array) return [] unless rules_array rules_array.map do |r| { id: r[:id], type: r[:type], private_metadata: r[:private_metadata], _destroy: r[:_destroy] } end end |
.permitted_group_params(params) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'app/services/spree_cm_commissioner/pricing_rules/build_params.rb', line 6 def permitted_group_params(params) group_params = params[:spree_cm_commissioner_pricing_rule_group] || params template_key = group_params[:template_key] || params[:template_key] template = PRICING_RULE_GROUP_TEMPLATES[template_key.to_sym] if template_key { name: template&.dig(:name) || group_params[:name], status: group_params[:status] || 'active', template_key: template_key, match_type: group_params[:match_type] || 'any', pricing_rules_attributes: build_rules_attributes(params[:pricing_rules]), pricing_action_attributes: build_action_attributes(params[:pricing_action], template) } end |
.set_preferences(calculator, preferences) ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'app/services/spree_cm_commissioner/pricing_rules/build_params.rb', line 51 def set_preferences(calculator, preferences) return unless preferences && calculator prefs = preferences.respond_to?(:to_unsafe_h) ? preferences.to_unsafe_h : preferences prefs.each do |key, value| setter = "preferred_#{key}=" calculator.public_send(setter, value) if calculator.respond_to?(setter) end end |