Class: SurveyGizmo::API::Survey

Inherits:
Object
  • Object
show all
Includes:
Resource
Defined in:
lib/survey_gizmo/api/survey.rb

Overview

Instance Method Summary collapse

Methods included from Resource

#create_record_in_surveygizmo, descendants, #destroy, #inspect, #reload, #save

Instance Method Details

#belongs_to?(team) ⇒ Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/survey_gizmo/api/survey.rb', line 73

def belongs_to?(team)
  team_names.any? { |t| t == team }
end

#number_of_completed_responsesObject

Statistics array of arrays looks like:

[“Partial”, 2], [“Disqualified”, 28], [“Complete”, 15]


44
45
46
47
48
49
50
# File 'lib/survey_gizmo/api/survey.rb', line 44

def number_of_completed_responses
  if statistics && !statistics.empty? && (completed_data = statistics.find { |a| a[0] == 'Complete' })
    completed_data[1]
  else
    0
  end
end

#pagesObject



31
32
33
# File 'lib/survey_gizmo/api/survey.rb', line 31

def pages
  @pages ||= SurveyGizmo::API::Page.all(survey_id: id)
end

#questionsObject

Sub question handling is in resource.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, sub questions will not be included! So I left it there for least astonishment.



38
39
40
# File 'lib/survey_gizmo/api/survey.rb', line 38

def questions
  @questions ||= pages.map { |p| SurveyGizmo::API::Question.all(survey_id: id, page_id: p.id) }.flatten
end

#server_has_new_results_since?(time) ⇒ Boolean

Returns:

  • (Boolean)


52
53
54
55
56
57
58
59
60
# File 'lib/survey_gizmo/api/survey.rb', line 52

def server_has_new_results_since?(time)
  filters = [{
    field: 'datesubmitted',
    operator: '>=',
    value: time.in_time_zone('Eastern Time (US & Canada)').strftime('%Y-%m-%d %H:%M:%S')
  }]
  responses = SurveyGizmo::API::Response.all({ survey_id: self.id }, { page: 1, filters: filters })
  responses.size > 0
end

#team_namesObject



69
70
71
# File 'lib/survey_gizmo/api/survey.rb', line 69

def team_names
  teams.map { |t| t['name'] }
end

#teamsObject

As of 2015-08-07, 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 works correctly.



64
65
66
67
# File 'lib/survey_gizmo/api/survey.rb', line 64

def teams
  @individual_survey ||= SurveyGizmo::API::Survey.first(id: self.id)
  @individual_survey.team
end

#to_param_optionsObject



27
28
29
# File 'lib/survey_gizmo/api/survey.rb', line 27

def to_param_options
  { id: self.id }
end