Added post-conference survey
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user