Added post-conference survey

This commit is contained in:
Godwin
2017-09-04 14:10:55 -07:00
parent 90448e059f
commit 611716bbd3
15 changed files with 481 additions and 99 deletions
+45 -6
View File
@@ -43,7 +43,7 @@ class ConferencesController < ApplicationController
def register
set_conference
do_403 unless @this_conference.is_public || @this_conference.host?(current_user)
do_403 unless @this_conference.registration_open
do_403 unless @this_conference.registration_open || @this_conference.registered?(current_user)
if logged_in?
if request.post?
@@ -110,10 +110,49 @@ class ConferencesController < ApplicationController
end
def survey
return do_404
# set_conference
# do_403 unless @this_conference.is_public || @this_conference.host?(current_user)
# do_403 if @this_conference.registration_open
set_conference
ensure_registration_is_complete!
return do_403 unless @this_conference.post_conference_survey_available? || @registration.survey_taken
end
def save_survey
set_conference
ensure_registration_is_complete!
return do_403 unless @this_conference.post_conference_survey_available?(@registration) && !@registration.survey_taken
# compile the results
results = {}
@this_conference.post_conference_survey_questions.each do |name, question|
case question[:type]
when :multi_likert
answer = {}
question[:questions].each do |q|
r = params["#{name}_#{q}"]
answer[q] = r if r.present? && question[:options].include?(r.to_sym)
end
results[name] = answer
else
answer = params[name]
if answer.present?
unless question[:waive_option].present? && answer.to_sym == question[:waive_option]
results[name] = answer
end
end
end
end
# create the survey
Survey.create(
name: @this_conference.post_conference_survey_name,
version: @this_conference.post_conference_survey_version,
results: results
)
# mark this user as having taken the survey
@registration.survey_taken = true
@registration.save!
redirect_to conference_survey_path
end
helper_method :registration_complete?
@@ -166,7 +205,7 @@ class ConferencesController < ApplicationController
rescue_from ActiveRecord::PremissionDenied do |exception|
if !@this_conference.can_register?
do_404
do_403
elsif logged_in?
redirect_to 'conferences/register'
else
+3 -1
View File
@@ -26,6 +26,7 @@ class WorkshopsController < ApplicationController
def create_workshop
set_conference
return do_404 unless @this_conference.registration_open
ensure_registration_is_complete!
@workshop = Workshop.new
@@ -121,6 +122,7 @@ class WorkshopsController < ApplicationController
return do_404 unless workshop.present?
can_edit = workshop.can_edit?(current_user)
else
return do_404 unless @this_conference.registration_open
workshop = Workshop.new(conference_id: @this_conference.id)
workshop.workshop_facilitators = [WorkshopFacilitator.new(user_id: current_user.id, role: :creator)]
can_edit = true
@@ -175,7 +177,7 @@ class WorkshopsController < ApplicationController
set_conference
ensure_registration_is_complete!
workshop = Workshop.find_by_id_and_conference_id(params[:workshop_id], @this_conference.id)
return do_404 unless workshop
return do_404 unless workshop.present? && workshop.can_show_interest?(current_user)
# save the current state
interested = workshop.interested? current_user