Sha256: 665a8efafd83ed7cbdf5dab6c37216cbf14de5c7d98577ac9815ae08bc243a44

Contents?: true

Size: 936 Bytes

Versions: 3

Compression:

Stored size: 936 Bytes

Contents

# frozen_string_literal: true

module SolidusFriendlyPromotions
  module Admin
    module PromotionRulesHelper
      def options_for_promotion_rule_types(promotion_rule, level)
        existing = promotion_rule.promotion.rules.select(&:persisted?).map { |rule| rule.class.name }
        rules = SolidusFriendlyPromotions.config.send("#{level}_rules").reject { |rule| existing.include? rule.name }
        options = rules.map { |rule| [rule.model_name.human, rule.name] }
        options_for_select(options, promotion_rule.type.to_s)
      end

      def promotion_rules_by_level(promotion, level)
        promotion.rules.select do |rule|
          rule.level == level || rule_applicable_by_preference(rule, level)
        end
      end

      def rule_applicable_by_preference(rule, level)
        method_name = "preferred_#{level}_applicable"
        rule.respond_to?(method_name) && rule.send(method_name)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
solidus_friendly_promotions-1.0.0.rc.2 app/helpers/solidus_friendly_promotions/admin/promotion_rules_helper.rb
solidus_friendly_promotions-1.0.0.rc.1 app/helpers/solidus_friendly_promotions/admin/promotion_rules_helper.rb
solidus_friendly_promotions-1.0.0.pre app/helpers/solidus_friendly_promotions/admin/promotion_rules_helper.rb