class SurveyGizmo::API::Survey

Public Instance Methods

actual_questions() click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 44
def actual_questions
  questions.reject { |q| q.type =~ /^(instructions|urlredirect|logic|media|script|javascript)$/ }
end
belongs_to?(team) click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 83
def belongs_to?(team)
  team_names.any? { |t| t == team }
end
campaigns() click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 87
def campaigns
  @campaigns ||= Campaign.all(children_params.merge(all_pages: true)).to_a
end
number_of_completed_responses() click to toggle source

Statistics array of arrays looks like:

[“Partial”, 2], [“Disqualified”, 28], [“Complete”, 15]
# File lib/survey_gizmo/api/survey.rb, line 54
def number_of_completed_responses
  if statistics && !statistics.empty? && (completed_data = statistics.find { |a| a[0] == 'Complete' })
    completed_data[1]
  else
    0
  end
end
pages() click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 29
def pages
  # SurveyGizmo sends down the page info to .first requests but NOT to .all requests, so we must load pages
  # manually.  We should be able to just .reload this Survey BUT we can't make :pages a Virtus attribute without
  # requiring a call to this method during Survey.save
  @pages ||= Page.all(children_params.merge(all_pages: true)).to_a
  @pages.each { |p| p.attributes = children_params }
end
questions() click to toggle source

Sub question handling is in resource.rb and page.rb. It should probably be here instead but if it gets moved here and people try to request all the questions for a specific page directly from a ::API::Question request or from Page.questions, sub questions will not be included! So I left it there for least astonishment.

# File lib/survey_gizmo/api/survey.rb, line 40
def questions
  @questions ||= pages.flat_map { |p| p.questions }
end
responses(conditions = {}) click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 48
def responses(conditions = {})
  Response.all(conditions.merge(children_params).merge(all_pages: !conditions[:page]))
end
server_has_new_results_since?(time, filters = []) click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 62
def server_has_new_results_since?(time, filters = [])
  Response.all(
    children_params.merge(
      page: 1,
      resultsperpage: 1,
      filters: filters + [Response.submitted_since_filter(time)]
    )
  ).to_a.size > 0
end
team_names() click to toggle source
# File lib/survey_gizmo/api/survey.rb, line 79
def team_names
  teams.map { |t| t['name'] }
end
teams() click to toggle source

As of 2015-12-18, when you request data on multiple surveys from /survey, the team variable comes back as “0”. If you request one survey at a time from /survey/{id}, it is populated correctly.

# File lib/survey_gizmo/api/survey.rb, line 74
def teams
  @individual_survey ||= self.reload
  @individual_survey.team
end