VRFS-3276 : Calendar manager updates to include manual calendars. Some refactoring to keep common stuff in one place.
This commit is contained in:
parent
b5d0c758f0
commit
9ac272a0fb
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Reference in New Issue