module Weesked::Schedule::InstanceMethods
Public Instance Methods
availiable?(date)
click to toggle source
# File lib/weesked/schedule.rb, line 73 def availiable? date end
redis()
click to toggle source
# File lib/weesked/schedule.rb, line 59 def redis self.class.redis end
schedule(range=false)
click to toggle source
# File lib/weesked/schedule.rb, line 68 def schedule(range=false) return get_schedule unless range Hash[get_schedule.map {|k,v| [k, OffsetHandler.new(v, Weesked.steps_day_shift, 24).to_range] }] end
schedule=(availiability_hash)
click to toggle source
# File lib/weesked/schedule.rb, line 63 def schedule=(availiability_hash) update_schedule_for_instance availiability_hash update_schedule_for_class end
weesked_key(day)
click to toggle source
# File lib/weesked/schedule.rb, line 76 def weesked_key(day) raise NilDay unless day if id.nil? raise NilObjectId, "Weesked schedule on class #{self.class.name} with nil id (unsaved record?) [object_id=#{object_id}]" end day = Day.new(day).day "weesked:#{self.class.name.downcase}:#{id}:#{day}" end
Private Instance Methods
get_schedule()
click to toggle source
# File lib/weesked/schedule.rb, line 114 def get_schedule Weesked.availiable_days.each_with_object(Hash.new) do |day, h| h[day.to_sym] = redis.smembers(weesked_key(day)).map(&:to_i) end end
update_schedule_for_class()
click to toggle source
# File lib/weesked/schedule.rb, line 88 def update_schedule_for_class sch = schedule redis.multi do Weesked.availiable_days.each do |day| Weesked.availiable_steps.each do |step| if sch[day.to_sym].include?(step) redis.sadd self.class.weesked_schedule_key(day, step), id else redis.srem self.class.weesked_schedule_key(day, step), id end end end end end
update_schedule_for_instance(hash)
click to toggle source
# File lib/weesked/schedule.rb, line 103 def update_schedule_for_instance hash redis.multi do Weesked.availiable_days.each do |d| redis.del weesked_key(d) steps = hash.fetch d.to_sym day = Day.new d, steps redis.sadd(weesked_key(d), day.steps) if day.steps.any? end end end