Sha256: e420492cc273df837a771f55589b4cc9be50daea44e16f18c89a51826bf0acfd

Contents?: true

Size: 1.89 KB

Versions: 3

Compression:

Stored size: 1.89 KB

Contents

module ActionController
  class Base < Metal
    
    protected
    def update_qwester_answer_store
      get_qwester_answer_store(true)
      add_answers_to_qwester_answer_store
      add_questionnaire_to_qwester_answer_store
    end

    def get_qwester_answer_store(create_new = false)
      if session[Qwester.session_key]
        current_qwester_answer_store
      elsif create_new
        new_qwester_answer_store
      end
    end
    helper_method :get_qwester_answer_store

    def current_qwester_answer_store
      @qwester_answer_store = Qwester::AnswerStore.find_by_session_id(session[Qwester.session_key])
    end

    def new_qwester_answer_store
      set_qwester_answer_store Qwester::AnswerStore.create
    end
    
    def set_qwester_answer_store(answer_store)
      @qwester_answer_store = answer_store
      session[Qwester.session_key] = @qwester_answer_store.session_id
      @qwester_answer_store
    end
    
    def matching_rule_sets
      if get_qwester_answer_store
        Qwester::RuleSet.matching(@qwester_answer_store.answers)
      end
    end
    
#    private
    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!
      remove_answers_to_questions_answered_with(answers) if answers.present?
      @qwester_answer_store.answers = (@qwester_answer_store.answers | answers)      
    end
    
    def remove_answers_to_questions_answered_with(answers)
      question_ids = answers.collect(&:question_id).uniq
      answers_to_delete = @qwester_answer_store.answers.collect {|a| a if question_ids.include? a.question_id.to_i}.compact
      @qwester_answer_store.answers.delete(answers_to_delete)
    end

    def add_questionnaire_to_qwester_answer_store
      @qwester_answer_store.questionnaires << @questionnaire
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
qwester-0.0.5 lib/rails/actionpack/lib/action_controller/base.rb
qwester-0.0.4 lib/rails/actionpack/lib/action_controller/base.rb
qwester-0.0.3 lib/rails/actionpack/lib/action_controller/base.rb