diff --git a/pb/src/client_container.proto b/pb/src/client_container.proto index 8e47b148b..ffa1478b7 100644 --- a/pb/src/client_container.proto +++ b/pb/src/client_container.proto @@ -46,7 +46,6 @@ message ClientMessage { SCHEDULED_SESSION_REMINDER = 181; SCHEDULED_SESSION_COMMENT = 182; - // recording notifications MUSICIAN_RECORDING_SAVED = 200; BAND_RECORDING_SAVED = 205; diff --git a/ruby/lib/jam_ruby.rb b/ruby/lib/jam_ruby.rb index 2ea2b5a2b..acbcdb4ff 100755 --- a/ruby/lib/jam_ruby.rb +++ b/ruby/lib/jam_ruby.rb @@ -66,6 +66,8 @@ require "jam_ruby/models/max_mind_isp" require "jam_ruby/models/band_genre" require "jam_ruby/models/genre" require "jam_ruby/models/user" +require "jam_ruby/models/rsvp_request" +require "jam_ruby/models/rsvp_slot" require "jam_ruby/models/user_observer" require "jam_ruby/models/user_authorization" require "jam_ruby/models/join_request" diff --git a/ruby/lib/jam_ruby/message_factory.rb b/ruby/lib/jam_ruby/message_factory.rb index 66dd94f5e..784d5965a 100644 --- a/ruby/lib/jam_ruby/message_factory.rb +++ b/ruby/lib/jam_ruby/message_factory.rb @@ -452,14 +452,14 @@ module JamRuby ) end - # SCHEDULED_SESSION_RSVP = 175; - # 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; + # SCHEDULED_SESSION_RSVP = 175; + # 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( @@ -479,7 +479,6 @@ module JamRuby ) end - 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( :session_id => session_id, diff --git a/ruby/lib/jam_ruby/models/rsvp_request.rb b/ruby/lib/jam_ruby/models/rsvp_request.rb new file mode 100644 index 000000000..28ca90401 --- /dev/null +++ b/ruby/lib/jam_ruby/models/rsvp_request.rb @@ -0,0 +1,17 @@ +module JamRuby + class RsvpRequest < ActiveRecord::Base + + belongs_to :user, :class_name => "JamRuby::User" + belongs_to :rsvp_slot, :class_name => "JamRuby::RsvpSlot" + + validates :message, length: {maximum: 1000}, no_profanity: true + validates :chosen, :inclusion => {:in => [nil, true, false]} + validates :canceled, :inclusion => {:in => [nil, true, false]} + validates :rsvp_slot, presence: true + + + # 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) + end + +end diff --git a/ruby/lib/jam_ruby/models/rsvp_slot.rb b/ruby/lib/jam_ruby/models/rsvp_slot.rb new file mode 100644 index 000000000..7559fee7f --- /dev/null +++ b/ruby/lib/jam_ruby/models/rsvp_slot.rb @@ -0,0 +1,10 @@ +module JamRuby + class RsvpSlot < ActiveRecord::Base + + belongs_to :instrument, :class_name => "JamRuby::Instrument" + belongs_to :music_session + has_many :rsvp_requests, :class_name => "JamRuby::RsvpRequest" + + # TODO: validates :proficiency_level + end +end diff --git a/ruby/spec/factories.rb b/ruby/spec/factories.rb index e914a2d66..20b37fb77 100644 --- a/ruby/spec/factories.rb +++ b/ruby/spec/factories.rb @@ -458,4 +458,18 @@ FactoryGirl.define do creator JamRuby::Diagnostic::CLIENT data Faker::Lorem.sentence end + + factory :rsvp_slot, class: JamRuby::RsvpSlot do + association :instrument, factory: :instrument + association :music_session, factory: :music_session + proficiency_level 'beginner' + end + + factory :rsvp_request, class: JamRuby::RsvpRequest do + association :user, factory: :user + association :rsvp_slot, factory: :rsvp_slot + sequence(:message) { |n| "I want to join!#{n}" } + chosen false + canceled false + end end diff --git a/ruby/spec/jam_ruby/models/rsvp_request_spec.rb b/ruby/spec/jam_ruby/models/rsvp_request_spec.rb new file mode 100644 index 000000000..02e137a6b --- /dev/null +++ b/ruby/spec/jam_ruby/models/rsvp_request_spec.rb @@ -0,0 +1,8 @@ +require 'spec_helper' + +describe RsvpRequest do + + it "success" do + FactoryGirl.create(:rsvp_request) + end +end \ No newline at end of file diff --git a/ruby/spec/jam_ruby/models/rsvp_slot_spec.rb b/ruby/spec/jam_ruby/models/rsvp_slot_spec.rb new file mode 100644 index 000000000..0dfd52eaa --- /dev/null +++ b/ruby/spec/jam_ruby/models/rsvp_slot_spec.rb @@ -0,0 +1,8 @@ +require 'spec_helper' + +describe RsvpSlot do + + it "success" do + FactoryGirl.create(:rsvp_slot) + end +end \ No newline at end of file diff --git a/web/app/assets/javascripts/AAB_message_factory.js b/web/app/assets/javascripts/AAB_message_factory.js index db1c72816..4108ea118 100644 --- a/web/app/assets/javascripts/AAB_message_factory.js +++ b/web/app/assets/javascripts/AAB_message_factory.js @@ -33,8 +33,9 @@ JOIN_REQUEST_REJECTED : "JOIN_REQUEST_REJECTED", SESSION_JOIN : "SESSION_JOIN", SESSION_DEPART : "SESSION_DEPART", - MUSICIAN_SESSION_JOIN : "MUSICIAN_SESSION_JOIN", TRACKS_CHANGED : "TRACKS_CHANGED", + MUSICIAN_SESSION_JOIN : "MUSICIAN_SESSION_JOIN", + BAND_SESSION_JOIN : "BAND_SESSION_JOIN", SCHEDULED_SESSION_INVITATION : "SCHEDULED_SESSION_INVITATION", SCHEDULED_SESSION_RSVP : "SCHEDULED_SESSION_RSVP", SCHEDULED_SESSION_RSVP_APPROVED : "SCHEDULED_SESSION_RSVP_APPROVED", @@ -56,7 +57,6 @@ // band notifications BAND_INVITATION : "BAND_INVITATION", BAND_INVITATION_ACCEPTED : "BAND_INVITATION_ACCEPTED", - BAND_SESSION_JOIN : "BAND_SESSION_JOIN", // text message TEXT_MESSAGE : "TEXT_MESSAGE", diff --git a/web/app/assets/javascripts/layout.js b/web/app/assets/javascripts/layout.js index 3272380ce..ebc4990af 100644 --- a/web/app/assets/javascripts/layout.js +++ b/web/app/assets/javascripts/layout.js @@ -807,7 +807,6 @@ } notifyQueue.push({message: message, descriptor: buttons}); - // JW - speeding up the in/out parts of notify. Extending non-moving time. $notify.slideDown(250) .delay(4000)