Sha256: 0b9515a1fe480c4032b867d67d6f45207a46cb96da3a9be308d574b457030514

Contents?: true

Size: 1.29 KB

Versions: 3

Compression:

Stored size: 1.29 KB

Contents

module ESA
  module ContextProviders
    class DateContextProvider < ESA::ContextProvider
      def self.provided_types
        ["ESA::Contexts::DateContext"]
      end

      def self.context_id(context, options = {})
        [context.start_date, context.end_date]
      end

      def self.contained_ids(context, options = {})
        if options[:all].present? and options[:all] == true and
            context.effective_start_date.present? and
            context.effective_end_date.present?
          dates = context.effective_start_date..context.effective_end_date
        else
          dates = context.transactions.uniq.pluck("date(esa_transactions.time)").sort
        end

        if options[:period].present? and options[:period] == :month
          dates.group_by{|d| [d.year, d.month]}.keys.
          map do |year,month|
            start_date = Date.new(year, month, 1)
            end_date = start_date.end_of_month
            [start_date, end_date]
          end
        else
          dates.zip dates
        end
      end

      def self.instantiate(parent, namespace, id, options = {})
        start_date, end_date = id
        ESA::Contexts::DateContext.new(chart_id: parent.chart_id, parent_id: parent.id, namespace: namespace, start_date: start_date, end_date: end_date)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
event_sourced_accounting-0.2.6 lib/esa/context_providers/date_context_provider.rb
event_sourced_accounting-0.2.4 lib/esa/context_providers/date_context_provider.rb
event_sourced_accounting-0.2.3 lib/esa/context_providers/date_context_provider.rb