VRFS-1945 added create_type to music_sessions; filtering session search based on create_type

This commit is contained in:
Jonathan Kolyer 2014-10-21 07:27:26 +00:00
parent d17d4ede99
commit af2159fe72
6 changed files with 49 additions and 35 deletions

View File

@ -221,4 +221,5 @@ connection_network_testing.sql
video_sources.sql video_sources.sql
recorded_videos.sql recorded_videos.sql
emails_from_update2.sql emails_from_update2.sql
add_youtube_flag_to_claimed_recordings.sql add_youtube_flag_to_claimed_recordings.sql
add_session_create_type.sql

View File

@ -0,0 +1 @@
ALTER TABLE music_sessions ADD COLUMN create_type VARCHAR(64);

View File

@ -21,6 +21,8 @@ require 'rest-client'
require 'zip' require 'zip'
require 'csv' require 'csv'
require 'byebug'
require "jam_ruby/constants/limits" require "jam_ruby/constants/limits"
require "jam_ruby/constants/notification_types" require "jam_ruby/constants/notification_types"
require "jam_ruby/constants/validation_messages" require "jam_ruby/constants/validation_messages"

View File

@ -16,6 +16,12 @@ module JamRuby
UNSTARTED_INTERVAL_DAYS_PURGE = '28' # days past scheduled start to purge session UNSTARTED_INTERVAL_DAYS_PURGE = '28' # days past scheduled start to purge session
UNSTARTED_INTERVAL_DAYS_PURGE_RECUR = '28' # days past scheduled start to purge recurddingsession UNSTARTED_INTERVAL_DAYS_PURGE_RECUR = '28' # days past scheduled start to purge recurddingsession
CREATE_TYPE_START_SCHEDULED = 'start-scheduled'
CREATE_TYPE_SCHEDULE_FUTURE = 'schedule-future'
CREATE_TYPE_RSVP = 'rsvp'
CREATE_TYPE_IMMEDIATE = 'immediately'
CREATE_TYPE_QUICK_START = 'quick-start'
attr_accessor :legal_terms, :language_description, :access_description, :scheduling_info_changed attr_accessor :legal_terms, :language_description, :access_description, :scheduling_info_changed
attr_accessor :approved_rsvps, :open_slots, :pending_invitations attr_accessor :approved_rsvps, :open_slots, :pending_invitations
@ -293,8 +299,9 @@ module JamRuby
query = MusicSession.where("music_sessions.canceled = FALSE") query = MusicSession.where("music_sessions.canceled = FALSE")
query = query.where("music_sessions.user_id = '#{user.id}'") query = query.where("music_sessions.user_id = '#{user.id}'")
query = query.where("music_sessions.scheduled_start IS NULL OR #{session_not_started} OR #{session_finished}") query = query.where("music_sessions.scheduled_start IS NULL OR #{session_not_started} OR #{session_finished}")
query = query.where("music_sessions.create_type IS NULL OR music_sessions.create_type != '#{CREATE_TYPE_QUICK_START}'")
query = query.order("music_sessions.scheduled_start ASC") query = query.order("music_sessions.scheduled_start ASC")
query query
end end
@ -338,6 +345,7 @@ module JamRuby
ms.legal_terms = true ms.legal_terms = true
ms.open_rsvps = options[:open_rsvps] if options[:open_rsvps] ms.open_rsvps = options[:open_rsvps] if options[:open_rsvps]
ms.creator = user ms.creator = user
ms.create_type = options[:create_type]
ms.is_unstructured_rsvp = options[:isUnstructuredRsvp] if options[:isUnstructuredRsvp] ms.is_unstructured_rsvp = options[:isUnstructuredRsvp] if options[:isUnstructuredRsvp]
ms.scheduled_start = parse_scheduled_start(options[:start], options[:timezone]) if options[:start] && options[:timezone] ms.scheduled_start = parse_scheduled_start(options[:start], options[:timezone]) if options[:start] && options[:timezone]
@ -716,6 +724,7 @@ module JamRuby
query = query.offset(offset) query = query.offset(offset)
query = query.limit(limit) query = query.limit(limit)
query = query.where("music_sessions.create_type IS NULL OR music_sessions.create_type != ?", MusicSession::CREATE_TYPE_QUICK_START)
query = query.where("music_sessions.genre_id = ?", genre) unless genre.blank? query = query.where("music_sessions.genre_id = ?", genre) unless genre.blank?
query = query.where('music_sessions.language = ?', lang) unless lang.blank? query = query.where('music_sessions.language = ?', lang) unless lang.blank?
query = query.where("(description_tsv @@ to_tsquery('jamenglish', ?))", ActiveRecord::Base.connection.quote(keyword) + ':*') unless keyword.blank? query = query.where("(description_tsv @@ to_tsquery('jamenglish', ?))", ActiveRecord::Base.connection.quote(keyword) + ':*') unless keyword.blank?

View File

@ -17,7 +17,7 @@
var MAX_GENRES = 1; var MAX_GENRES = 1;
var createSessionSettings = { var createSessionSettings = {
createType: 'start-scheduled', createType: '<%= MusicSession::CREATE_TYPE_START_SCHEDULED %>',
timezone: {}, timezone: {},
recurring_mode: {}, recurring_mode: {},
language: {}, language: {},
@ -139,14 +139,14 @@
}); });
} }
if (createSessionSettings.createType == 'start-scheduled' && createSessionSettings.session_count == 0) if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>' && createSessionSettings.session_count == 0)
$editScheduledSessions.hide(); $editScheduledSessions.hide();
else if (createSessionSettings.createType == 'start-scheduled' && createSessionSettings.session_count > 0) else if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>' && createSessionSettings.session_count > 0)
$editScheduledSessions.show(); $editScheduledSessions.show();
var $btnNext = $screen.find('.btn-next'); var $btnNext = $screen.find('.btn-next');
if (step == STEP_SELECT_TYPE && createSessionSettings.createType == 'start-scheduled' && createSessionSettings.selectedSessionId == null) { if (step == STEP_SELECT_TYPE && createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>' && createSessionSettings.selectedSessionId == null) {
$btnNext.addClass('disabled'); $btnNext.addClass('disabled');
} }
else { else {
@ -223,11 +223,11 @@
startType = 'Now!'; startType = 'Now!';
createSessionSettings.startType = "START SESSION"; createSessionSettings.startType = "START SESSION";
} }
else if (createSessionSettings.createType == 'rsvp') { else if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_RSVP %>') {
startType = 'To be determined after RSVPs received'; startType = 'To be determined after RSVPs received';
createSessionSettings.startType = "PUBLISH SESSION"; createSessionSettings.startType = "PUBLISH SESSION";
} }
else if (createSessionSettings.createType == 'schedule-future') { else if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_SCHEDULE_FUTURE %>') {
startType = createSessionSettings.startDate + ',' + startType = createSessionSettings.startDate + ',' +
createSessionSettings.startTime + ', ' + createSessionSettings.startTime + ', ' +
createSessionSettings.timezone.label; createSessionSettings.timezone.label;
@ -289,7 +289,7 @@
} }
$('#session-invited-disp').html(sessionInvitedString); $('#session-invited-disp').html(sessionInvitedString);
if (createSessionSettings.createType == 'start-scheduled') { if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>') {
var session = scheduledSessions[createSessionSettings.selectedSessionId]; var session = scheduledSessions[createSessionSettings.selectedSessionId];
if (session.approved_rsvps.length > 0) { if (session.approved_rsvps.length > 0) {
var instruments_me = []; var instruments_me = [];
@ -348,7 +348,7 @@
} }
function beforeMoveStep1() { function beforeMoveStep1() {
if (createSessionSettings.createType == 'start-scheduled') { if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>') {
createSessionSettings.selectedSessionId = $scheduledSessions.find('.iradio_minimal.checked input[name="scheduled-session-info"]').attr('data-session-id'); createSessionSettings.selectedSessionId = $scheduledSessions.find('.iradio_minimal.checked input[name="scheduled-session-info"]').attr('data-session-id');
var session = scheduledSessions[createSessionSettings.selectedSessionId]; var session = scheduledSessions[createSessionSettings.selectedSessionId];
@ -394,7 +394,7 @@
} }
return false; return false;
} }
else if (createSessionSettings.createType == 'quick-start') { else if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_QUICK_START %>') {
createSessionSettings.genresValues = ['Pop']; createSessionSettings.genresValues = ['Pop'];
createSessionSettings.genres = ['pop']; createSessionSettings.genres = ['pop'];
createSessionSettings.timezone.label = "(GMT-06:00) Central Time (US & Canada)"; createSessionSettings.timezone.label = "(GMT-06:00) Central Time (US & Canada)";
@ -604,7 +604,7 @@
var data = {}; var data = {};
if (createSessionSettings.createType == 'start-scheduled') { if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>') {
data = scheduledSessions[createSessionSettings.selectedSessionId]; data = scheduledSessions[createSessionSettings.selectedSessionId];
} }
else { else {
@ -636,11 +636,11 @@
data.legal_policy = createSessionSettings.session_policy; data.legal_policy = createSessionSettings.session_policy;
data.legal_terms = true; data.legal_terms = true;
data.language = createSessionSettings.language.value; data.language = createSessionSettings.language.value;
if (createSessionSettings.createType == 'quick-start' || createSessionSettings.createType == 'immediately') { if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_QUICK_START %>' || createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_IMMEDIATE %>') {
data.start = new Date().toDateString() + ' ' + context.JK.formatUtcTime(new Date(), false); data.start = new Date().toDateString() + ' ' + context.JK.formatUtcTime(new Date(), false);
data.duration = "60"; data.duration = "60";
} }
else if (createSessionSettings.createType == 'rsvp') { else if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_RSVP %>') {
data.start = ""; data.duration = "0"; data.start = ""; data.duration = "0";
} }
else { else {
@ -666,6 +666,7 @@
data.music_notations = createSessionSettings.notations; data.music_notations = createSessionSettings.notations;
data.timezone = createSessionSettings.timezone.value; data.timezone = createSessionSettings.timezone.value;
data.open_rsvps = createSessionSettings.open_rsvps; data.open_rsvps = createSessionSettings.open_rsvps;
data.create_type = createSessionSettings.createType;
data.rsvp_slots = []; data.rsvp_slots = [];
$.each(getCreatorInstruments(), function(index, instrument) { $.each(getCreatorInstruments(), function(index, instrument) {
@ -698,7 +699,7 @@
context.location = '/client#/session/' + sessionId; context.location = '/client#/session/' + sessionId;
}; };
if (createSessionSettings.createType == 'start-scheduled') { if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>') {
joinSession(createSessionSettings.selectedSessionId); joinSession(createSessionSettings.selectedSessionId);
$('#create-session-buttons .btn-next').off('click'); $('#create-session-buttons .btn-next').off('click');
} }
@ -709,7 +710,7 @@
$('#create-session-buttons .btn-next').off('click'); $('#create-session-buttons .btn-next').off('click');
var newSessionId = response.id; var newSessionId = response.id;
if (createSessionSettings.createType == 'quick-start' || createSessionSettings.createType == "immediately") { if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_QUICK_START %>' || createSessionSettings.createType == "immediately") {
joinSession(newSessionId); joinSession(newSessionId);
} }
else { else {
@ -765,7 +766,7 @@
for (var i = 0; i < TOTAL_STEPS; i++) { for (var i = 0; i < TOTAL_STEPS; i++) {
var $eachStep = $sessionSteps.find('.session-stepnumber[data-step-number="' + i + '"]'); var $eachStep = $sessionSteps.find('.session-stepnumber[data-step-number="' + i + '"]');
if (createSessionSettings.createType == 'start-scheduled') { if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>') {
if (step == STEP_SELECT_TYPE) { if (step == STEP_SELECT_TYPE) {
if (createSessionSettings.session_count > 0 && i == STEP_SELECT_CONFIRM) { if (createSessionSettings.session_count > 0 && i == STEP_SELECT_CONFIRM) {
$eachStep.on('click', next); $eachStep.on('click', next);
@ -777,7 +778,7 @@
$eachStep.addClass('session-stephover'); $eachStep.addClass('session-stephover');
} }
} }
else if (createSessionSettings.createType == 'quick-start') { else if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_QUICK_START %>') {
if (step == STEP_SELECT_CONFIRM && i == STEP_SELECT_TYPE) { if (step == STEP_SELECT_CONFIRM && i == STEP_SELECT_TYPE) {
$eachStep.on('click', back); $eachStep.on('click', back);
$eachStep.addClass('session-stephover'); $eachStep.addClass('session-stephover');
@ -825,7 +826,7 @@
$btnBack.hide(); $btnBack.hide();
} }
if (step == STEP_SELECT_TYPE && createSessionSettings.createType == 'start-scheduled' && createSessionSettings.selectedSessionId == null) { if (step == STEP_SELECT_TYPE && createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>' && createSessionSettings.selectedSessionId == null) {
$btnNext.addClass('disabled'); $btnNext.addClass('disabled');
} }
else { else {
@ -851,7 +852,7 @@
} }
if ($(this).is('.disabled')) return false; if ($(this).is('.disabled')) return false;
if ($.inArray(createSessionSettings.createType, ['start-scheduled', 'quick-start']) > -1) if ($.inArray(createSessionSettings.createType, ['<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>', '<%= MusicSession::CREATE_TYPE_QUICK_START %>']) > -1)
step = STEP_SELECT_TYPE; step = STEP_SELECT_TYPE;
else else
step--; step--;
@ -866,9 +867,9 @@
// will this option result in a session being started? // will this option result in a session being started?
function willOptionStartSession() { function willOptionStartSession() {
return createSessionSettings.createType == 'start-scheduled' || return createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>' ||
createSessionSettings.createType == 'immediately' || createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_IMMEDIATE %>' ||
createSessionSettings.createType == 'quick-start'; createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_QUICK_START %>';
} }
function next(event) { function next(event) {
@ -888,7 +889,7 @@
} }
if ($(this).is('.disabled')) return false; if ($(this).is('.disabled')) return false;
if ($.inArray(createSessionSettings.createType, ['start-scheduled', 'quick-start']) > -1) if ($.inArray(createSessionSettings.createType, ['<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>', '<%= MusicSession::CREATE_TYPE_QUICK_START %>']) > -1)
step = STEP_SELECT_CONFIRM; step = STEP_SELECT_CONFIRM;
else else
step++; step++;
@ -1077,7 +1078,7 @@
$screen.find('#create-session-steps .session-stepnumber').off('click'); $screen.find('#create-session-steps .session-stepnumber').off('click');
$screen.find('#create-session-steps .session-stepnumber').removeClass('session-stephover'); $screen.find('#create-session-steps .session-stepnumber').removeClass('session-stephover');
if ($.inArray(createSessionSettings.createType, ['start-scheduled', 'quick-start']) > -1) { if ($.inArray(createSessionSettings.createType, ['<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>', '<%= MusicSession::CREATE_TYPE_QUICK_START %>']) > -1) {
if (step == STEP_SELECT_CONFIRM) { if (step == STEP_SELECT_CONFIRM) {
for (var i = 1; i < 4; i++) { for (var i = 1; i < 4; i++) {
$screen.find('#create-session-steps .session-stepnumber[data-step-number="' + i + '"]').hide(); $screen.find('#create-session-steps .session-stepnumber[data-step-number="' + i + '"]').hide();
@ -1092,11 +1093,11 @@
} }
$screen.find('#create-session-steps .session-stepnumber[data-step-number="4"]').html("5"); $screen.find('#create-session-steps .session-stepnumber[data-step-number="4"]').html("5");
var $nextStep = $screen.find('#create-session-steps .session-stepnumber[data-step-number="1"]'); var $nextStep = $screen.find('#create-session-steps .session-stepnumber[data-step-number="1"]');
if (createSessionSettings.createType == 'quick-start') { if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_QUICK_START %>') {
$nextStep.on('click', next); $nextStep.on('click', next);
$nextStep.addClass('session-stephover') $nextStep.addClass('session-stephover')
} }
else if (createSessionSettings.createType == 'start-scheduled' && createSessionSettings.session_count > 0) { else if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>' && createSessionSettings.session_count > 0) {
$nextStep.on('click', next); $nextStep.on('click', next);
$nextStep.addClass('session-stephover') $nextStep.addClass('session-stephover')
} }
@ -1124,7 +1125,7 @@
createSessionSettings.createType = checkedType; createSessionSettings.createType = checkedType;
if (createSessionSettings.createType == 'start-scheduled') { if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>') {
$('#start-scheduled-wrapper').show(); $('#start-scheduled-wrapper').show();
$('#schedule-future-wrapper').hide(); $('#schedule-future-wrapper').hide();
createSessionSettings.timezone = {}; createSessionSettings.timezone = {};
@ -1134,7 +1135,7 @@
createSessionSettings.musician_access = {}; createSessionSettings.musician_access = {};
createSessionSettings.fans_access = {}; createSessionSettings.fans_access = {};
} }
else if (createSessionSettings.createType == 'schedule-future') { else if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_SCHEDULE_FUTURE %>') {
$('#start-scheduled-wrapper').hide(); $('#start-scheduled-wrapper').hide();
$('#schedule-future-wrapper').show(); $('#schedule-future-wrapper').show();
} }
@ -1145,7 +1146,7 @@
} }
var $btnNext = $('#create-session-buttons .btn-next'); var $btnNext = $('#create-session-buttons .btn-next');
if (step == STEP_SELECT_TYPE && createSessionSettings.createType == 'start-scheduled' && createSessionSettings.selectedSessionId == null) { if (step == STEP_SELECT_TYPE && createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_START_SCHEDULED%>' && createSessionSettings.selectedSessionId == null) {
$btnNext.addClass('disabled') $btnNext.addClass('disabled')
} }
else { else {

View File

@ -27,35 +27,35 @@
<div class="icheckbuttons"> <div class="icheckbuttons">
<ul id="create-session-type"> <ul id="create-session-type">
<li create-type="start-scheduled"> <li create-type="<%= MusicSession::CREATE_TYPE_START_SCHEDULED %>">
<input type="radio" name="session-when" id="session-when-start-scheduled" checked="checked" info-value="start-scheduled" /> <input type="radio" name="session-when" id="session-when-start-scheduled" checked="checked" info-value="start-scheduled" />
<label for="session-when-start-scheduled" class="radio-text"> <label for="session-when-start-scheduled" class="radio-text">
I have already scheduled a session, and I want to start it now I have already scheduled a session, and I want to start it now
</label> </label>
<div class="clearall"></div> <div class="clearall"></div>
</li> </li>
<li create-type="schedule-future"> <li create-type="<%= MusicSession::CREATE_TYPE_SCHEDULE_FUTURE %>">
<input type="radio" name="session-when" id="session-when-schedule-future" info-value="schedule-future" /> <input type="radio" name="session-when" id="session-when-schedule-future" info-value="schedule-future" />
<label for="session-when-schedule-future" class="radio-text"> <label for="session-when-schedule-future" class="radio-text">
I want to schedule a session for a specific future time I want to schedule a session for a specific future time
</label> </label>
<div class="clearall"></div> <div class="clearall"></div>
</li> </li>
<li create-type="rsvp"> <li create-type="<%= MusicSession::CREATE_TYPE_RSVP %>">
<input type="radio" name="session-when" id="session-when-rsvp" info-value="rsvp" /> <input type="radio" name="session-when" id="session-when-rsvp" info-value="rsvp" />
<label for="session-when-rsvp" class="radio-text"> <label for="session-when-rsvp" class="radio-text">
I want to choose the time after others RSVP to my session I want to choose the time after others RSVP to my session
</label> </label>
<div class="clearall"></div> <div class="clearall"></div>
</li> </li>
<li create-type="immediately"> <li create-type="<%= MusicSession::CREATE_TYPE_IMMEDIATE %>">
<input type="radio" name="session-when" id="session-when-immediately" info-value="immediately" /> <input type="radio" name="session-when" id="session-when-immediately" info-value="immediately" />
<label for="session-when-immediately" class="radio-text"> <label for="session-when-immediately" class="radio-text">
I want to start a new session right now for others to join I want to start a new session right now for others to join
</label> </label>
<div class="clearall"></div> <div class="clearall"></div>
</li> </li>
<li create-type="quick-start"> <li create-type="<%= MusicSession::CREATE_TYPE_QUICK_START %>">
<input type="radio" name="session-when" id="session-when-quick-start" info-value="quick-start" /> <input type="radio" name="session-when" id="session-when-quick-start" info-value="quick-start" />
<label for="session-when-quick-start" class="radio-text"> <label for="session-when-quick-start" class="radio-text">
I want to quick start a test session just for me I want to quick start a test session just for me