Sha256: d3efb4a078e1633b194f0e0e18425059b142409890eeab12418de489ab19f926

Contents?: true

Size: 1.43 KB

Versions: 5

Compression:

Stored size: 1.43 KB

Contents

module BestBoy
  class DayReport < ActiveRecord::Base

    include BestBoy::ObeysTestMode
    include BestBoy::Reporting

    # db configuration
    #
    #

    self.table_name = "best_boy_day_reports"

    # associations
    #
    #

    belongs_to :owner, polymorphic: true
    belongs_to :month_report

    # validations
    #
    #

    validates :month_report_id, :owner_type, :event, presence: true

    # scopes
    #
    #

    scope :created_on, ->(date) { where(created_at: date.beginning_of_day..date.end_of_day) }
    scope :week,       ->       { where(created_at: Time.zone.now.beginning_of_week..Time.zone.now)   }

    # class methods
    #
    #

    class << self

      def create_for(owner, type, source = nil, date = Time.zone.now)
        month_report = BestBoy::MonthReport.current_or_create_for(owner, type, source, date)
        day_report   = BestBoy::DayReport.new

        day_report.owner_type      = owner
        day_report.event           = type
        day_report.month_report_id = month_report.id
        day_report.event_source    = source
        day_report.created_at      = date

        day_report.save ? day_report : nil
      end

      def daily_occurrences_for(owner, type, source = nil, date)
        created_on(date).for(owner, type, source).sum(:occurrences)
      end

      def weekly_occurrences_for(owner, type, source = nil)
        week.for(owner, type, source).sum(:occurrences)
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
best_boy-3.1.0 app/models/best_boy/day_report.rb
best_boy-3.0.0 app/models/best_boy/day_report.rb
best_boy-2.2.3 lib/best_boy/models/active_record/best_boy/day_report.rb
best_boy-2.2.2 lib/best_boy/models/active_record/best_boy/day_report.rb
best_boy-2.2.1 lib/best_boy/models/active_record/best_boy/day_report.rb