Sha256: a900b35a5112690cf6d344384065574fba70b23b050663a5ca665e8917e7b9cf
Contents?: true
Size: 945 Bytes
Versions: 4
Compression:
Stored size: 945 Bytes
Contents
# frozen_string_literal: true module SolidusFriendlyPromotions module Conditions class UserRole < Condition include OrderLevelCondition preference :role_ids, :array, default: [] MATCH_POLICIES = %w[any all].freeze preference :match_policy, default: MATCH_POLICIES.first def eligible?(order, _options = {}) return false unless order.user if all_match_policy? match_all_roles?(order) else match_any_roles?(order) end end private def all_match_policy? preferred_match_policy == "all" && preferred_role_ids.present? end def user_roles(order) order.user.spree_roles.where(id: preferred_role_ids) end def match_all_roles?(order) user_roles(order).count == preferred_role_ids.count end def match_any_roles?(order) user_roles(order).exists? end end end end
Version data entries
4 entries across 4 versions & 1 rubygems