Sha256: a5921d2bbbc96fc03e9b41143fe0656138209524af7e4f5e4cc4340d7eefd37e
Contents?: true
Size: 1.11 KB
Versions: 4
Compression:
Stored size: 1.11 KB
Contents
# frozen_string_literal: true module SolidusFriendlyPromotions class EligibilityResults include Enumerable attr_reader :results, :promotion def initialize(promotion) @promotion = promotion @results = [] end def add(item:, condition:, success:, code:, message:) results << EligibilityResult.new( item: item, condition: condition, success: success, code: code, message: message ) end def success? return true if results.empty? promotion.benefits.any? do |benefit| benefit.conditions.all? do |condition| results_for_condition = results.select { |result| result.condition == condition } results_for_condition.any?(&:success) end end end def error_messages return [] if results.empty? results.group_by(&:condition).map do |condition, results| next if results.any?(&:success) results.detect { |r| !r.success }&.message end.compact end def each(&block) results.each(&block) end def last results.last end end end
Version data entries
4 entries across 4 versions & 1 rubygems