Sha256: 466acba434bd7bb00b8b02d7b6122f31785c872f50bfa07ccdc6f47f927032b0
Contents?: true
Size: 1.29 KB
Versions: 6
Compression:
Stored size: 1.29 KB
Contents
module MongoidOccurrences module Occurrence module HasSchedule SCHEDULE_DURATION = 1.year module ClassMethods def embedded_in_event(name, options = {}) super(name, options) field :schedule, type: MongoidIceCubeExtension::Schedule field :schedule_dtstart, type: Time field :schedule_dtend, type: Time before_validation :nil_schedule, unless: :recurring? end end def schedule_dtstart read_attribute(:schedule_dtstart) || (dtstart.try(:to_time) || Time.zone.now) end def schedule_dtend read_attribute(:schedule_dtend) || (schedule_dtstart + SCHEDULE_DURATION) end def recurrence_rule schedule&.recurrence_rules&.first end def recurrence_rule=(value) case value when NilClass, 'null' @recurrence_rule = nil self.schedule = nil else @recurrence_rule = IceCube::Rule.from_hash(JSON.parse(value)) self.schedule = IceCube::Schedule.new(schedule_dtstart) { |s| s.add_recurrence_rule(@recurrence_rule) } end end def recurring? schedule.present? end private def nil_schedule self.schedule = nil end end end end
Version data entries
6 entries across 6 versions & 1 rubygems