From 8d19e4510ecabe69beea9f4aae1f2bd06d80173b Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Sat, 31 Jan 2015 16:07:34 -0500 Subject: [PATCH] VRFS-2693 VRFS-2694 wip new musician profile models --- ruby/lib/jam_ruby/models/performance_sample.rb | 15 +++++++++++++++ ruby/lib/jam_ruby/models/user.rb | 3 +++ ruby/lib/jam_ruby/models/user_presence.rb | 5 +++++ ruby/spec/jam_ruby/models/user_spec.rb | 5 ++++- web/app/controllers/api_users_controller.rb | 5 ++++- web/config/routes.rb | 3 +++ 6 files changed, 34 insertions(+), 2 deletions(-) diff --git a/ruby/lib/jam_ruby/models/performance_sample.rb b/ruby/lib/jam_ruby/models/performance_sample.rb index 474ad7a32..a406effbc 100644 --- a/ruby/lib/jam_ruby/models/performance_sample.rb +++ b/ruby/lib/jam_ruby/models/performance_sample.rb @@ -1,4 +1,19 @@ module JamRuby class PerformanceSample < ActiveRecord::Base + belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "user_id" + belongs_to :claimed_recording, :class_name => "JamRuby::ClaimedRecording" :foreign_key => "claimed_recording_id" + + validates :user_type_recording_unique :if => lambda { |p| p.type == "jamkazam" } + validates :user_type_service_unique :if => lambda { |p| p.type != "jamkazam" } + + def user_type_recording_unique + match = PerformanceSample.exists?(:user_id => user.id, :claimed_recording_id => self.claimed_recording_id) + raise "You already have this JamKazam recording listed as a sample" if match + end + + def user_type_service_unique + match = PerformanceSample.exists?(:user_id => user.id, :service_id => self.service_id) + raise "You already have this #{self.type} sample listed (#{self.service_id}." if match + end end end \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/user.rb b/ruby/lib/jam_ruby/models/user.rb index 30bde5246..a553e07d4 100644 --- a/ruby/lib/jam_ruby/models/user.rb +++ b/ruby/lib/jam_ruby/models/user.rb @@ -152,6 +152,9 @@ module JamRuby # This causes the authenticate method to be generated (among other stuff) #has_secure_password + has_many :user_presences, :class_name => "JamRuby::UserPresence" + has_many :performance_samples, :class_name => "JamRuby::PerformanceSample" + before_save :create_remember_token, :if => :should_validate_password? before_save :stringify_avatar_info , :if => :updating_avatar diff --git a/ruby/lib/jam_ruby/models/user_presence.rb b/ruby/lib/jam_ruby/models/user_presence.rb index d0274ef9a..1cf9ec3e4 100644 --- a/ruby/lib/jam_ruby/models/user_presence.rb +++ b/ruby/lib/jam_ruby/models/user_presence.rb @@ -1,4 +1,9 @@ module JamRuby class UserPresence < ActiveRecord::Base + belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "user_id" + + def self.save(user, params) + UserPresence.create(:user => user, :type => params[:type], :username => username) + end end end \ No newline at end of file diff --git a/ruby/spec/jam_ruby/models/user_spec.rb b/ruby/spec/jam_ruby/models/user_spec.rb index 6d51c9b6e..39e161db5 100644 --- a/ruby/spec/jam_ruby/models/user_spec.rb +++ b/ruby/spec/jam_ruby/models/user_spec.rb @@ -667,13 +667,16 @@ describe User do describe "age" do let(:user) {FactoryGirl.create(:user)} - + it "should calculate age based on birth_date" do user.birth_date = Time.now - 10.years user.age.should == 10 user.birth_date = Time.now - 10.years + 3.months user.age.should == 9 + + user.birth_date = nil + user.age.should == "unspecified" end end diff --git a/web/app/controllers/api_users_controller.rb b/web/app/controllers/api_users_controller.rb index 7d8d40f94..7569c0b60 100644 --- a/web/app/controllers/api_users_controller.rb +++ b/web/app/controllers/api_users_controller.rb @@ -13,7 +13,7 @@ class ApiUsersController < ApiController :band_invitation_index, :band_invitation_show, :band_invitation_update, # band invitations :set_password, :begin_update_email, :update_avatar, :delete_avatar, :generate_filepicker_policy, :share_session, :share_recording, - :affiliate_report, :audio_latency] + :affiliate_report, :audio_latency, :profile] respond_to :json @@ -699,6 +699,9 @@ class ApiUsersController < ApiController end end + def profile + end + ###################### RECORDINGS ####################### # def recording_index # @recordings = User.recording_index(current_user, params[:id]) diff --git a/web/config/routes.rb b/web/config/routes.rb index 2a18c7fce..eabaef5e6 100644 --- a/web/config/routes.rb +++ b/web/config/routes.rb @@ -335,6 +335,9 @@ SampleApp::Application.routes.draw do match '/users/:id/share/session/:provider' => 'api_users#share_session', :via => :get match '/users/:id/share/recording/:provider' => 'api_users#share_recording', :via => :get + #profile + match '/users/:id/profile' => 'api_users#profile', :via => :get, :as => 'api_users_profile' + # session chat match '/chat' => 'api_chats#create', :via => :post match '/sessions/:music_session/chats' => 'api_chats#index', :via => :get