class Centra::Rule::OrderData

Build order data

Attributes

centra_orders[R]
order_filter[R]
rule_orders[R]

Public Class Methods

new(centra_csv, rule_csv, order_filter) click to toggle source
# File lib/centra/rule/order_data.rb, line 7
def initialize(centra_csv, rule_csv, order_filter)
  @order_filter = order_filter

  @email_orders = Hash.new do |hash, key|
    hash[key] = { centra: [], rule: [] }
  end

  @centra_orders = build_centra_orders!(centra_csv.rows)
  @rule_orders = build_rule_orders!(rule_csv.rows)
end

Public Instance Methods

email_orders() click to toggle source

@return [Hash] @example Return example

data.email_orders
# => { "jane@example.com" => { centra: [#<Object:0x007f>], rule: [#<Object:0x009d>] } }
# File lib/centra/rule/order_data.rb, line 22
def email_orders
  @email_orders
end

Private Instance Methods

build_centra_orders!(rows) click to toggle source
# File lib/centra/rule/order_data.rb, line 28
def build_centra_orders!(rows)
  orders = []
  rows.each do |row|
    order = Order.new(row)
    next unless order_filter.allow?(order)

    @email_orders[order.email][:centra] << order
    orders << order
  end
  orders
end
build_rule_orders!(rows) click to toggle source
# File lib/centra/rule/order_data.rb, line 40
def build_rule_orders!(rows)
  orders = []
  rows.each do |row|
    order = Order.new(row)
    next unless order_filter.date_range_covered?(order)

    @email_orders[order.email][:rule] << order
    orders << order
  end
  orders
end