VRFS-1670 VRFS-1671 VRFS-1678 RSVP work in progres

This commit is contained in:
Brian Smith 2014-05-18 22:30:11 -04:00
parent 95100a1b49
commit dce007a13d
23 changed files with 98 additions and 6 deletions

View File

@ -155,4 +155,5 @@ session_ratings.sql
scheduled_sessions.sql
notification_scheduled_session.sql
music_notation.sql
music_session_recurring_mode.sql
music_session_recurring_mode.sql
scheduled_sessions_2.sql

View File

@ -0,0 +1,21 @@
ALTER TABLE rsvp_requests DROP COLUMN rsvp_slot_id;
ALTER TABLE rsvp_requests DROP COLUMN chosen;
ALTER TABLE rsvp_requests DROP COLUMN message;
CREATE TABLE rsvp_requests_rsvp_slots (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4() NOT NULL,
rsvp_request_id VARCHAR(64) NOT NULL REFERENCES rsvp_requests(id) ON DELETE CASCADE,
rsvp_slot_id VARCHAR(64) NOT NULL REFERENCES rsvp_slots(id) ON DELETE CASCADE,
chosen BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW() NOT NULL,
updated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW() NOT NULL
);
CREATE TABLE session_info_comments (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
music_session_id VARCHAR(64) NOT NULL REFERENCES music_sessions(id) ON DELETE CASCADE,
creator_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE,
comment TEXT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

View File

@ -69,6 +69,7 @@ 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/rsvp_request_slot"
require "jam_ruby/models/user_observer"
require "jam_ruby/models/user_authorization"
require "jam_ruby/models/join_request"
@ -83,6 +84,7 @@ require "jam_ruby/models/diagnostic"
require "jam_ruby/models/friendship"
require "jam_ruby/models/active_music_session"
require "jam_ruby/models/music_session_comment"
require "jam_ruby/models/session_info_comment"
require "jam_ruby/models/music_session"
require "jam_ruby/models/music_session_liker"
require "jam_ruby/models/music_session_user_history"

View File

@ -2,13 +2,20 @@ module JamRuby
class RsvpRequest < ActiveRecord::Base
belongs_to :user, :class_name => "JamRuby::User"
belongs_to :rsvp_slot, :class_name => "JamRuby::RsvpSlot"
has_many :rsvp_request_slots, :class_name => "JamRuby::RsvpRequestSlot"
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
def self.create(params)
# slot_ids =
rsvp = RsvpRequest.new
# rsv
rsvp.save
end
def self.requests_by_session(session, user = nil)
query = RsvpRequest
.includes(:user)

View File

@ -0,0 +1,10 @@
module JamRuby
class RsvpRequestSlot < ActiveRecord::Base
self.table_name = "rsvp_requests_rsvp_slots"
self.primary_key = 'id'
belongs_to :rsvp_request
belongs_to :rsvp_slot
end
end

View File

@ -3,7 +3,7 @@ module JamRuby
belongs_to :instrument, :class_name => "JamRuby::Instrument"
belongs_to :music_session
has_many :rsvp_requests, :class_name => "JamRuby::RsvpRequest"
has_many :rsvp_request_slots, :class_name => "JamRuby::RsvpRequestSlot"
# TODO: validates :proficiency_level
end

View File

@ -0,0 +1,19 @@
module JamRuby
class SessionInfoComment < ActiveRecord::Base
self.table_name = "session_info_comments"
self.primary_key = 'id'
default_scope order('created_at DESC')
belongs_to(:music_session,
:class_name => "JamRuby::MusicSession",
:foreign_key => "music_session_id")
belongs_to(:user,
:class_name => "JamRuby::User",
:foreign_key => "creator_id")
end
end

View File

@ -357,7 +357,7 @@ describe Notification do
it "sends no notification if comment is empty" do
session = FactoryGirl.create(:music_session)
calls = count_publish_to_user_calls
notification = Notification.send_scheduled_session_comment(nil, session)
notification = Notification.send_scheduled_session_comment(session, '')
UserMailer.deliveries.length.should == 0
calls[:count].should == 0

View File

@ -42,6 +42,9 @@
//= require utils
//= require ui_helper
//= require custom_controls
//= require rsvpSubmitDialog
//= require rsvpCancelDialog
//= require rsvpReviewDialog
//= require ga
//= require jam_rest
//= require facebook_rest

View File

@ -13,6 +13,7 @@
*= require client/invitationDialog
*= require client/shareDialog
*= require client/hoverBubble
*= require client/rsvpDialog
*= require web/main
*= require web/footer
*= require web/recordings

View File

@ -0,0 +1,9 @@
class ApiRsvpRequestsController < ApiController
respond_to :json
def create
end
end

View File

@ -7,7 +7,9 @@ class MusicSessionsController < ApplicationController
render :layout => "web"
end
def show_scheduled_session_info
def session_info
@music_session = MusicSession.find(params[:id])
render :layout => "web"
end
end

View File

@ -0,0 +1,3 @@
object @rsvp
extends "api_rsvp_requests/show"

View File

@ -0,0 +1 @@
collection @rsvp_requests

View File

@ -0,0 +1,7 @@
object @rsvp
attributes :user_id, :message, :chosen, :canceled, :created_at
child :rsvp_slot => :rsvp_slot do
attributes :id, :instrument_id, :proficiency_level, :music_session_id, :created_at
end

View File

@ -26,7 +26,7 @@ SampleApp::Application.routes.draw do
match '/auth/failure', :to => 'sessions#failure'
# session / recording landing pages
match '/sessions/:id/details' => 'music_sessions#show_scheduled_session_info', :via => :get, :as => 'music_scheduled_session_detail'
match '/sessions/:id/details' => 'music_sessions#session_info', :via => :get, :as => 'music_scheduled_session_detail'
match '/sessions/:id' => 'music_sessions#show', :via => :get, :as => 'music_session_detail'
match '/recordings/:id' => 'recordings#show', :via => :get, :as => 'recording_detail'
@ -165,6 +165,12 @@ SampleApp::Application.routes.draw do
match '/sessions/:id/tracks/:track_id' => 'api_music_sessions#track_show', :via => :get, :as => 'api_session_track_detail'
match '/sessions/:id/tracks/:track_id' => 'api_music_sessions#track_destroy', :via => :delete
# RSVP requests
match '/sessions/:id/rsvp_requests' => 'api_music_sessions#rsvp_requests_index', :via => :get
match '/rsvp_requests' => 'api_rsvp_requests#create', :via => :post
match '/rsvp_requests/:id' => 'api_rsvp_requests#show', :via => :get, :as => 'api_rsvp_request_detail'
match '/rsvp_requests/:id' => 'api_rsvp_requests#destroy', :via => :delete
# music session playback recording state
match '/sessions/:id/claimed_recording/:claimed_recording_id/start' => 'api_music_sessions#claimed_recording_start', :via => :post
match '/sessions/:id/claimed_recording/:claimed_recording_id/stop' => 'api_music_sessions#claimed_recording_stop', :via => :post