VRFS-1693 copy canceled RSVP for slot if none were chosen

This commit is contained in:
Brian Smith 2014-06-04 23:17:45 -04:00
parent d07e649c7b
commit 8cc14b1ede
1 changed files with 24 additions and 14 deletions

View File

@ -87,6 +87,8 @@ module JamRuby
new_session.open_rsvps = self.open_rsvps
new_session.save
chosen_slots = []
# copy rsvp_slots, rsvp_requests, and rsvp_requests_rsvp_slots
RsvpSlot.find_each(:conditions => "music_session_id = '#{self.id}'") do |slot|
new_slot = RsvpSlot.new
@ -99,6 +101,8 @@ module JamRuby
rsvp_request_slot = RsvpRequestRsvpSlot.where("chosen = true AND rsvp_slot_id = ?", slot.id).first
unless rsvp_request_slot.nil?
chosen_slots << rsvp_request_slot
rsvp = RsvpRequest.find_by_id(rsvp_request_slot.rsvp_request_id)
new_rsvp = RsvpRequest.new
new_rsvp.user_id = rsvp.user_id
@ -109,22 +113,28 @@ module JamRuby
new_rsvp_req_slot.rsvp_slot_id = new_slot.id
new_rsvp_req_slot.chosen = true
new_rsvp_req_slot.save
end
# now get any RSVPs that were 1-time cancellations and copy those
rejected_req_slots = RsvpRequestRsvpSlot.where("chosen = false AND rsvp_slot_id = ?", slot.id)
rejected_req_slots.each do |req_slot|
rsvp = RsvpRequest.find_by_id(req_slot.rsvp_request_id)
if rsvp.canceled && !rsvp.cancel_all
new_rsvp = RsvpRequest.new
new_rsvp.user_id = rsvp.user_id
new_rsvp.save
# if this slot was not chosen, try to get any RSVPs that were 1-time cancellations and copy those
else
rejected_req_slots = RsvpRequestRsvpSlot.where("(chosen = false OR chosen is null) AND rsvp_slot_id = ?", slot.id).order("created_at ASC")
new_rsvp_req_slot = RsvpRequestRsvpSlot.new
new_rsvp_req_slot.rsvp_request_id = new_rsvp.id
new_rsvp_req_slot.rsvp_slot_id = new_slot.id
new_rsvp_req_slot.chosen = true
new_rsvp_req_slot.save
rejected_req_slots.each do |req_slot|
# get RsvpRequest corresponding to this RsvpRequestRsvpSlot
rsvp = RsvpRequest.find_by_id(req_slot.rsvp_request_id)
# if the RSVP was canceled (but all future sessions were NOT canceled), then copy this one and break
if rsvp.canceled && !rsvp.cancel_all
new_rsvp = RsvpRequest.new
new_rsvp.user_id = rsvp.user_id
new_rsvp.save
new_rsvp_req_slot = RsvpRequestRsvpSlot.new
new_rsvp_req_slot.rsvp_request_id = new_rsvp.id
new_rsvp_req_slot.rsvp_slot_id = new_slot.id
new_rsvp_req_slot.chosen = true
new_rsvp_req_slot.save
break
end
end
end
end