VRFS-2193 show only active musicians in each feed item detail view for in-progress sessions

This commit is contained in:
Brian Smith 2015-01-20 02:21:25 -05:00
parent 8f9e49ccf1
commit f80b0e4f66
3 changed files with 27 additions and 8 deletions

View File

@ -333,6 +333,8 @@ SQL
connection = Connection.find_by_client_id_and_user_id!(client_id, user.id)
connection.join_the_session(music_session, as_musician, tracks, user, audio_latency, video_sources)
JamRuby::MusicSessionUserHistory.join_music_session(user.id, music_session.id)
# connection.music_session_id = music_session.id
# connection.as_musician = as_musician
# connection.joining_session = true

View File

@ -426,14 +426,18 @@ module JamRuby
# returns one user history per user, with instruments all crammed together, and with total duration
def unique_user_histories
user_filter = "music_sessions_user_history.session_removed_at is null" if self.session_removed_at.nil?
MusicSessionUserHistory
.joins(:user)
.select("STRING_AGG(instruments, '|') AS total_instruments,
SUM(date_part('epoch', COALESCE(music_sessions_user_history.session_removed_at, music_sessions_user_history.created_at) - music_sessions_user_history.created_at)) AS total_duration,
music_sessions_user_history.user_id, music_sessions_user_history.music_session_id, users.first_name, users.last_name, users.photo_url")
.group("music_sessions_user_history.user_id, music_sessions_user_history.music_session_id, users.first_name, users.last_name, users.photo_url")
.order("music_sessions_user_history.user_id")
.where(%Q{ music_sessions_user_history.music_session_id = '#{id}'})
.joins(:user)
.select("STRING_AGG(instruments, '|') AS total_instruments,
SUM(date_part('epoch', COALESCE(music_sessions_user_history.session_removed_at, music_sessions_user_history.created_at) - music_sessions_user_history.created_at)) AS total_duration,
music_sessions_user_history.user_id, music_sessions_user_history.music_session_id, users.first_name, users.last_name, users.photo_url")
.group("music_sessions_user_history.user_id, music_sessions_user_history.music_session_id, users.first_name, users.last_name, users.photo_url")
.order("music_sessions_user_history.user_id")
.where(%Q{ music_sessions_user_history.music_session_id = '#{id}'})
.where(user_filter)
end
def duration_minutes

View File

@ -56,6 +56,20 @@ module JamRuby
(end_time - self.created_at) / 60.0
end
def self.join_music_session(user_id, session_id)
hist = self
.where(:user_id => user_id)
.where(:music_session_id => session_id)
.limit(1)
.first
hist.start_history if hist
end
def start_history
self.session_removed_at = nil
self.update_attributes(:session_removed_at => self.session_removed_at, :max_concurrent_connections => determine_max_concurrent)
end
def self.removed_music_session(user_id, session_id)
hist = self
.where(:user_id => user_id)
@ -67,7 +81,6 @@ module JamRuby
def end_history
self.session_removed_at = Time.now if self.session_removed_at.nil?
self.update_attributes(:session_removed_at => self.session_removed_at, :max_concurrent_connections => determine_max_concurrent)
end