add helper methods
This commit is contained in:
@@ -31,4 +31,36 @@ class Reading < ActiveRecord::Base
|
|||||||
write_attribute(:total_kwh_produced_low,kwh.round(1))
|
write_attribute(:total_kwh_produced_low,kwh.round(1))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# calculate difference with another reading
|
||||||
|
# return a hash with differences (self - reading)
|
||||||
|
def diff(reading)
|
||||||
|
{ :total_kwh_consumed_high => self.total_kwh_consumed_high - reading.total_kwh_consumed_high,
|
||||||
|
:total_kwh_consumed_low => self.total_kwh_consumed_low - reading.total_kwh_consumed_low,
|
||||||
|
:total_kwh_produced_high => self.total_kwh_produced_high - reading.total_kwh_produced_high,
|
||||||
|
:total_kwh_produced_low => self.total_kwh_produced_low - reading.total_kwh_produced_low,
|
||||||
|
:current_kw_consumed => self.current_kw_consumed - reading.current_kw_consumed,
|
||||||
|
:current_kw_produced => self.current_kw_produced - reading.current_kw_produced,
|
||||||
|
:total_m3_gas_consumed => self.total_m3_gas_consumed - reading.total_m3_gas_consumed }
|
||||||
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Class methods
|
||||||
|
#
|
||||||
|
class << self
|
||||||
|
# return readings from beginning of 'from' until end of 'to'
|
||||||
|
def days(from, to)
|
||||||
|
Reading.where("created_at > :begin AND created_at < :end", { :begin => from.to_date.beginning_of_day, :end => to.to_date.end_of_day})
|
||||||
|
end
|
||||||
|
|
||||||
|
def day(date)
|
||||||
|
Reading.where("created_at > :begin AND created_at < :end", { :begin => date.to_date.beginning_of_day, :end => date.to_date.end_of_day})
|
||||||
|
end
|
||||||
|
|
||||||
|
def diff_on(date)
|
||||||
|
readings_on = day(date)
|
||||||
|
first = readings_on.first
|
||||||
|
last = readings_on.last
|
||||||
|
first.diff(last)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user