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) ⇒ 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) ⇒ Object
32 33 34 35 36 37 38 39 40 |
# File 'app/services/spree_cm_commissioner/pricing_rules/build_params.rb', line 32 def build_action_attributes(action_data) 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 { id: action_data[:id], calculator: calculator } end |
.build_rules_attributes(rules_array) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'app/services/spree_cm_commissioner/pricing_rules/build_params.rb', line 19 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 |
# 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 { name: group_params[:name], status: group_params[:status], template_key: group_params[:template_key], match_type: group_params[:match_type], pricing_rules_attributes: build_rules_attributes(params[:pricing_rules]), pricing_action_attributes: build_action_attributes(params[:pricing_action]) } end |
.set_preferences(calculator, preferences) ⇒ Object
42 43 44 45 46 47 48 49 50 |
# File 'app/services/spree_cm_commissioner/pricing_rules/build_params.rb', line 42 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 |