Class: GroupDocs::Questionnaire::Collector

Inherits:
Api::Entity
  • Object
show all
Includes:
Api::Helpers::Status
Defined in:
lib/groupdocs/questionnaire/collector.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Api::Entity

#inspect, #to_hash

Methods included from Api::Helpers::Accessor

#alias_accessor

Constructor Details

#initialize(options = {}, &blk) ⇒ Collector

Creates new GroupDocs::Questionnaire::Collector.

Raises:

  • (ArgumentError)

    If questionnaire is not passed or is not an instance of GroupDocs::Questionnaire



52
53
54
55
56
# File 'lib/groupdocs/questionnaire/collector.rb', line 52

def initialize(options = {}, &blk)
  super(options, &blk)
  questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
    "You have to pass GroupDocs::Questionnaire object: #{questionnaire.inspect}."
end

Instance Attribute Details

#emailsObject



43
44
45
# File 'lib/groupdocs/questionnaire/collector.rb', line 43

def emails
  @emails
end

#guidObject



31
32
33
# File 'lib/groupdocs/questionnaire/collector.rb', line 31

def guid
  @guid
end

#idObject



29
30
31
# File 'lib/groupdocs/questionnaire/collector.rb', line 29

def id
  @id
end

#modifiedTime

Converts timestamp which is return by API server to Time object.

Returns:

  • (Time)


45
46
47
# File 'lib/groupdocs/questionnaire/collector.rb', line 45

def modified
  @modified
end

#questionnaireObject



33
34
35
# File 'lib/groupdocs/questionnaire/collector.rb', line 33

def questionnaire
  @questionnaire
end

#questionnaire_idObject



35
36
37
# File 'lib/groupdocs/questionnaire/collector.rb', line 35

def questionnaire_id
  @questionnaire_id
end

#resolved_executionsObject



41
42
43
# File 'lib/groupdocs/questionnaire/collector.rb', line 41

def resolved_executions
  @resolved_executions
end

#statusSymbol

Converts status to human-readable format.

Returns:

  • (Symbol)


37
38
39
# File 'lib/groupdocs/questionnaire/collector.rb', line 37

def status
  @status
end

#typeSymbol

Converts type to human-readable format.

Returns:

  • (Symbol)


39
40
41
# File 'lib/groupdocs/questionnaire/collector.rb', line 39

def type
  @type
end

Class Method Details

.get!(guid, access = {}) ⇒ GroupDocs::Questionnaire::Collector

Returns collector by its guid.

Parameters:

  • guid (String)
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/groupdocs/questionnaire/collector.rb', line 15

def self.get!(guid, access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/merge/{{client_id}}/questionnaires/collectors/#{guid}"
  end.execute!

  collector = json[:collector]
  collector.merge!(:questionnaire => Questionnaire.new(:id => collector[:questionnaire_id]))

  new(collector)
end

Instance Method Details

#add!(access = {}) ⇒ Object

Adds collector.

Examples:

questionnaire = GroupDocs::Questionnaire.get!(1)
collector = GroupDocs::Questionnaire::Collector.new(questionnaire: questionnaire)
collector.type = :link
collector.add!

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


104
105
106
107
108
109
110
111
112
113
114
# File 'lib/groupdocs/questionnaire/collector.rb', line 104

def add!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/merge/{{client_id}}/questionnaires/#{questionnaire.guid}/collectors"
    request[:request_body] = to_hash
  end.execute!

  self.id   = json[:collector_id]
  self.guid = json[:collector_guid]
end

#add_execution!(execution, access = {}) ⇒ GroupDocs::Questionnaire::Execution

Adds new questionnaire execution.

Examples:

questionnaire = GroupDocs::Questionnaire.get!(1)
collector = questionnaire.collectors!.first
execution = GroupDocs::Questionnaire::Execution.new
execution.executive = GroupDocs::User.new(primary_email: '[email protected]')
# make sure to save execution as it has updated attributes
execution = collector.add_execution!(execution)
#=> #<GroupDocs::Questionnaire::Execution @id=1, @questionnaire_id=1>

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/groupdocs/questionnaire/collector.rb', line 191

def add_execution!(execution, access = {})
  execution.is_a?(GroupDocs::Questionnaire::Execution) or raise ArgumentError,
    "Execution should be GroupDocs::Questionnaire::Execution object, received: #{execution.inspect}"

  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/merge/{{client_id}}/questionnaires/collectors/#{guid}/executions"
    request[:request_body] = execution.to_hash
  end.execute!

  execution.id = json[:execution_id]
  execution.guid = json[:execution_guid]
  execution.collector_id = json[:collector_id]

  execution
end

#decorate!(style, access = {}) ⇒ Object

Added in release 1.7.0

Decorate questionnaire collector

Examples:

questionnaire = GroupDocs::Questionnaire.get!(1)
collector = questionnaire.collectors!.first
style = GroupDocs::Questionnaire::QuestionnaireCollectorStyle.new
style.collectorId = collector.id
title = GroupDocs::Questionnaire::QuestionnaireCollectorStyle::Title.new
title.color = 'blue'
style.title = title

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


300
301
302
303
304
305
306
307
308
309
# File 'lib/groupdocs/questionnaire/collector.rb', line 300

def decorate!(style, access = {})
  style.is_a?(GroupDocs::Questionnaire::QuestionnaireCollectorStyle) or raise ArgumentError,
                                                   "Style should be GroupDocs::Questionnaire::QuestionnaireCollectorStyle object, received: #{style.inspect}"
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/merge/{{client_id}}/questionnaires/collectors/#{guid}/decorate"
    request[:request_body] = style
  end.execute!
end

#executions!(access = {}) ⇒ Array<GroupDocs::Questionnaire::Execution>

Returns an array of questionnaire collector executions.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



161
162
163
164
165
166
167
168
169
170
171
# File 'lib/groupdocs/questionnaire/collector.rb', line 161

def executions!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/merge/{{client_id}}/questionnaires/collectors/#{guid}/executions"
  end.execute!

  json[:executions].map do |execution|
    Questionnaire::Execution.new(execution)
  end
end

#fill!(datasource, options = {}, access = {}) ⇒ GroupDocs::Job

Creates new job to merge datasource into questionnaire collector.

Examples:

# get template and its first field
document = GroupDocs::Document.templates!.first
field = document.fields!.first
# create questionnaire
answer = GroupDocs::Questionnaire::Question::Answer.new(text: 'Text', value: 'Value1')
question = GroupDocs::Questionnaire::Question.new(field: field.name, text: 'Question', answers: [answer])
page = GroupDocs::Questionnaire::Page.new(number: field.page, questions: [question])
questionnaire = GroupDocs::Questionnaire.new(name: 'Questionnaire', description: 'Description', pages: [page])
questionnaire.create!
# add questionnaire to document
document.add_questionnaire! questionnaire
# create collector
collector = GroupDocs::Questionnaire::Collector.new(questionnaire: questionnaire)
collector.type = :link
collector.add!
# create datasource and its field
field = GroupDocs::DataSource::Field.new(field: field.name, values: %w(test1 test2))
datasource = GroupDocs::DataSource.new(fields: [field])
datasource.add!
# fill collector with datasrouce and send results to email
collector.fill!(datasource, email_results: true)

Parameters:

  • datasource (GroupDocs::DataSource)
  • options (Hash) (defaults to: {})
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :new_type (Boolean)

    New file format type

  • :email_results (Boolean)

    Set to true if converted document should be emailed

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

Raises:

  • (ArgumentError)

    if datasource is not GroupDocs::DataSource object



246
247
248
249
250
251
252
253
254
255
256
257
258
259
# File 'lib/groupdocs/questionnaire/collector.rb', line 246

def fill!(datasource, options = {}, access = {})
  datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError,
    "Datasource should be GroupDocs::DataSource object, received: #{datasource.inspect}"

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/merge/{{client_id}}/questionnaires/collectors/#{guid}/datasources/#{datasource.id}"
  end
  api.add_params(options)
  json = api.execute!

  Job.new(:id => json[:job_id])
end

#get_decorate!(access = {}) ⇒ Object

Added in release 1.7.0

Returns questionnaire collector style

Examples:

questionnaire = GroupDocs::Questionnaire.get!(1)
collector = questionnaire.collectors!.first
collector.decorate!

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


326
327
328
329
330
331
332
# File 'lib/groupdocs/questionnaire/collector.rb', line 326

def get_decorate!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/merge/{{client_id}}/questionnaires/collector/#{guid}/style"
  end.execute!
end

#get_questionnaire!(access = {}) ⇒ Object

Added in release 1.5.8

Get questionnaire by collector guid

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


271
272
273
274
275
276
277
278
279
280
# File 'lib/groupdocs/questionnaire/collector.rb', line 271

def get_questionnaire!(access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/merge/{{client_id}}/questionnaires/collector/#{guid}"
  end
  json = api.execute!
  Questionnaire.new(json[:questionnaire])

end

#remove!(access = {}) ⇒ Object

Removes collector.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


145
146
147
148
149
150
151
# File 'lib/groupdocs/questionnaire/collector.rb', line 145

def remove!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/merge/{{client_id}}/questionnaires/collectors/#{guid}"
  end.execute!
end

#update!(access = {}) ⇒ Object

Updates collector.

Examples:

questionnaire = GroupDocs::Questionnaire.get!(1)
collector = questionnaire.collectors!.first
collector.type = :embedded
collector.update!

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


129
130
131
132
133
134
135
136
# File 'lib/groupdocs/questionnaire/collector.rb', line 129

def update!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/merge/{{client_id}}/questionnaires/collectors/#{guid}"
    request[:request_body] = to_hash
  end.execute!
end