Class: GroupDocs::Questionnaire

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

Defined Under Namespace

Classes: Collector, Execution, Page, Question, QuestionnaireCollectorStyle

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Api::Entity

#initialize, #inspect, #to_hash

Methods included from Api::Helpers::Accessor

#alias_accessor

Constructor Details

This class inherits a constructor from GroupDocs::Api::Entity

Instance Attribute Details

#allowed_operationsObject



105
106
107
# File 'lib/groupdocs/questionnaire.rb', line 105

def allowed_operations
  @allowed_operations
end

#assigned_questionsObject



82
83
84
# File 'lib/groupdocs/questionnaire.rb', line 82

def assigned_questions
  @assigned_questions
end

#descrObject



76
77
78
# File 'lib/groupdocs/questionnaire.rb', line 76

def descr
  @descr
end

#document_idsObject



90
91
92
# File 'lib/groupdocs/questionnaire.rb', line 90

def document_ids
  @document_ids
end

#emailsObject



99
100
101
# File 'lib/groupdocs/questionnaire.rb', line 99

def emails
  @emails
end

#expiresObject



88
89
90
# File 'lib/groupdocs/questionnaire.rb', line 88

def expires
  @expires
end

#folderObject



97
98
99
# File 'lib/groupdocs/questionnaire.rb', line 97

def folder
  @folder
end

#formatsObject

added in release 1.5.8



95
96
97
# File 'lib/groupdocs/questionnaire.rb', line 95

def formats
  @formats
end

#guidObject



70
71
72
# File 'lib/groupdocs/questionnaire.rb', line 70

def guid
  @guid
end

#idObject



68
69
70
# File 'lib/groupdocs/questionnaire.rb', line 68

def id
  @id
end

#modifiedObject



86
87
88
# File 'lib/groupdocs/questionnaire.rb', line 86

def modified
  @modified
end

#nameObject



72
73
74
# File 'lib/groupdocs/questionnaire.rb', line 72

def name
  @name
end

#open_on_completionObject



103
104
105
# File 'lib/groupdocs/questionnaire.rb', line 103

def open_on_completion
  @open_on_completion
end

#output_formatObject



101
102
103
# File 'lib/groupdocs/questionnaire.rb', line 101

def output_format
  @output_format
end

#pagesObject



78
79
80
# File 'lib/groupdocs/questionnaire.rb', line 78

def pages
  @pages
end

#resolved_executionsObject



80
81
82
# File 'lib/groupdocs/questionnaire.rb', line 80

def resolved_executions
  @resolved_executions
end

#statusSymbol

Converts status to human-readable format.

Returns:

  • (Symbol)


74
75
76
# File 'lib/groupdocs/questionnaire.rb', line 74

def status
  @status
end

#total_questionsObject



84
85
86
# File 'lib/groupdocs/questionnaire.rb', line 84

def total_questions
  @total_questions
end

#totalCountObject

added in release 1.6.0



109
110
111
# File 'lib/groupdocs/questionnaire.rb', line 109

def totalCount
  @totalCount
end

Class Method Details

.all!(options = {}, access = {}) ⇒ Array<GroupDocs::Questionnaire>

Returns an array of all questionnaires.

Parameters:

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

    Hash of options

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

    Access credentials

Options Hash (options):

  • :status (Symbol)

    Filter questionnaires by status

  • :page_number (Integer)

    Page to start with

  • :page_size (Integer)

    How many items to list

  • :orderBy (String)

    Order by column (optional)

  • :isAscending (Bool)

    Order by ascending or descending (optional)

Options Hash (access):

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

Returns:



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/groupdocs/questionnaire.rb', line 27

def self.all!(options = {}, access = {})
  if options[:status]
    # TODO find better way to parse status
    options[:status] = new.send(:parse_status, options[:status])
  end

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = '/merge/{{client_id}}/questionnaires'
  end
  api.add_params(options)
  json = api.execute!

  json[:questionnaires].map do |questionnaire|
    new(questionnaire)
  end
end

.get!(id, access = {}) ⇒ GroupDocs::Questionnaire?

Returns questionnaire by identifier.

Parameters:

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

    Access credentials

Options Hash (access):

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

Returns:



55
56
57
58
59
60
61
62
63
64
65
# File 'lib/groupdocs/questionnaire.rb', line 55

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

  new(json[:questionnaire])
rescue RestClient::ResourceNotFound
  nil
end

.get_by_name!(options = {}, access = {}) ⇒ Array<GroupDocs::Questionnaire>

Added in release 1.5.8

Returns an array of questionnaires by name.

Parameters:

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

    Hash of options

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

    Access credentials

Options Hash (options):

  • :name (String)

    Questionnaire name

  • :status (Symbol)

    Filter questionnaires by status

  • :page_number (Integer)

    Page to start with

  • :page_size (Integer)

    How many items to list

  • :orderBy (String)

    Order by column (optional)

  • :isAscending (Bool)

    Order by ascending or descending (optional)

Options Hash (access):

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

Returns:



429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
# File 'lib/groupdocs/questionnaire.rb', line 429

def self.get_by_name!(options = {}, access = {})
  if options[:status]
    # TODO find better way to parse status
    options[:status] = new.send(:parse_status, options[:status])
  end

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = '/merge/{{client_id}}/questionnaires/filter'
  end

  api.add_params(options)
  json = api.execute!

  json[:questionnaires].map do |questionnaire|
    new(questionnaire)
  end
end

Instance Method Details

#add_page(page) ⇒ Object

Adds page to questionnaire.

Parameters:

Raises:

  • (ArgumentError)

    if page is not GroupDocs::Questionnaire::Page object



152
153
154
155
156
157
158
# File 'lib/groupdocs/questionnaire.rb', line 152

def add_page(page)
  page.is_a?(GroupDocs::Questionnaire::Page) or raise ArgumentError,
    "Page should be GroupDocs::Questionnaire::Page object, received: #{page.inspect}"

  @pages ||= Array.new
  @pages << page
end

#collectors!(options = {}, access = {}) ⇒ Array<GroupDocs::Questionnaire::Collector>

Changed in release 1.5.8

Returns an array of questionnaire collectors.

Parameters:

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

    Options

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

    Access credentials

Options Hash (options):

  • :orderBy (String)

    Order by column (required)

  • :isAsc (Boolean)

    Order by ascending or descending (required)

Options Hash (access):

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

Returns:



283
284
285
286
287
288
289
290
291
292
293
294
295
296
# File 'lib/groupdocs/questionnaire.rb', line 283

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

  json[:collectors].map do |collector|
    collector.merge!(:questionnaire => self)
    Collector.new(collector)
  end
end

#copy_to_templates!(path, mode, options = {}, access = {}) ⇒ Array

Changed in release 1.5.8

Copy file to given path.

Parameters:

  • path (String)

    (required)

  • mode (String)

    Mode (optional)

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

    Access credentials

Options Hash (options):

  • name (String)

Options Hash (access):

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

Returns:

  • (Array)

    Templates



378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
# File 'lib/groupdocs/questionnaire.rb', line 378

def copy_to_templates!(path, mode, options = {}, access = {})
  options[:name] ||= name
  path = prepare_path("#{path}/#{options[:name]}")

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:headers] = { :'Groupdocs-Copy' => id }
    request[:path] = "/merge/{{client_id}}/files/#{path}"
  end
  api.add_params(:mode => mode)
  json = api.execute!

  json[:templates]
end

#create!(access = {}) ⇒ Object

Creates questionnaire.

@example

questionnaire = GroupDocs::Questionnaire.new() pages = GroupDocs::Questionnaire::Page.new() questions = GroupDocs::Questionnaire::Question.new() answer = GroupDocs::Questionnaire::Question::Answer.new() questions.answers = [answer] conditions = GroupDocs::Questionnaire::Question::Conditions.new() questions.conditions = [conditions] pages.questions = [questions] questionnaire.pages = [pages] questionnaire.create!

Parameters:

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

    Access credentials

Options Hash (access):

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


181
182
183
184
185
186
187
188
189
190
191
192
# File 'lib/groupdocs/questionnaire.rb', line 181

def create!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = '/merge/{{client_id}}/questionnaires'
    request[:request_body] = to_hash
  end.execute!

  self.id = json[:questionnaire_id]
  self.guid = json[:questionnaire_guid]
  self.name = json[:adjusted_name]
end

#datasources!(access = {}) ⇒ Array<GroupDocs::DataSource>

Returns array of datasources for questionnaire.

Parameters:

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

    Access credentials

Options Hash (access):

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

Returns:



236
237
238
239
240
241
242
243
244
245
246
# File 'lib/groupdocs/questionnaire.rb', line 236

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

  json[:datasources].map do |datasource|
    DataSource.new(datasource)
  end
end

#delete_collectors_list!(collectors, access = {}) ⇒ Object

Added in release 1.5.8

Removes questionnaire collector.

Parameters:

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

    Access credentials

  • collectors (Hash)

    a customizable set of options

Options Hash (collectors):

  • List (Array<String>)

    of Collectors Guid

Options Hash (access):

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


480
481
482
483
484
485
486
487
# File 'lib/groupdocs/questionnaire.rb', line 480

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

#delete_datasources_list!(datasources, access = {}) ⇒ Object

Added in release 1.5.8

Delete list of datasource fields.

Parameters:

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

    Access credentials

  • datasource (Hash)

    a customizable set of options

Options Hash (access):

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


518
519
520
521
522
523
524
525
# File 'lib/groupdocs/questionnaire.rb', line 518

def delete_datasources_list!(datasources, access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/merge/{{client_id}}datasources/list"
    request[:request_body] = datasources
  end.execute!
end

#delete_executions_list!(executions, access = {}) ⇒ Object

Added in release 1.5.8

Removes questionnaire execution.

Parameters:

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

    Access credentials

  • executions (Hash)

    a customizable set of options

Options Hash (executions):

  • List (Array<String>)

    of Executions Guid

Options Hash (access):

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


499
500
501
502
503
504
505
506
# File 'lib/groupdocs/questionnaire.rb', line 499

def delete_executions_list!(executions, access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/merge/{{client_id}}/questionnaires/executions/list"
    request[:request_body] = executions
  end.execute!
end

#delete_list!(guids, access = {}) ⇒ Object

Added in release 1.5.8

Delete list of questionnaires by GUIDs.

Parameters:

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

    Access credentials

  • guids (Hash)

    a customizable set of options

Options Hash (guids):

  • List (Array<String>)

    of Questionnaires Guid

Options Hash (access):

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


459
460
461
462
463
464
465
466
467
468
# File 'lib/groupdocs/questionnaire.rb', line 459

def delete_list!(guids, access = {})
 api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/merge/{{client_id}}/questionnaires/list"
    request[:request_body] = guids
 end
 
 api.execute!
end

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

Returns an array of questionnaire executions.

Parameters:

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

    Access credentials

Options Hash (access):

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

Returns:



256
257
258
259
260
261
262
263
264
265
266
# File 'lib/groupdocs/questionnaire.rb', line 256

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

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

#fields!(access = {}) ⇒ Array<GroupDocs::Document::Field>

Returns an array of document fields for questionnaire.

Parameters:

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

    Access credentials

Options Hash (access):

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

Returns:



350
351
352
353
354
355
356
357
358
359
360
361
362
# File 'lib/groupdocs/questionnaire.rb', line 350

def fields!(access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/fields"
  end
  api.add_params(:include_geometry => true)
  json = api.execute!

  json[:fields].map do |field|
    Document::Field.new(field)
  end
end

#get_document!(access = {}) ⇒ Object

Added in release 1.5.8

Get associated document by questionnaire

Parameters:

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

    Access credentials

Options Hash (access):

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


404
405
406
407
408
409
410
# File 'lib/groupdocs/questionnaire.rb', line 404

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

#metadata!(access = {}) ⇒ GroupDocs::Questionnaire

Returns questionnaire metadata.

Parameters:

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

    Access credentials

Options Hash (access):

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

Returns:



306
307
308
309
310
311
312
313
314
# File 'lib/groupdocs/questionnaire.rb', line 306

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

  Questionnaire.new(json[:questionnaire])
end

#remove!(access = {}) ⇒ Object

Removes questionnaire.

Parameters:

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

    Access credentials

Options Hash (access):

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


217
218
219
220
221
222
223
224
225
226
# File 'lib/groupdocs/questionnaire.rb', line 217

def remove!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/merge/{{client_id}}/questionnaires/#{id}"
  end.execute!
# TODO: fix this in API - http://scotland.groupdocs.com/jira/browse/CORE-391
rescue RestClient::BadRequest
  nil
end

#update!(access = {}) ⇒ Object

Updates questionnaire.

Parameters:

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

    Access credentials

Options Hash (access):

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


201
202
203
204
205
206
207
208
# File 'lib/groupdocs/questionnaire.rb', line 201

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

#update_metadata!(metadata, access = {}) ⇒ Object

Updates questionnaire metadata.

Examples:

questionnaire = GroupDocs::Questionnaire.get!(1)
 = questionnaire.metadata!
.name = 'New questionnaire name'
questionnaire.update_metadata! 

Parameters:

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

    Access credentials

Options Hash (access):

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

Raises:

  • (ArgumentError)

    if metadata is not GroupDocs::Questionnaire



330
331
332
333
334
335
336
337
338
339
340
# File 'lib/groupdocs/questionnaire.rb', line 330

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

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