Sha256: 74b73380eab99800decad67521633e144b6b7cbf4511a42688178a936e08ccb1

Contents?: true

Size: 869 Bytes

Versions: 5

Compression:

Stored size: 869 Bytes

Contents

class MembershipSaleSearch

  attr_reader :start, :stop
  attr_reader :organization, :membership_type

  def initialize(terms)
    @organization    = terms[:organization]
    @membership_type = terms[:membership_type]
    @start           = start_with(terms[:start])
    @stop            = stop_with(terms[:stop])

    @results = yield(results) if block_given?
  end

  def results
    @results ||= Order.membership_sale_search(self).select(&:has_membership?)
  end

  private

  def start_with(start)
    start.present? ? DateTime.parse(start) : default_start
  end

  def stop_with(stop)
    stop.present? ? Sundial.midnightish(@organization, stop) : default_stop
  end

  def default_start
    DateTime.now.in_time_zone(@organization.time_zone).beginning_of_month
  end

  def default_stop
    DateTime.now.in_time_zone(@organization.time_zone).end_of_day
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
artfully_ose-1.2.0.alpha.2 app/models/membership_sale_search.rb
artfully_ose-1.2.0.alpha.1 app/models/membership_sale_search.rb
artfully_ose-1.2.0.pre.27 app/models/membership_sale_search.rb
artfully_ose-1.2.0.pre.26 app/models/membership_sale_search.rb
artfully_ose-1.2.0.pre.24 app/models/membership_sale_search.rb