From 9ac272a0fb1e58d8cf9f02e7a0e04caada41f659 Mon Sep 17 00:00:00 2001 From: Steven Miers Date: Wed, 1 Jul 2015 20:52:10 -0500 Subject: [PATCH] VRFS-3276 : Calendar manager updates to include manual calendars. Some refactoring to keep common stuff in one place. --- ruby/lib/jam_ruby/calendar_manager.rb | 38 +++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/ruby/lib/jam_ruby/calendar_manager.rb b/ruby/lib/jam_ruby/calendar_manager.rb index 584c1efbd..57c2bb062 100644 --- a/ruby/lib/jam_ruby/calendar_manager.rb +++ b/ruby/lib/jam_ruby/calendar_manager.rb @@ -17,28 +17,56 @@ module JamRuby if !delete && music_session.recurring_mode==MusicSession::RECURRING_WEEKLY rrule = "FREQ=WEEKLY;INTERVAL=1" end - create_ics_event(uid, text, start_at, stop_at, delete, rrule) + create_ics_event(uid, text, text, start_at, stop_at, delete, rrule) + end + + # @return event (as ICS string) for a given music session + def ics_event_from_calendar(calendar) + # Determine properties of calendar event and create: + rrule = nil + if !calendar.trigger_delete && calendar.recurring_mode==MusicSession::RECURRING_WEEKLY + rrule = "FREQ=WEEKLY;INTERVAL=1" + end + + create_ics_event( + calendar.id, + "JamKazam Session #{calendar.name}", + calendar.description, + calendar.start_at, + calendar.end_at, + calendar.trigger_delete, + rrule + ) end # @return calendar (as ICS string) for specified user + # Includes all RSVPed sessions, as well as any calendar + # entries for the given user: def create_ics_feed(user) ics_events = "" - MusicSession.scheduled_rsvp(user, true).each_with_index do |music_session, i| - ics_events << "\r\n" if(i > 0) + MusicSession.scheduled_rsvp(user, true).each do |music_session| + ics_events << "\r\n" if(ics_events.length != 0) ics_events << ics_event_from_music_session(music_session) end + + user.calendars.each do |user| + ics_events << "\r\n" if(ics_events.length != 0) + ics_events << ics_event_from_calendar(user) + end + create_ics_cal(ics_events) end # @return event (as ICS string) for given arguments - def create_ics_event(uuid, summary, start_at, end_at, delete=false, rrule=nil, sequence=nil) + def create_ics_event(uuid, name, description, start_at, end_at, delete=false, rrule=nil, sequence=nil) 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" + event << "SUMMARY:#{name}\r\n" + event << "DESCRIPTION:#{description}\r\n" if delete event << "METHOD:CANCEL\r\n" event << "STATUS:CANCELLED\r\n"