Sha256: 5c19f0275b6c3cbaca1b093d0acbfff578bcb05d1bf0668502d01d0218565fd0

Contents?: true

Size: 1.41 KB

Versions: 12

Compression:

Stored size: 1.41 KB

Contents

#
# This needs to be refactored to be less database intensive
#
module Ticket::Reports
  class Base
    def initialize(parent)
      @parent = parent
    end

    def self.reporting_methods
      self.public_instance_methods - Object.public_instance_methods
    end

    private

    def parent
      @parent
    end

    def tickets
      parent.send(:tickets)
    end
  end

  class Available < Base
    def total
      tickets.select(&:on_sale?).length
    end

    def on_sale
      total
    end

    def off_sale
      tickets.select(&:off_sale?).length
    end

    def open
      on_sale + off_sale
    end

    def capacity
      tickets.length
    end
  end

  class Sold < Base
    def total
      tickets.select(&:sold?).length
    end

    def today
      tickets.sold_after(Time.now.beginning_of_day).count
    end

    def played
      tickets.sold.played.count
    end
  end

  class Comped < Base
    def total
      tickets.select(&:comped?).length
    end

    def today
      tickets.comped.sold_after(Time.now.beginning_of_day).count
    end

    def played
      tickets.comped.played.count
    end
  end

  class Sales < Base
    def total
      tickets.sold.sum(:sold_price)
    end

    def today
      tickets.sold_after(Time.now.beginning_of_day).sum(:sold_price)
    end

    def played
      tickets.sold.played.sum(:sold_price)
    end

    def advance
      tickets.sold.unplayed.sum(:sold_price)
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
artfully_ose-1.3.0.pre4 app/models/ticket/reports.rb
artfully_ose-1.3.0.pre3 app/models/ticket/reports.rb
artfully_ose-1.3.0.pre2 app/models/ticket/reports.rb
artfully_ose-1.3.0.pre1 app/models/ticket/reports.rb
artfully_ose-1.2.0 app/models/ticket/reports.rb
artfully_ose-1.2.0.beta.1 app/models/ticket/reports.rb
artfully_ose-1.2.0.alpha.2 app/models/ticket/reports.rb
artfully_ose-1.2.0.alpha.1 app/models/ticket/reports.rb
artfully_ose-1.2.0.pre.27 app/models/ticket/reports.rb
artfully_ose-1.2.0.pre.26 app/models/ticket/reports.rb
artfully_ose-1.2.0.pre.24 app/models/ticket/reports.rb
artfully_ose-1.2.0.pre.23 app/models/ticket/reports.rb