Class: SurveyGizmo::API::Survey
- Inherits:
-
Object
- Object
- SurveyGizmo::API::Survey
show all
- Includes:
- Resource
- Defined in:
- lib/survey_gizmo/api/survey.rb
Instance Method Summary
collapse
Methods included from Resource
descendants, #destroy, #inspect, #reload, #save
Instance Method Details
#actual_questions ⇒ Object
44
45
46
|
# 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) ⇒ Boolean
83
84
85
|
# File 'lib/survey_gizmo/api/survey.rb', line 83
def belongs_to?(team)
team_names.any? { |t| t == team }
end
|
#campaigns ⇒ Object
87
88
89
|
# 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 ⇒ Object
Statistics array of arrays looks like:
- [“Partial”, 2], [“Disqualified”, 28], [“Complete”, 15]
54
55
56
57
58
59
60
|
# 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 ⇒ Object
29
30
31
32
33
34
35
|
# File 'lib/survey_gizmo/api/survey.rb', line 29
def pages
@pages ||= Page.all(children_params.merge(all_pages: true)).to_a
@pages.each { |p| p.attributes = children_params }
end
|
#questions ⇒ Object
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.
40
41
42
|
# File 'lib/survey_gizmo/api/survey.rb', line 40
def questions
@questions ||= pages.flat_map { |p| p.questions }
end
|
#responses(conditions = {}) ⇒ Object
48
49
50
|
# 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 = []) ⇒ Boolean
62
63
64
65
66
67
68
69
70
|
# 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 ⇒ Object
79
80
81
|
# File 'lib/survey_gizmo/api/survey.rb', line 79
def team_names
teams.map { |t| t['name'] }
end
|
#teams ⇒ Object
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.
74
75
76
77
|
# File 'lib/survey_gizmo/api/survey.rb', line 74
def teams
@individual_survey ||= self.reload
@individual_survey.team
end
|