Sha256: 503f76e20531df6d55726b7e8c97edcc8e264d66ba1bfe5921098ac9be1407b8

Contents?: true

Size: 1.66 KB

Versions: 28

Compression:

Stored size: 1.66 KB

Contents

class ManifestationReserveStat < ActiveRecord::Base
  attr_accessible :start_date, :end_date, :note
  include CalculateStat
  default_scope :order => 'manifestation_reserve_stats.id DESC'
  scope :not_calculated, where(:state => 'pending')
  has_many :reserve_stat_has_manifestations
  has_many :manifestations, :through => :reserve_stat_has_manifestations

  state_machine :initial => :pending do
    before_transition :pending => :completed, :do => :calculate_count
    event :calculate do
      transition :pending => :completed
    end
  end

  paginates_per 10

  def calculate_count
    self.started_at = Time.zone.now
    Manifestation.find_each do |manifestation|
      daily_count = manifestation.reserves.created(self.start_date, self.end_date).size
      #manifestation.update_attributes({:daily_reserves_count => daily_count, :total_count => manifestation.total_count + daily_count})
      if daily_count > 0
        self.manifestations << manifestation
        sql = ['UPDATE reserve_stat_has_manifestations SET reserves_count = ? WHERE manifestation_reserve_stat_id = ? AND manifestation_id = ?', daily_count, self.id, manifestation.id]
        ActiveRecord::Base.connection.execute(
          self.class.send(:sanitize_sql_array, sql)
        )
      end
    end
    self.completed_at = Time.zone.now
  end
end

# == Schema Information
#
# Table name: manifestation_reserve_stats
#
#  id           :integer          not null, primary key
#  start_date   :datetime
#  end_date     :datetime
#  note         :text
#  state        :string(255)
#  created_at   :datetime         not null
#  updated_at   :datetime         not null
#  started_at   :datetime
#  completed_at :datetime
#

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
enju_circulation-0.1.0.pre35 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre34 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre33 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre32 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre31 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre30 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre29 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre28 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre27 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre26 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre25 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre24 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre23 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre22 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre21 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre20 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre19 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre18 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre17 app/models/manifestation_reserve_stat.rb
enju_circulation-0.1.0.pre16 app/models/manifestation_reserve_stat.rb