VRFS-1668 more notification work
This commit is contained in:
parent
091998c200
commit
8fc30baf42
|
|
@ -124,6 +124,8 @@ message ClientMessage {
|
||||||
optional SessionDepart session_depart = 171;
|
optional SessionDepart session_depart = 171;
|
||||||
optional MusicianSessionJoin musician_session_join = 172;
|
optional MusicianSessionJoin musician_session_join = 172;
|
||||||
optional TracksChanged tracks_changed = 173;
|
optional TracksChanged tracks_changed = 173;
|
||||||
|
|
||||||
|
// scheduled sessions
|
||||||
optional ScheduledSessionInvitation scheduled_session_invitation = 174;
|
optional ScheduledSessionInvitation scheduled_session_invitation = 174;
|
||||||
optional ScheduledSessionRsvp scheduled_session_rsvp = 175;
|
optional ScheduledSessionRsvp scheduled_session_rsvp = 175;
|
||||||
optional ScheduledSessionRsvpApproved scheduled_session_rsvp_approved = 176;
|
optional ScheduledSessionRsvpApproved scheduled_session_rsvp_approved = 176;
|
||||||
|
|
@ -356,7 +358,7 @@ message ScheduledSessionRsvp {
|
||||||
optional string session_id = 1;
|
optional string session_id = 1;
|
||||||
optional string photo_url = 2;
|
optional string photo_url = 2;
|
||||||
optional string msg = 3;
|
optional string msg = 3;
|
||||||
optional string slot_id = 4;
|
optional string user_id = 4;
|
||||||
optional string instruments = 5;
|
optional string instruments = 5;
|
||||||
optional string session_name = 6;
|
optional string session_name = 6;
|
||||||
optional string session_date = 7;
|
optional string session_date = 7;
|
||||||
|
|
@ -365,31 +367,67 @@ message ScheduledSessionRsvp {
|
||||||
}
|
}
|
||||||
|
|
||||||
message ScheduledSessionRsvpApproved {
|
message ScheduledSessionRsvpApproved {
|
||||||
|
optional string session_id = 1;
|
||||||
|
optional string msg = 2;
|
||||||
|
optional string session_name = 3;
|
||||||
|
optional string session_date = 4;
|
||||||
|
optional string notification_id = 5;
|
||||||
|
optional string created_at = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ScheduledSessionRsvpCancelled {
|
message ScheduledSessionRsvpCancelled {
|
||||||
|
optional string session_id = 1;
|
||||||
|
optional string msg = 2;
|
||||||
|
optional string session_name = 3;
|
||||||
|
optional string session_date = 4;
|
||||||
|
optional string notification_id = 5;
|
||||||
|
optional string created_at = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ScheduledSessionRsvpCancelledOrg {
|
message ScheduledSessionRsvpCancelledOrg {
|
||||||
|
optional string session_id = 1;
|
||||||
|
optional string msg = 2;
|
||||||
|
optional string session_name = 3;
|
||||||
|
optional string session_date = 4;
|
||||||
|
optional string notification_id = 5;
|
||||||
|
optional string created_at = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ScheduledSessionCancelled {
|
message ScheduledSessionCancelled {
|
||||||
|
optional string session_id = 1;
|
||||||
|
optional string msg = 2;
|
||||||
|
optional string session_name = 3;
|
||||||
|
optional string session_date = 4;
|
||||||
|
optional string notification_id = 5;
|
||||||
|
optional string created_at = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ScheduledSessionRescheduled {
|
message ScheduledSessionRescheduled {
|
||||||
|
optional string session_id = 1;
|
||||||
|
optional string msg = 2;
|
||||||
|
optional string session_name = 3;
|
||||||
|
optional string session_date = 4;
|
||||||
|
optional string notification_id = 5;
|
||||||
|
optional string created_at = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ScheduledSessionReminder {
|
message ScheduledSessionReminder {
|
||||||
|
optional string session_id = 1;
|
||||||
|
optional string msg = 2;
|
||||||
|
optional string session_name = 3;
|
||||||
|
optional string session_date = 4;
|
||||||
|
optional string notification_id = 5;
|
||||||
|
optional string created_at = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ScheduledSessionComment {
|
message ScheduledSessionComment {
|
||||||
|
optional string session_id = 1;
|
||||||
|
optional string photo_url = 2;
|
||||||
|
optional string msg = 3;
|
||||||
|
optional string session_name = 4;
|
||||||
|
optional string session_date = 5;
|
||||||
|
optional string notification_id = 6;
|
||||||
|
optional string created_at = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
message MusicianRecordingSaved {
|
message MusicianRecordingSaved {
|
||||||
|
|
|
||||||
|
|
@ -452,20 +452,13 @@ module JamRuby
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
# SCHEDULED_SESSION_RSVP = 175;
|
def scheduled_session_rsvp(receiver_id, session_id, photo_url, msg, user_id, instruments, session_name, session_date, notification_id, created_at)
|
||||||
# SCHEDULED_SESSION_RSVP_APPROVED = 176;
|
|
||||||
# SCHEDULED_SESSION_RSVP_CANCELLED = 177;
|
|
||||||
# SCHEDULED_SESSION_RSVP_CANCELLED_ORG = 178;
|
|
||||||
# SCHEDULED_SESSION_CANCELLED = 179;
|
|
||||||
# SCHEDULED_SESSION_RESCHEDULED = 180;
|
|
||||||
# SCHEDULED_SESSION_REMINDER = 181;
|
|
||||||
# SCHEDULED_SESSION_COMMENT = 182;
|
|
||||||
|
|
||||||
def scheduled_session_rsvp(receiver_id, session_id, photo_url, msg, slots, instruments, session_name, session_date, notification_id, created_at)
|
|
||||||
scheduled_session_rsvp = Jampb::ScheduledSessionRsvp.new(
|
scheduled_session_rsvp = Jampb::ScheduledSessionRsvp.new(
|
||||||
:session_id => session_id,
|
:session_id => session_id,
|
||||||
:photo_url => photo_url,
|
:photo_url => photo_url,
|
||||||
:msg => msg,
|
:msg => msg,
|
||||||
|
:user_id => user_id,
|
||||||
|
:instruments => instruments,
|
||||||
:session_name => session_name,
|
:session_name => session_name,
|
||||||
:session_date => session_date,
|
:session_date => session_date,
|
||||||
:notification_id => notification_id,
|
:notification_id => notification_id,
|
||||||
|
|
@ -479,6 +472,134 @@ module JamRuby
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def scheduled_session_rsvp_approved(receiver_id, session_id, msg, session_name, session_date, notification_id, created_at)
|
||||||
|
|
||||||
|
scheduled_session_rsvp_approved = Jampb::ScheduledSessionRsvpApproved.new(
|
||||||
|
:session_id => session_id,
|
||||||
|
:msg => msg,
|
||||||
|
:session_name => session_name,
|
||||||
|
:session_date => session_date,
|
||||||
|
:notification_id => notification_id,
|
||||||
|
:created_at => created_at
|
||||||
|
)
|
||||||
|
|
||||||
|
Jampb::ClientMessage.new(
|
||||||
|
:type => ClientMessage::Type::SCHEDULED_SESSION_RSVP_APPROVED,
|
||||||
|
:route_to => USER_TARGET_PREFIX + receiver_id,
|
||||||
|
:scheduled_session_rsvp_approved => scheduled_session_rsvp_approved
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def scheduled_session_rsvp_cancelled(receiver_id, session_id, msg, session_name, session_date, notification_id, created_at)
|
||||||
|
|
||||||
|
scheduled_session_rsvp_cancelled = Jampb::ScheduledSessionRsvpCancelled.new(
|
||||||
|
:session_id => session_id,
|
||||||
|
:msg => msg,
|
||||||
|
:session_name => session_name,
|
||||||
|
:session_date => session_date,
|
||||||
|
:notification_id => notification_id,
|
||||||
|
:created_at => created_at
|
||||||
|
)
|
||||||
|
|
||||||
|
Jampb::ClientMessage.new(
|
||||||
|
:type => ClientMessage::Type::SCHEDULED_SESSION_RSVP_CANCELLED,
|
||||||
|
:route_to => USER_TARGET_PREFIX + receiver_id,
|
||||||
|
:scheduled_session_rsvp_cancelled => scheduled_session_rsvp_cancelled
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def scheduled_session_rsvp_cancelled_org(receiver_id, session_id, msg, session_name, session_date, notification_id, created_at)
|
||||||
|
|
||||||
|
scheduled_session_rsvp_cancelled_org = Jampb::ScheduledSessionRsvpCancelledOrg.new(
|
||||||
|
:session_id => session_id,
|
||||||
|
:msg => msg,
|
||||||
|
:session_name => session_name,
|
||||||
|
:session_date => session_date,
|
||||||
|
:notification_id => notification_id,
|
||||||
|
:created_at => created_at
|
||||||
|
)
|
||||||
|
|
||||||
|
Jampb::ClientMessage.new(
|
||||||
|
:type => ClientMessage::Type::SCHEDULED_SESSION_RSVP_CANCELLED_ORG,
|
||||||
|
:route_to => USER_TARGET_PREFIX + receiver_id,
|
||||||
|
:scheduled_session_rsvp_cancelled_org => scheduled_session_rsvp_cancelled_org
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def scheduled_session_cancelled(receiver_id, session_id, msg, session_name, session_date, notification_id, created_at)
|
||||||
|
|
||||||
|
scheduled_session_cancelled = Jampb::ScheduledSessionCancelled.new(
|
||||||
|
:session_id => session_id,
|
||||||
|
:msg => msg,
|
||||||
|
:session_name => session_name,
|
||||||
|
:session_date => session_date,
|
||||||
|
:notification_id => notification_id,
|
||||||
|
:created_at => created_at
|
||||||
|
)
|
||||||
|
|
||||||
|
Jampb::ClientMessage.new(
|
||||||
|
:type => ClientMessage::Type::SCHEDULED_SESSION_CANCELLED,
|
||||||
|
:route_to => USER_TARGET_PREFIX + receiver_id,
|
||||||
|
:scheduled_session_cancelled => scheduled_session_cancelled
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def scheduled_session_rescheduled(receiver_id, session_id, msg, session_name, session_date, notification_id, created_at)
|
||||||
|
|
||||||
|
scheduled_session_rescheduled = Jampb::ScheduledSessionRescheduled.new(
|
||||||
|
:session_id => session_id,
|
||||||
|
:msg => msg,
|
||||||
|
:session_name => session_name,
|
||||||
|
:session_date => session_date,
|
||||||
|
:notification_id => notification_id,
|
||||||
|
:created_at => created_at
|
||||||
|
)
|
||||||
|
|
||||||
|
Jampb::ClientMessage.new(
|
||||||
|
:type => ClientMessage::Type::SCHEDULED_SESSION_RESCHEDULED,
|
||||||
|
:route_to => USER_TARGET_PREFIX + receiver_id,
|
||||||
|
:scheduled_session_rescheduled => scheduled_session_rescheduled
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def scheduled_session_reminder(receiver_id, session_id, msg, session_name, session_date, notification_id, created_at)
|
||||||
|
|
||||||
|
scheduled_session_reminder = Jampb::ScheduledSessionReminder.new(
|
||||||
|
:session_id => session_id,
|
||||||
|
:msg => msg,
|
||||||
|
:session_name => session_name,
|
||||||
|
:session_date => session_date,
|
||||||
|
:notification_id => notification_id,
|
||||||
|
:created_at => created_at
|
||||||
|
)
|
||||||
|
|
||||||
|
Jampb::ClientMessage.new(
|
||||||
|
:type => ClientMessage::Type::SCHEDULED_SESSION_REMINDER,
|
||||||
|
:route_to => USER_TARGET_PREFIX + receiver_id,
|
||||||
|
:scheduled_session_reminder => scheduled_session_reminder
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def scheduled_session_comment(receiver_id, session_id, photo_url, msg, comment, session_name, session_date, notification_id, created_at)
|
||||||
|
|
||||||
|
scheduled_session_comment = Jampb::ScheduledSessionComment.new(
|
||||||
|
:session_id => session_id,
|
||||||
|
:photo_url => photo_url,
|
||||||
|
:msg => msg,
|
||||||
|
:comment => comment,
|
||||||
|
:session_name => session_name,
|
||||||
|
:session_date => session_date,
|
||||||
|
:notification_id => notification_id,
|
||||||
|
:created_at => created_at
|
||||||
|
)
|
||||||
|
|
||||||
|
Jampb::ClientMessage.new(
|
||||||
|
:type => ClientMessage::Type::SCHEDULED_SESSION_COMMENT,
|
||||||
|
:route_to => USER_TARGET_PREFIX + receiver_id,
|
||||||
|
:scheduled_session_comment => scheduled_session_comment
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
def band_session_join(receiver_id, session_id, photo_url, fan_access, musician_access, approval_required, msg, notification_id, created_at)
|
def band_session_join(receiver_id, session_id, photo_url, fan_access, musician_access, approval_required, msg, notification_id, created_at)
|
||||||
band_session_join = Jampb::BandSessionJoin.new(
|
band_session_join = Jampb::BandSessionJoin.new(
|
||||||
:session_id => session_id,
|
:session_id => session_id,
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ module JamRuby
|
||||||
validates :musician_access, :inclusion => {:in => [true, false]}
|
validates :musician_access, :inclusion => {:in => [true, false]}
|
||||||
validates :legal_terms, :inclusion => {:in => [true]}, :on => :create
|
validates :legal_terms, :inclusion => {:in => [true]}, :on => :create
|
||||||
validates :creator, :presence => true
|
validates :creator, :presence => true
|
||||||
validates :recurring_mode, :inclusion => {:in => RECURRING_MODES}, :on => :create
|
# validates :recurring_mode, :inclusion => {:in => RECURRING_MODES}, :on => :create
|
||||||
validate :creator_is_musician
|
validate :creator_is_musician
|
||||||
|
|
||||||
before_create :generate_share_token
|
before_create :generate_share_token
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,11 @@ module JamRuby
|
||||||
band = Band.find(self.band_id)
|
band = Band.find(self.band_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
self.class.format_msg(self.description, {:user => source_user, :band => band})
|
unless self.session_id.nil?
|
||||||
|
session = MusicSession.find(self.session_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
self.class.format_msg(self.description, {:user => source_user, :band => band, :session => session})
|
||||||
end
|
end
|
||||||
|
|
||||||
# TODO: MAKE ALL METHODS BELOW ASYNC SO THE CLIENT DOESN'T BLOCK ON NOTIFICATION LOGIC
|
# TODO: MAKE ALL METHODS BELOW ASYNC SO THE CLIENT DOESN'T BLOCK ON NOTIFICATION LOGIC
|
||||||
|
|
@ -184,7 +188,7 @@ module JamRuby
|
||||||
return "A musician has cancelled an RSVP to your session."
|
return "A musician has cancelled an RSVP to your session."
|
||||||
|
|
||||||
when NotificationTypes::SCHEDULED_SESSION_RSVP_CANCELLED_ORG
|
when NotificationTypes::SCHEDULED_SESSION_RSVP_CANCELLED_ORG
|
||||||
return "The session organizer has cancelled this session."
|
return "The session organizer has cancelled this session:"
|
||||||
|
|
||||||
when NotificationTypes::SCHEDULED_SESSION_CANCELLED
|
when NotificationTypes::SCHEDULED_SESSION_CANCELLED
|
||||||
return "The session organizer has cancelled this session:"
|
return "The session organizer has cancelled this session:"
|
||||||
|
|
@ -573,19 +577,22 @@ module JamRuby
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_scheduled_session_invitation(music_session, user)
|
def send_scheduled_session_invitation(music_session, user)
|
||||||
|
target_user = user
|
||||||
|
source_user = music_session.creator
|
||||||
|
|
||||||
notification = Notification.new
|
notification = Notification.new
|
||||||
notification.description = NotificationTypes::SCHEDULED_SESSION_INVITATION
|
notification.description = NotificationTypes::SCHEDULED_SESSION_INVITATION
|
||||||
notification.source_user_id = music_session.creator.id
|
notification.source_user_id = source_user.id
|
||||||
notification.target_user_id = user.id
|
notification.target_user_id = target_user.id
|
||||||
notification.session_id = music_session.id
|
notification.session_id = music_session.id
|
||||||
notification.save
|
notification.save
|
||||||
|
|
||||||
notification_msg = format_msg(notification.description, {:user => music_session.creator, :session => music_session})
|
notification_msg = format_msg(notification.description, {:user => source_user, :session => music_session})
|
||||||
|
|
||||||
msg = @@message_factory.scheduled_session_invitation(
|
msg = @@message_factory.scheduled_session_invitation(
|
||||||
user.id,
|
target_user.id,
|
||||||
music_session.id,
|
music_session.id,
|
||||||
music_session.creator.photo_url,
|
source_user.photo_url,
|
||||||
notification_msg,
|
notification_msg,
|
||||||
music_session.description,
|
music_session.description,
|
||||||
music_session.scheduled_start,
|
music_session.scheduled_start,
|
||||||
|
|
@ -593,31 +600,235 @@ module JamRuby
|
||||||
notification.created_date
|
notification.created_date
|
||||||
)
|
)
|
||||||
|
|
||||||
@@mq_router.publish_to_user(user.id, msg)
|
@@mq_router.publish_to_user(target_user.id, msg)
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_scheduled_session_rsvp(music_session, user, rsvp_requests)
|
def send_scheduled_session_rsvp(music_session, user, instruments)
|
||||||
|
target_user = music_session.creator
|
||||||
|
source_user = user
|
||||||
|
|
||||||
|
notification = Notification.new
|
||||||
|
notification.description = NotificationTypes::SCHEDULED_SESSION_RSVP
|
||||||
|
notification.source_user_id = source_user.id
|
||||||
|
notification.target_user_id = target_user.id
|
||||||
|
notification.session_id = music_session.id
|
||||||
|
notification.save
|
||||||
|
|
||||||
|
notification_msg = format_msg(notification.description, {:user => source_user, :session => music_session})
|
||||||
|
|
||||||
|
msg = @@message_factory.scheduled_session_rsvp(
|
||||||
|
target_user.id,
|
||||||
|
music_session.id,
|
||||||
|
source_user.photo_url,
|
||||||
|
notification_msg,
|
||||||
|
source_user.id,
|
||||||
|
instruments,
|
||||||
|
music_session.description,
|
||||||
|
music_session.scheduled_start,
|
||||||
|
notification.id,
|
||||||
|
notification.created_date
|
||||||
|
)
|
||||||
|
|
||||||
|
@@mq_router.publish_to_user(target_user.id, msg)
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_scheduled_session_approved(email, msg)
|
def send_scheduled_session_rsvp_approved(music_session, user)
|
||||||
|
target_user = user
|
||||||
|
source_user = music_session.creator
|
||||||
|
|
||||||
|
notification = Notification.new
|
||||||
|
notification.description = NotificationTypes::SCHEDULED_SESSION_RSVP_APPROVED
|
||||||
|
notification.source_user_id = source_user.id
|
||||||
|
notification.target_user_id = target_user.id
|
||||||
|
notification.session_id = music_session.id
|
||||||
|
notification.save
|
||||||
|
|
||||||
|
notification_msg = format_msg(notification.description, {:session => music_session})
|
||||||
|
|
||||||
|
msg = @@message_factory.scheduled_session_rsvp_approved(
|
||||||
|
target_user.id,
|
||||||
|
music_session.id,
|
||||||
|
notification_msg,
|
||||||
|
music_session.description,
|
||||||
|
music_session.scheduled_start,
|
||||||
|
notification.id,
|
||||||
|
notification.created_date
|
||||||
|
)
|
||||||
|
|
||||||
|
@@mq_router.publish_to_user(target_user.id, msg)
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_scheduled_session_rsvp_cancelled(email, msg)
|
def send_scheduled_session_rsvp_cancelled(music_session, user)
|
||||||
|
target_user = music_session.creator
|
||||||
|
source_user = user
|
||||||
|
|
||||||
|
notification = Notification.new
|
||||||
|
notification.description = NotificationTypes::SCHEDULED_SESSION_RSVP_CANCELLED
|
||||||
|
notification.source_user_id = source_user.id
|
||||||
|
notification.target_user_id = target_user.id
|
||||||
|
notification.session_id = music_session.id
|
||||||
|
notification.save
|
||||||
|
|
||||||
|
notification_msg = format_msg(notification.description, {:session => music_session})
|
||||||
|
|
||||||
|
msg = @@message_factory.scheduled_session_rsvp_cancelled(
|
||||||
|
target_user.id,
|
||||||
|
music_session.id,
|
||||||
|
notification_msg,
|
||||||
|
music_session.description,
|
||||||
|
music_session.scheduled_start,
|
||||||
|
notification.id,
|
||||||
|
notification.created_date
|
||||||
|
)
|
||||||
|
|
||||||
|
@@mq_router.publish_to_user(target_user.id, msg)
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_scheduled_session_rsvp_cancelled_org(email, msg)
|
def send_scheduled_session_rsvp_cancelled_org(music_session, user)
|
||||||
|
target_user = user
|
||||||
|
source_user = music_session.creator
|
||||||
|
|
||||||
|
notification = Notification.new
|
||||||
|
notification.description = NotificationTypes::SCHEDULED_SESSION_RSVP_CANCELLED_ORG
|
||||||
|
notification.source_user_id = source_user.id
|
||||||
|
notification.target_user_id = target_user.id
|
||||||
|
notification.session_id = music_session.id
|
||||||
|
notification.save
|
||||||
|
|
||||||
|
notification_msg = format_msg(notification.description, {:session => music_session})
|
||||||
|
|
||||||
|
msg = @@message_factory.scheduled_session_rsvp_cancelled_org(
|
||||||
|
target_user.id,
|
||||||
|
music_session.id,
|
||||||
|
notification_msg,
|
||||||
|
music_session.description,
|
||||||
|
music_session.scheduled_start,
|
||||||
|
notification.id,
|
||||||
|
notification.created_date
|
||||||
|
)
|
||||||
|
|
||||||
|
@@mq_router.publish_to_user(target_user.id, msg)
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_scheduled_session_cancelled(email, msg)
|
def send_scheduled_session_cancelled(music_session)
|
||||||
|
rsvp_requests = RsvpRequest.requests_by_session(music_session)
|
||||||
|
|
||||||
|
rsvp_requests.each do |rsvp|
|
||||||
|
target_user = rsvp.user
|
||||||
|
source_user = music_session.creator
|
||||||
|
|
||||||
|
notification = Notification.new
|
||||||
|
notification.description = NotificationTypes::SCHEDULED_SESSION_CANCELLED
|
||||||
|
notification.source_user_id = source_user.id
|
||||||
|
notification.target_user_id = target_user.id
|
||||||
|
notification.session_id = music_session.id
|
||||||
|
notification.save
|
||||||
|
|
||||||
|
notification_msg = format_msg(notification.description, {:session => music_session})
|
||||||
|
|
||||||
|
msg = @@message_factory.scheduled_session_cancelled(
|
||||||
|
target_user.id,
|
||||||
|
music_session.id,
|
||||||
|
notification_msg,
|
||||||
|
music_session.description,
|
||||||
|
music_session.scheduled_start,
|
||||||
|
notification.id,
|
||||||
|
notification.created_date
|
||||||
|
)
|
||||||
|
|
||||||
|
@@mq_router.publish_to_user(target_user.id, msg)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_scheduled_session_rescheduled(email, msg)
|
def send_scheduled_session_rescheduled(music_session)
|
||||||
|
rsvp_requests = RsvpRequest.requests_by_session(music_session)
|
||||||
|
|
||||||
|
rsvp_requests.each do |rsvp|
|
||||||
|
target_user = rsvp.user
|
||||||
|
source_user = music_session.creator
|
||||||
|
|
||||||
|
notification = Notification.new
|
||||||
|
notification.description = NotificationTypes::SCHEDULED_SESSION_RESCHEDULED
|
||||||
|
notification.source_user_id = source_user.id
|
||||||
|
notification.target_user_id = target_user.id
|
||||||
|
notification.session_id = music_session.id
|
||||||
|
notification.save
|
||||||
|
|
||||||
|
notification_msg = format_msg(notification.description, {:session => music_session})
|
||||||
|
|
||||||
|
msg = @@message_factory.scheduled_session_rescheduled(
|
||||||
|
target_user.id,
|
||||||
|
music_session.id,
|
||||||
|
notification_msg,
|
||||||
|
music_session.description,
|
||||||
|
music_session.scheduled_start,
|
||||||
|
notification.id,
|
||||||
|
notification.created_date
|
||||||
|
)
|
||||||
|
|
||||||
|
@@mq_router.publish_to_user(target_user.id, msg)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_scheduled_session_reminder(email, msg)
|
def send_scheduled_session_reminder(music_session)
|
||||||
|
rsvp_requests = RsvpRequest.requests_by_session(music_session)
|
||||||
|
|
||||||
|
rsvp_requests.each do |rsvp|
|
||||||
|
target_user = rsvp.user
|
||||||
|
source_user = music_session.creator
|
||||||
|
|
||||||
|
notification = Notification.new
|
||||||
|
notification.description = NotificationTypes::SCHEDULED_SESSION_REMINDER
|
||||||
|
notification.source_user_id = source_user.id
|
||||||
|
notification.target_user_id = target_user.id
|
||||||
|
notification.session_id = music_session.id
|
||||||
|
notification.save
|
||||||
|
|
||||||
|
notification_msg = format_msg(notification.description, {:session => music_session})
|
||||||
|
|
||||||
|
msg = @@message_factory.scheduled_session_reminder(
|
||||||
|
target_user.id,
|
||||||
|
music_session.id,
|
||||||
|
notification_msg,
|
||||||
|
music_session.description,
|
||||||
|
music_session.scheduled_start,
|
||||||
|
notification.id,
|
||||||
|
notification.created_date
|
||||||
|
)
|
||||||
|
|
||||||
|
@@mq_router.publish_to_user(target_user.id, msg)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_scheduled_session_comment(email, msg)
|
def send_scheduled_session_comment(music_session, comment)
|
||||||
|
rsvp_requests = RsvpRequest.requests_by_session(music_session)
|
||||||
|
|
||||||
|
rsvp_requests.each do |rsvp|
|
||||||
|
target_user = rsvp.user
|
||||||
|
source_user = music_session.creator
|
||||||
|
|
||||||
|
notification = Notification.new
|
||||||
|
notification.description = NotificationTypes::SCHEDULED_SESSION_CANCELLED
|
||||||
|
notification.source_user_id = source_user.id
|
||||||
|
notification.target_user_id = target_user.id
|
||||||
|
notification.session_id = music_session.id
|
||||||
|
notification.save
|
||||||
|
|
||||||
|
notification_msg = format_msg(notification.description, {:session => music_session})
|
||||||
|
|
||||||
|
msg = @@message_factory.scheduled_session_comment(
|
||||||
|
target_user.id,
|
||||||
|
music_session.id,
|
||||||
|
notification_msg,
|
||||||
|
comment,
|
||||||
|
music_session.description,
|
||||||
|
music_session.scheduled_start,
|
||||||
|
notification.id,
|
||||||
|
notification.created_date
|
||||||
|
)
|
||||||
|
|
||||||
|
@@mq_router.publish_to_user(target_user.id, msg)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_band_session_join(music_session, band)
|
def send_band_session_join(music_session, band)
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,26 @@ module JamRuby
|
||||||
validates :canceled, :inclusion => {:in => [nil, true, false]}
|
validates :canceled, :inclusion => {:in => [nil, true, false]}
|
||||||
validates :rsvp_slot, presence: true
|
validates :rsvp_slot, presence: true
|
||||||
|
|
||||||
|
def self.requests_by_session(session, user = nil)
|
||||||
|
query = RsvpRequest
|
||||||
|
.includes(:user)
|
||||||
|
.joins(
|
||||||
|
%Q{
|
||||||
|
INNER join
|
||||||
|
rsvp_slots rs
|
||||||
|
ON
|
||||||
|
rsvp_requests.rsvp_slot_id = rs.id
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.where(
|
||||||
|
%Q{
|
||||||
|
rsvp_slots.music_session_id = '#{session.id}''
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
query = query.where("rsvp_requests.user_id = '#{user.id}'") unless user.nil?
|
||||||
|
return query
|
||||||
|
end
|
||||||
|
|
||||||
# XXX we need to validate that only one RsvpRequest.chosen = true for a given RsvpSlot
|
# XXX we need to validate that only one RsvpRequest.chosen = true for a given RsvpSlot
|
||||||
# in other words, you can have many requests to a slot, but only 0 or 1 rsvp_request.chosen = true)
|
# in other words, you can have many requests to a slot, but only 0 or 1 rsvp_request.chosen = true)
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,8 @@
|
||||||
contentType: 'application/json',
|
contentType: 'application/json',
|
||||||
url: "/api/sessions/legacy",
|
url: "/api/sessions/legacy",
|
||||||
processData:false,
|
processData:false,
|
||||||
data: JSON.stringify(options)});
|
data: JSON.stringify(options)
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function legacyJoinSession(options) {
|
function legacyJoinSession(options) {
|
||||||
|
|
|
||||||
|
|
@ -768,7 +768,7 @@
|
||||||
text: "OKAY",
|
text: "OKAY",
|
||||||
"layout-action": "close",
|
"layout-action": "close",
|
||||||
href: "#",
|
href: "#",
|
||||||
css: "button-orange"
|
"class": "button-orange"
|
||||||
};
|
};
|
||||||
|
|
||||||
var cancelButton = {
|
var cancelButton = {
|
||||||
|
|
@ -776,7 +776,7 @@
|
||||||
text: "CANCEL",
|
text: "CANCEL",
|
||||||
"layout-action": "close",
|
"layout-action": "close",
|
||||||
href: "#",
|
href: "#",
|
||||||
css: "button-grey"
|
"class": "button-grey"
|
||||||
};
|
};
|
||||||
|
|
||||||
var defaultButtons = [
|
var defaultButtons = [
|
||||||
|
|
@ -861,14 +861,27 @@
|
||||||
$buttonDiv.empty();
|
$buttonDiv.empty();
|
||||||
|
|
||||||
$.each(buttons, function(index, val) {
|
$.each(buttons, function(index, val) {
|
||||||
$buttonDiv.append('<a id="' + val.id + '" href="#" class="' + val.css + '" layout-action="close">' + val.text + '</a> ')
|
|
||||||
|
// build button HTML based on KV pairs
|
||||||
|
var keys = Object.keys(val);
|
||||||
|
var buttonHtml = '<a';
|
||||||
|
|
||||||
|
for (var i=0; i < keys.length; i++) {
|
||||||
|
console.log("keys[i]=%o, val[keys[i]]=%o", keys[i], val[keys[i]]);
|
||||||
|
|
||||||
|
// ignore button text and callback info
|
||||||
|
if (keys[i] !== 'text' && keys[i] !== 'callback' && keys[i] !== 'callback_args') {
|
||||||
|
buttonHtml += ' ' + keys[i] + '="' + val[keys[i]] + '"';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
buttonHtml += '>' + val['text'] + '</a> ';
|
||||||
|
$buttonDiv.append(buttonHtml);
|
||||||
|
|
||||||
// ensure it doesn't fire twice
|
// ensure it doesn't fire twice
|
||||||
$('#' + val.id, $notify).unbind('click');
|
$('#' + val.id, $notify).unbind('click');
|
||||||
|
|
||||||
$('#' + val.id, $notify).click(function() {
|
$('#' + val.id, $notify).click(function() {
|
||||||
console.log($(this).attr('class'));
|
|
||||||
console.log("handling click");
|
|
||||||
if (val.callback !== undefined) {
|
if (val.callback !== undefined) {
|
||||||
if (val.callback_args) {
|
if (val.callback_args) {
|
||||||
val.callback(val.callback_args);
|
val.callback(val.callback_args);
|
||||||
|
|
|
||||||
|
|
@ -428,7 +428,7 @@
|
||||||
text: "JOIN SESSION",
|
text: "JOIN SESSION",
|
||||||
"layout-action": "close",
|
"layout-action": "close",
|
||||||
href: "#",
|
href: "#",
|
||||||
css: "button-orange",
|
"class": "button-orange",
|
||||||
callback: openTerms,
|
callback: openTerms,
|
||||||
callback_args: {
|
callback_args: {
|
||||||
"session_id": payload.session_id,
|
"session_id": payload.session_id,
|
||||||
|
|
@ -469,7 +469,7 @@
|
||||||
text: "APPROVE",
|
text: "APPROVE",
|
||||||
"layout-action": "close",
|
"layout-action": "close",
|
||||||
href: "#",
|
href: "#",
|
||||||
css: "button-orange",
|
"class": "button-orange",
|
||||||
callback: approveJoinRequest,
|
callback: approveJoinRequest,
|
||||||
callback_args: {
|
callback_args: {
|
||||||
"join_request_id": payload.join_request_id,
|
"join_request_id": payload.join_request_id,
|
||||||
|
|
@ -481,7 +481,7 @@
|
||||||
text: "REJECT",
|
text: "REJECT",
|
||||||
"layout-action": "close",
|
"layout-action": "close",
|
||||||
href: "#",
|
href: "#",
|
||||||
css: "button-grey",
|
"class": "button-grey",
|
||||||
callback: rejectJoinRequest,
|
callback: rejectJoinRequest,
|
||||||
callback_args: {
|
callback_args: {
|
||||||
"join_request_id": payload.join_request_id,
|
"join_request_id": payload.join_request_id,
|
||||||
|
|
@ -556,7 +556,7 @@
|
||||||
text: "ACCEPT",
|
text: "ACCEPT",
|
||||||
"layout-action": "close",
|
"layout-action": "close",
|
||||||
href: "#",
|
href: "#",
|
||||||
css: "button-orange",
|
"class": "button-orange",
|
||||||
callback: acceptFriendRequest,
|
callback: acceptFriendRequest,
|
||||||
callback_args: {
|
callback_args: {
|
||||||
"friend_request_id": payload.friend_request_id,
|
"friend_request_id": payload.friend_request_id,
|
||||||
|
|
@ -623,7 +623,7 @@
|
||||||
text: "JOIN SESSION",
|
text: "JOIN SESSION",
|
||||||
"layout-action": "close",
|
"layout-action": "close",
|
||||||
href: "#",
|
href: "#",
|
||||||
css: "button-orange",
|
"class": "button-orange",
|
||||||
callback: openTerms,
|
callback: openTerms,
|
||||||
callback_args: {
|
callback_args: {
|
||||||
"session_id": payload.session_id,
|
"session_id": payload.session_id,
|
||||||
|
|
@ -679,7 +679,7 @@
|
||||||
text: okText,
|
text: okText,
|
||||||
"layout-action": "close",
|
"layout-action": "close",
|
||||||
href: "#",
|
href: "#",
|
||||||
css: "button-orange",
|
"class": "button-orange",
|
||||||
callback: callback,
|
callback: callback,
|
||||||
callback_args: {
|
callback_args: {
|
||||||
"session_id": payload.session_id,
|
"session_id": payload.session_id,
|
||||||
|
|
@ -737,7 +737,7 @@
|
||||||
text: okText,
|
text: okText,
|
||||||
"layout-action": "close",
|
"layout-action": "close",
|
||||||
href: "#",
|
href: "#",
|
||||||
css: "button-orange",
|
"class": "button-orange",
|
||||||
callback: callback,
|
callback: callback,
|
||||||
callback_args: {
|
callback_args: {
|
||||||
"session_id": payload.session_id,
|
"session_id": payload.session_id,
|
||||||
|
|
@ -763,7 +763,15 @@
|
||||||
"title": "Session Invitation",
|
"title": "Session Invitation",
|
||||||
"text": payload.msg,
|
"text": payload.msg,
|
||||||
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
||||||
});
|
}, [{
|
||||||
|
id: "btn-more-info",
|
||||||
|
text: "More Info",
|
||||||
|
"layout-action": "close",
|
||||||
|
href: JK.root_url + "/sessions/" + payload.session_id + "/details",
|
||||||
|
rel: "external",
|
||||||
|
"class": "button-orange"
|
||||||
|
}]
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -775,10 +783,18 @@
|
||||||
handleNotification(payload, header.type);
|
handleNotification(payload, header.type);
|
||||||
|
|
||||||
app.notify({
|
app.notify({
|
||||||
"title": "Session Invitation",
|
"title": "Session RSVP",
|
||||||
"text": payload.msg,
|
"text": payload.msg,
|
||||||
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
||||||
});
|
}, [{
|
||||||
|
id: "btn-view-profile",
|
||||||
|
text: "View Profile",
|
||||||
|
"layout-action": "close",
|
||||||
|
href: JK.root_url + "/client#/profile/" + payload.user_id,
|
||||||
|
rel: "external",
|
||||||
|
"class": "button-orange"
|
||||||
|
}]
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -789,10 +805,18 @@
|
||||||
handleNotification(payload, header.type);
|
handleNotification(payload, header.type);
|
||||||
|
|
||||||
app.notify({
|
app.notify({
|
||||||
"title": "Session Invitation",
|
"title": "Session RSVP Approved!",
|
||||||
"text": payload.msg,
|
"text": payload.msg,
|
||||||
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
||||||
});
|
}, [{
|
||||||
|
id: "btn-session-details",
|
||||||
|
text: "Session Details",
|
||||||
|
"layout-action": "close",
|
||||||
|
href: JK.root_url + "/sessions/" + payload.session_id + "/details",
|
||||||
|
rel: "external",
|
||||||
|
"class": "button-orange"
|
||||||
|
}]
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -803,10 +827,18 @@
|
||||||
handleNotification(payload, header.type);
|
handleNotification(payload, header.type);
|
||||||
|
|
||||||
app.notify({
|
app.notify({
|
||||||
"title": "Session Invitation",
|
"title": "Session RSVP Cancelled",
|
||||||
"text": payload.msg,
|
"text": payload.msg,
|
||||||
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
||||||
});
|
}, [{
|
||||||
|
id: "btn-session-details",
|
||||||
|
text: "Session Details",
|
||||||
|
"layout-action": "close",
|
||||||
|
href: JK.root_url + "/sessions/" + payload.session_id + "/details",
|
||||||
|
rel: "external",
|
||||||
|
"class": "button-orange"
|
||||||
|
}]
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -817,10 +849,18 @@
|
||||||
handleNotification(payload, header.type);
|
handleNotification(payload, header.type);
|
||||||
|
|
||||||
app.notify({
|
app.notify({
|
||||||
"title": "Session Invitation",
|
"title": "Session RSVP Cancelled",
|
||||||
"text": payload.msg,
|
"text": payload.msg,
|
||||||
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
||||||
});
|
}, [{
|
||||||
|
id: "btn-session-details",
|
||||||
|
text: "Session Details",
|
||||||
|
"layout-action": "close",
|
||||||
|
href: JK.root_url + "/sessions/" + payload.session_id + "/details",
|
||||||
|
rel: "external",
|
||||||
|
"class": "button-orange"
|
||||||
|
}]
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -831,10 +871,18 @@
|
||||||
handleNotification(payload, header.type);
|
handleNotification(payload, header.type);
|
||||||
|
|
||||||
app.notify({
|
app.notify({
|
||||||
"title": "Session Invitation",
|
"title": "Session Cancelled",
|
||||||
"text": payload.msg,
|
"text": payload.msg,
|
||||||
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
||||||
});
|
}, [{
|
||||||
|
id: "btn-session-details",
|
||||||
|
text: "Session Details",
|
||||||
|
"layout-action": "close",
|
||||||
|
href: JK.root_url + "/sessions/" + payload.session_id + "/details",
|
||||||
|
rel: "external",
|
||||||
|
"class": "button-orange"
|
||||||
|
}]
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -845,10 +893,18 @@
|
||||||
handleNotification(payload, header.type);
|
handleNotification(payload, header.type);
|
||||||
|
|
||||||
app.notify({
|
app.notify({
|
||||||
"title": "Session Invitation",
|
"title": "Session Rescheduled",
|
||||||
"text": payload.msg,
|
"text": payload.msg,
|
||||||
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
||||||
});
|
}, [{
|
||||||
|
id: "btn-session-details",
|
||||||
|
text: "Session Details",
|
||||||
|
"layout-action": "close",
|
||||||
|
href: JK.root_url + "/sessions/" + payload.session_id + "/details",
|
||||||
|
rel: "external",
|
||||||
|
"class": "button-orange"
|
||||||
|
}]
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -859,10 +915,18 @@
|
||||||
handleNotification(payload, header.type);
|
handleNotification(payload, header.type);
|
||||||
|
|
||||||
app.notify({
|
app.notify({
|
||||||
"title": "Session Invitation",
|
"title": "Session Reminder",
|
||||||
"text": payload.msg,
|
"text": payload.msg,
|
||||||
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
||||||
});
|
}, [{
|
||||||
|
id: "btn-session-details",
|
||||||
|
text: "Session Details",
|
||||||
|
"layout-action": "close",
|
||||||
|
href: JK.root_url + "/sessions/" + payload.session_id + "/details",
|
||||||
|
rel: "external",
|
||||||
|
"class": "button-orange"
|
||||||
|
}]
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -874,10 +938,18 @@
|
||||||
handleNotification(payload, header.type);
|
handleNotification(payload, header.type);
|
||||||
|
|
||||||
app.notify({
|
app.notify({
|
||||||
"title": "Session Invitation",
|
"title": "Session Comment",
|
||||||
"text": payload.msg,
|
"text": payload.msg,
|
||||||
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
|
||||||
});
|
}, [{
|
||||||
|
id: "btn-session-details",
|
||||||
|
text: "Session Details",
|
||||||
|
"layout-action": "close",
|
||||||
|
href: JK.root_url + "/sessions/" + payload.session_id + "/details",
|
||||||
|
rel: "external",
|
||||||
|
"class": "button-orange"
|
||||||
|
}]
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -897,7 +969,7 @@
|
||||||
text: "LISTEN",
|
text: "LISTEN",
|
||||||
"layout-action": "close",
|
"layout-action": "close",
|
||||||
href: "#",
|
href: "#",
|
||||||
css: "button-orange",
|
"class": "button-orange",
|
||||||
callback: listenToRecording,
|
callback: listenToRecording,
|
||||||
callback_args: {
|
callback_args: {
|
||||||
"recording_id": payload.recording_id,
|
"recording_id": payload.recording_id,
|
||||||
|
|
@ -923,7 +995,7 @@
|
||||||
text: "LISTEN",
|
text: "LISTEN",
|
||||||
"layout-action": "close",
|
"layout-action": "close",
|
||||||
href: "#",
|
href: "#",
|
||||||
css: "button-orange",
|
"class": "button-orange",
|
||||||
callback: listenToRecording,
|
callback: listenToRecording,
|
||||||
callback_args: {
|
callback_args: {
|
||||||
"recording_id": payload.recording_id,
|
"recording_id": payload.recording_id,
|
||||||
|
|
@ -950,7 +1022,7 @@
|
||||||
text: "SHARE",
|
text: "SHARE",
|
||||||
"layout-action": "close",
|
"layout-action": "close",
|
||||||
href: "#",
|
href: "#",
|
||||||
css: "button-orange",
|
"class": "button-orange",
|
||||||
callback: shareRecording,
|
callback: shareRecording,
|
||||||
callback_args: {
|
callback_args: {
|
||||||
"recording_id": payload.recording_id
|
"recording_id": payload.recording_id
|
||||||
|
|
@ -979,7 +1051,7 @@
|
||||||
text: "ACCEPT",
|
text: "ACCEPT",
|
||||||
"layout-action": "close",
|
"layout-action": "close",
|
||||||
href: "#",
|
href: "#",
|
||||||
css: "button-orange",
|
"class": "button-orange",
|
||||||
callback: acceptBandInvitation,
|
callback: acceptBandInvitation,
|
||||||
callback_args: {
|
callback_args: {
|
||||||
"band_invitation_id": payload.band_invitation_id,
|
"band_invitation_id": payload.band_invitation_id,
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,7 @@ class MusicSessionsController < ApplicationController
|
||||||
render :layout => "web"
|
render :layout => "web"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def show_scheduled_session_info
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ SampleApp::Application.routes.draw do
|
||||||
match '/auth/failure', :to => 'sessions#failure'
|
match '/auth/failure', :to => 'sessions#failure'
|
||||||
|
|
||||||
# session / recording landing pages
|
# session / recording landing pages
|
||||||
|
match '/sessions/:id/details' => 'music_sessions#show_scheduled_session_info', :via => :get, :as => 'music_scheduled_session_detail'
|
||||||
match '/sessions/:id' => 'music_sessions#show', :via => :get, :as => 'music_session_detail'
|
match '/sessions/:id' => 'music_sessions#show', :via => :get, :as => 'music_session_detail'
|
||||||
match '/recordings/:id' => 'recordings#show', :via => :get, :as => 'recording_detail'
|
match '/recordings/:id' => 'recordings#show', :via => :get, :as => 'recording_detail'
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue