Sha256: c84f66e49f251180afa51eb336a728c17bcf67470efbaf9dad8a78192eaa8b98

Contents?: true

Size: 1.58 KB

Versions: 5

Compression:

Stored size: 1.58 KB

Contents

module ReportCat
  module Reports
    include ReportCat::Core

    class DateRangeReport < Report

      PERIODS = [ :daily, :weekly, :monthly, :quarterly, :yearly ].freeze

      def defaults
        table_name = ReportCat::DateRange.table_name

        return {
            :name => :date_range_report,
            :from => table_name,
            :order_by => "#{table_name}.start_date asc",
            :group_by => "#{table_name}.start_date, #{table_name}.stop_date"
        }
      end

      def initialize( attributes = {} )
        super( defaults.merge( attributes ) )

        add_param( :start_date, :date, Date.today - 7 )
        add_param( :stop_date, :date, Date.today )
        add_param( :period, :select, :weekly, :values => PERIODS )

        table_name = ReportCat::DateRange.table_name
        add_column( :start_date, :date, :sql => "#{table_name}.start_date" )
        add_column( :stop_date, :date, :sql => "#{table_name}.stop_date" )
      end

      def query
        DateRange.generate( period, start_date, stop_date )
        super
      end

      def where
        return [
            super,
            DateRange.sql_intersect( start_date, stop_date ),
            DateRange.sql_period( period )
        ].compact.join( ' and ' )
      end

      # Accessors

      def period
        param( :period ).value.to_sym
      end

      def start_date
        param( :start_date ).value
      end

      def stop_date
        param( :stop_date ).value
      end

      def first_period
        ReportCat::DateRange.range( period, start_date, stop_date ).first
      end

    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
report_cat-5.0.3 lib/report_cat/reports/date_range_report.rb
report_cat-5.0.2 lib/report_cat/reports/date_range_report.rb
report_cat-5.0.1 lib/report_cat/reports/date_range_report.rb
report_cat-5.0.0 lib/report_cat/reports/date_range_report.rb
report_cat-0.2.0 lib/report_cat/reports/date_range_report.rb