VRFS-3276 : Calendar Manager - initial checkin

* Create ICS events given individual parameters
* Create calendar from music session
* Also will create ICS “delete” events
This commit is contained in:
Steven Miers 2015-06-25 08:51:13 -05:00
parent 5c79bdab5c
commit f8eaafd036
1 changed files with 43 additions and 0 deletions

View File

@ -0,0 +1,43 @@
module JamRuby
class CalendarManager
class << self
def ics_from_music_session(music_session, delete=false)
uid = "#{music_session.user_id}_#{music_session.id}@JamKazam"
text = "JamKazam Session #{music_session.description}"
case music_session.recurring_mode
when NO_RECURRING
create_ics_event(uid, text, scheduled_start, scheduled_start+scheduled_duration, delete)
when RECURRING_WEEKLY
create_ics_event(uid, text, scheduled_start, scheduled_start+scheduled_duration, delete)
else
raise ArgumentError("Recurring mode not supported: #{music_session.recurring_mode}")
end
end
# @return calendar (as ICS string) for specified user
def create_ics_feed(user)
end
def create_ics_event(uuid, summary, start_at, end_at, delete=false, sequence=0)
uuid ||= UUID.timestamp_create
event = "BEGIN:VEVENT\r\n"
event << "UID:#{uuid}\r\n"
event << "DTSTAMP:#{Time.now.utc().strftime(DATE_FORMAT)}\r\n"
event << "DTSTART:#{start_at.utc().strftime(DATE_FORMAT)}\r\n"
event << "DTEND:#{end_at.utc().strftime(DATE_FORMAT)}\r\n"
event << "SUMMARY:#{summary}\r\n"
if delete
event << "METHOD:CANCEL\r\n"
event << "STATUS:CANCELLED\r\n"
end
event << "SEQUENCE:#{sequence}\r\n" if sequence
event << "END:VEVENT"
end
def create_ics_cal(ics_events)
"BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:JamKazam\r\n#{ics_events}\r\nEND:VCALENDAR"
end
end
end
end