Sha256: 974911ceff2013644b65c0a8a98db7abf08c9e1f56af601b01cbe3d93b75ea77

Contents?: true

Size: 1.46 KB

Versions: 5

Compression:

Stored size: 1.46 KB

Contents

# frozen_string_literal: true
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.5.0 app/models/best_boy/day_report.rb
best_boy-3.4.1 app/models/best_boy/day_report.rb
best_boy-3.4.0 app/models/best_boy/day_report.rb
best_boy-3.3.0 app/models/best_boy/day_report.rb
best_boy-3.2.0 app/models/best_boy/day_report.rb