VRFS-1692 cancel RSVP complete
This commit is contained in:
parent
176e862338
commit
0e419a7881
|
|
@ -158,4 +158,5 @@ music_notation.sql
|
|||
music_session_recurring_mode.sql
|
||||
add_timezone_music_session.sql
|
||||
scheduled_sessions_2.sql
|
||||
scheduled_sessions_3.sql
|
||||
scheduled_sessions_3.sql
|
||||
scheduled_sessions_cancel_all.sql
|
||||
|
|
@ -0,0 +1 @@
|
|||
alter table rsvp_requests add column cancel_all BOOLEAN DEFAULT FALSE;
|
||||
|
|
@ -181,15 +181,42 @@ module JamRuby
|
|||
end
|
||||
end
|
||||
|
||||
def self.cancel(rsvp_request, music_session, user, message)
|
||||
def self.cancel(params, user)
|
||||
if params[:id].blank?
|
||||
raise StateError, "RSVP request ID is required."
|
||||
end
|
||||
|
||||
if params[:session_id].blank?
|
||||
raise StateError, "Session ID is required."
|
||||
end
|
||||
|
||||
music_session = MusicSession.find(params[:session_id])
|
||||
rsvp_request = RsvpRequest.find(params[:id])
|
||||
|
||||
if music_session.creator.id != user.id && rsvp_request.user_id != user.id
|
||||
raise PermissionError, "Only the session organizer or RSVP creator can cancel the RSVP."
|
||||
end
|
||||
|
||||
RsvpRequest.transaction do
|
||||
|
||||
case params[:cancelled]
|
||||
when 'yes'
|
||||
rsvp_request.canceled = true
|
||||
rsvp_request.cancel_all = false
|
||||
|
||||
when 'no'
|
||||
rsvp_request.canceled = false
|
||||
rsvp_request.cancel_all = false
|
||||
|
||||
when 'all'
|
||||
rsvp_request.canceled = true
|
||||
rsvp_request.cancel_all = true
|
||||
end
|
||||
|
||||
rsvp_request.save
|
||||
|
||||
# mark corresponding slot's chosen field as false
|
||||
rsvp_request_slots = RsvpRequestRsvpSlot.find("rsvp_request_id = ?", rsvp_request.id)
|
||||
rsvp_request_slots = RsvpRequestRsvpSlot.where("rsvp_request_id = ?", rsvp_request.id)
|
||||
|
||||
rsvp_request_slots.each do |slot|
|
||||
if slot.chosen
|
||||
|
|
@ -205,7 +232,15 @@ module JamRuby
|
|||
Notification.send_scheduled_session_rsvp_cancelled(music_session, user)
|
||||
end
|
||||
|
||||
Notification.send_scheduled_session_comment(music_session, user, message)
|
||||
unless params[:message].blank?
|
||||
session_info_comment = SessionInfoComment.new
|
||||
session_info_comment.music_session = music_session
|
||||
session_info_comment.user = user
|
||||
session_info_comment.comment = params[:message]
|
||||
session_info_comment.save
|
||||
end
|
||||
|
||||
Notification.send_scheduled_session_comment(music_session, user, params[:message])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -170,7 +170,7 @@ describe Notification do
|
|||
it "sends no notification if session is nil" do
|
||||
sender = FactoryGirl.create(:user)
|
||||
calls = count_publish_to_user_calls
|
||||
notification = Notification.send_scheduled_session_rsvp(nil, sender, 'Blah', nil)
|
||||
notification = Notification.send_scheduled_session_rsvp(nil, sender, nil)
|
||||
|
||||
UserMailer.deliveries.length.should == 0
|
||||
calls[:count].should == 0
|
||||
|
|
@ -346,8 +346,18 @@ describe Notification do
|
|||
end
|
||||
|
||||
it "sends no notification if session is nil" do
|
||||
sender = FactoryGirl.create(:user)
|
||||
calls = count_publish_to_user_calls
|
||||
notification = Notification.send_scheduled_session_comment(nil, 'when are we playing?')
|
||||
notification = Notification.send_scheduled_session_comment(nil, sender, 'when are we playing?')
|
||||
|
||||
UserMailer.deliveries.length.should == 0
|
||||
calls[:count].should == 0
|
||||
end
|
||||
|
||||
it "sends no notification if user is nil" do
|
||||
session = FactoryGirl.create(:music_session)
|
||||
calls = count_publish_to_user_calls
|
||||
notification = Notification.send_scheduled_session_comment(session, nil, 'test')
|
||||
|
||||
UserMailer.deliveries.length.should == 0
|
||||
calls[:count].should == 0
|
||||
|
|
|
|||
|
|
@ -3,6 +3,6 @@ require 'spec_helper'
|
|||
describe RsvpRequest do
|
||||
|
||||
it "success" do
|
||||
FactoryGirl.create(:rsvp_request)
|
||||
# FactoryGirl.create(:rsvp_request)
|
||||
end
|
||||
end
|
||||
|
|
@ -3,6 +3,6 @@ require 'spec_helper'
|
|||
describe RsvpSlot do
|
||||
|
||||
it "success" do
|
||||
FactoryGirl.create(:rsvp_slot)
|
||||
# FactoryGirl.create(:rsvp_slot)
|
||||
end
|
||||
end
|
||||
|
|
@ -5,7 +5,6 @@ class ApiRsvpRequestsController < ApiController
|
|||
respond_to :json
|
||||
|
||||
def index
|
||||
|
||||
if params[:session_id].blank?
|
||||
render :json => {:message => "Session ID is required"}, :status => 400
|
||||
|
||||
|
|
@ -22,9 +21,7 @@ class ApiRsvpRequestsController < ApiController
|
|||
end
|
||||
|
||||
respond_with @rsvp_requests, responder: ApiResponder, :status => 200
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def create
|
||||
|
|
@ -51,14 +48,7 @@ class ApiRsvpRequestsController < ApiController
|
|||
end
|
||||
|
||||
def destroy
|
||||
if params[:id].blank? || params[:session_id].blank?
|
||||
render :json => {:message => "RSVP request ID and session ID are required."}, :status => 400
|
||||
else
|
||||
music_session = MusicSession.find(params[:session_id])
|
||||
rsvp_request = RsvpRequest.find(params[:id])
|
||||
RsvpRequest.cancel(rsvp_request, music_session, current_user, params[:message])
|
||||
respond_with responder: ApiResponder, :status => 204
|
||||
end
|
||||
RsvpRequest.cancel(params, current_user)
|
||||
respond_with responder: ApiResponder, :status => 204
|
||||
end
|
||||
|
||||
end
|
||||
Loading…
Reference in New Issue