Module: SpreeCmCommissioner::Admin::VariantsControllerDecorator
- Includes:
- KycableHelper
- Defined in:
- app/controllers/spree_cm_commissioner/admin/variants_controller_decorator.rb
Class Method Summary collapse
Instance Method Summary collapse
- #build_guest_info ⇒ Object
-
#build_option_values ⇒ Object
construct option values base on name & create new option value when not exist.
-
#build_option_values_form ⇒ Object
build option values that not exist.
-
#validated_option_value_name(name, option_type_id) ⇒ Object
some option value name changed after validate.
Methods included from KycableHelper
Class Method Details
.prepended(base) ⇒ Object
6 7 8 9 10 |
# File 'app/controllers/spree_cm_commissioner/admin/variants_controller_decorator.rb', line 6 def self.prepended(base) base.before_action :build_option_values_form, only: %i[edit new] base.before_action :build_option_values, only: %i[create update] base.before_action :build_guest_info, only: %i[create update] end |
Instance Method Details
#build_guest_info ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'app/controllers/spree_cm_commissioner/admin/variants_controller_decorator.rb', line 36 def build_guest_info bit_fields = SpreeCmCommissioner::KycBitwise::BIT_FIELDS.keys if permitted_resource_params[:use_product_kyc] == '1' permitted_resource_params[:kyc] = nil else @kyc_result = calculate_kyc_value(params[:variant]) permitted_resource_params[:kyc] = @kyc_result end # remove these fields from params to prevent unknown attribute error bit_fields.each { |field| params.require(:variant).delete(field) } params.require(:variant).delete(:use_product_kyc) end |
#build_option_values ⇒ Object
construct option values base on name & create new option value when not exist. then set to variant. Empty values will remove the option value from variant.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/controllers/spree_cm_commissioner/admin/variants_controller_decorator.rb', line 21 def build_option_values option_values = permitted_resource_params.delete(:option_values_attributes).to_h.values return if option_values.blank? @object.option_values = option_values.each_with_object([]) do |option_value, new_option_values| option_value_name = validated_option_value_name(option_value[:name], option_value[:option_type_id]) next if option_value_name.blank? option_type = @product.option_types.find(option_value[:option_type_id]) existing_option_value = option_type.option_values.find_or_create_by(name: option_value_name) new_option_values << existing_option_value end end |
#build_option_values_form ⇒ Object
build option values that not exist. All option values will display to UI.
13 14 15 16 17 |
# File 'app/controllers/spree_cm_commissioner/admin/variants_controller_decorator.rb', line 13 def build_option_values_form @product.variant_kind_option_types.each do |option_type| @variant.option_values.build(option_type: option_type) if @variant.option_values.find_by(option_type_id: option_type.id).blank? end end |
#validated_option_value_name(name, option_type_id) ⇒ Object
some option value name changed after validate.
51 52 53 54 55 56 57 |
# File 'app/controllers/spree_cm_commissioner/admin/variants_controller_decorator.rb', line 51 def validated_option_value_name(name, option_type_id) return nil if name.blank? option_value = Spree::OptionValue.new(name: name, option_type_id: option_type_id) option_value.validate option_value.name end |