-
1
class AdviceController < ApplicationController
-
1
before_action :set_questionnaire, only: %i[ edit_advice save_advice ]
-
-
-
-
-
-
-
-
-
1
include AuthorizationHelper
-
-
1
def action_allowed?
-
current_user_has_ta_privileges?
-
end
-
-
-
-
1
def invalid_advice?(sorted_advice, num_advices, question)
-
12
invalid_advice_length?(num_advices, question, sorted_advice) ||
-
invalid_advice_scores?(sorted_advice)
-
end
-
-
-
-
-
1
def edit_advice
-
-
-
12
@questionnaire.questions.each do |question|
-
-
-
12
num_advices = calculate_num_advices(question)
-
-
-
-
12
sorted_advice = sort_question_advices(question)
-
-
-
12
if invalid_advice?(sorted_advice, num_advices, question)
-
-
6
QuestionnaireHelper.adjust_advice_size(@questionnaire, question)
-
end
-
end
-
end
-
-
-
-
-
1
def save_advice
-
begin
-
-
4
unless params[:advice].nil?
-
3
params[:advice].each do |advice_key, advice_params|
-
-
6
QuestionAdvice.update(advice_key, advice: advice_params.slice(:advice)[:advice])
-
end
-
-
3
flash[:notice] = 'The advice was successfully saved!'
-
end
-
rescue ActiveRecord::RecordNotFound
-
-
flash[:notice] = 'The advice record was not found and saved!'
-
end
-
-
4
redirect_to action: 'edit_advice', id: params[:id]
-
end
-
-
1
private
-
-
-
1
def set_questionnaire
-
-
16
@questionnaire = Questionnaire.find(params[:id])
-
end
-
-
-
-
1
def invalid_advice_length?(num_advices, question, sorted_advice)
-
12
question.question_advices.length != num_advices ||
-
sorted_advice.empty?
-
end
-
-
-
-
1
def invalid_advice_scores?(sorted_advice)
-
6
sorted_advice[0].score != @questionnaire.max_question_score ||
-
sorted_advice[sorted_advice.length - 1].score != @questionnaire.min_question_score
-
end
-
-
-
-
-
1
def calculate_num_advices(question)
-
8
question.is_a?(ScoredQuestion) ? @questionnaire.max_question_score - @questionnaire.min_question_score + 1 : 0
-
end
-
-
-
-
-
1
def sort_question_advices(question)
-
10
question.question_advices.sort_by(&:score).reverse
-
end
-
-
end