Sha256: 598f525d4a8c6771e0cf058f6cca41a74e9d213489639b681594930fc6cb2a68
Contents?: true
Size: 999 Bytes
Versions: 62
Compression:
Stored size: 999 Bytes
Contents
module Workarea module Pricing class Discount class BuySomeGetSome::OrderItemsByProduct include Enumerable class Product < Struct.new(:id, :items, :quantity, :category_ids) def matches_categories?(*ids) match_ids = Array(ids).flatten.map(&:to_s) (category_ids.map(&:to_s) & match_ids).any? end end delegate :any?, :empty?, :each, to: :products def initialize(order) @order = order end # Aggregate product that reflects all items in the # order that share a product_id # # @return [Array<OrderProducts::Product>] # def products @products ||= @order.items.group_by(&:product_id).map do |id, items| Product.new( id, items, items.sum(&:quantity), items.flat_map(&:category_ids).compact.uniq ) end end end end end end
Version data entries
62 entries across 62 versions & 1 rubygems