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