lib/rails/actionpack/lib/action_controller/base.rb in qwester-0.0.9 vs lib/rails/actionpack/lib/action_controller/base.rb in qwester-0.1.0
- old
+ new
@@ -31,16 +31,49 @@
@qwester_answer_store = answer_store
session[Qwester.session_key] = @qwester_answer_store.session_id
@qwester_answer_store
end
- def matching_rule_sets
+ def match_rule_sets
if get_qwester_answer_store
- Qwester::RuleSet.matching(@qwester_answer_store.answers)
+ @qwester_rule_sets = Qwester::RuleSet.matching(@qwester_answer_store.answers)
+ get_presentation_from_rule_sets
+ return @qwester_rule_sets
end
end
+ alias_method :matching_rule_sets, :match_rule_sets
+
+ def current_questionnaires
+ match_rule_sets
+ presentation_questionnaires || default_presentation_questionnaires || Qwester::Questionnaire.all
+ end
-# private
+ def presentation_questionnaires
+ presentation = Qwester::Presentation.find_by_name(session[:presentations].last) if session[:presentations]
+ presentation.questionnaires if presentation
+ end
+
+ def default_presentation_questionnaires
+ presentation = Qwester::Presentation.find_by_default(true)
+ presentation.questionnaires if presentation
+ end
+
+ def get_presentation_from_rule_sets
+ @qwester_rule_sets.clone.each do |rule_set|
+ next unless rule_set.presentation?
+ add_presentation_to_session rule_set.presentation
+ @qwester_rule_sets.delete(rule_set)
+ end
+ end
+
+ def add_presentation_to_session(presentation)
+ session_presentations = session[:presentations] || []
+ unless session_presentations.include? presentation
+ session_presentations << presentation
+ session[:presentations] = session_presentations
+ end
+ end
+
def add_answers_to_qwester_answer_store
answers = params[:question_id].values.collect do |question_values|
question_values[:answer_ids].collect{|id| Qwester::Answer.find(id)}
end
answers.flatten!