Module: Schemer::ActsAsSurveyor::LocalInstanceMethods

Defined in:
lib/schemer/acts_as_surveyor.rb

Instance Method Summary collapse

Instance Method Details

#list_all_survey_questions(survey) ⇒ Object



42
43
44
# File 'lib/schemer/acts_as_surveyor.rb', line 42

def list_all_survey_questions(survey)
  survey.questions
end

#list_all_surveysObject



23
24
25
# File 'lib/schemer/acts_as_surveyor.rb', line 23

def list_all_surveys
  ::Schemer::Survey.all
end

#list_all_surveys_by_nameObject



38
39
40
# File 'lib/schemer/acts_as_surveyor.rb', line 38

def list_all_surveys_by_name
  list_all_surveys.map(&:name)
end

#list_incomplete_surveysObject



27
28
29
30
31
32
33
34
35
36
# File 'lib/schemer/acts_as_surveyor.rb', line 27

def list_incomplete_surveys
  ::Schemer::Survey.
    joins("LEFT JOIN schemer_surveyors ON schemer_surveyors.survey_id = schemer_surveys.id").
    where(" (schemer_surveyors.surveyable_id IS NULL) 
              OR 
            (schemer_surveyors.surveyable_id != ? AND schemer_surveyors.surveyable_type = ?)
              OR
            (schemer_surveyors.surveyable_id = ? AND schemer_surveyors.surveyable_type = ? AND schemer_surveyors.is_completed != ?)  
          ", id, self.class.name, id, self.class.name, true) 
end

#list_unanswered_questions(surveyor) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/schemer/acts_as_surveyor.rb', line 54

def list_unanswered_questions(surveyor)

  return  surveyor.
          survey.
          questions.
          joins("LEFT JOIN schemer_answers ON schemer_questions.id = schemer_answers.question_id ").
          where("schemer_answers.id IS NULL")

end

#mark_survey_question(surveyor, option) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/schemer/acts_as_surveyor.rb', line 64

def mark_survey_question(surveyor, option)
  # create an answer record for surveyor record
  answer = surveyor.answers.create(option: option, question: option.question)

  questions = surveyor.survey.questions.map(&:id)
  answers   = surveyor.answers.map(&:question_id)

  # check if all question in the survey are answered
  if (questions - answers).empty?
    # mark surveyor record as completed
    surveyor.update(is_completed: true)
  end

  return answer
end

#squawkObject



80
81
82
# File 'lib/schemer/acts_as_surveyor.rb', line 80

def squawk
  "hello"
end

#start_or_complete_survey(survey) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/schemer/acts_as_surveyor.rb', line 46

def start_or_complete_survey(survey)
  if (surveyor = feedbacks.where(survey: survey).where(is_completed: false).first).present?
    return surveyor
  else
    feedbacks.create(survey: survey)
  end
end