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

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

#assigned_questionsObject



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

def assigned_questions
  @assigned_questions
end

#descrObject



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

def descr
  @descr
end

#document_idsObject



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

def document_ids
  @document_ids
end

#expiresObject



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

def expires
  @expires
end

#guidObject



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

def guid
  @guid
end

#idObject



66
67
68
# File 'lib/groupdocs/questionnaire.rb', line 66

def id
  @id
end

#modifiedObject



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

def modified
  @modified
end

#nameObject



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

def name
  @name
end

#pagesObject



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

def pages
  @pages
end

#resolved_executionsObject



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

def resolved_executions
  @resolved_executions
end

#statusSymbol

Converts status to human-readable format.

Returns:

  • (Symbol)


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

def status
  @status
end

#total_questionsObject



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

def total_questions
  @total_questions
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:



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

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:



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

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

Instance Method Details

#add_page(page) ⇒ Object

Adds page to questionnaire.

Parameters:

Raises:

  • (ArgumentError)

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



125
126
127
128
129
130
131
# File 'lib/groupdocs/questionnaire.rb', line 125

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>

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:



240
241
242
243
244
245
246
247
248
249
250
251
252
253
# File 'lib/groupdocs/questionnaire.rb', line 240

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

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



333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
# File 'lib/groupdocs/questionnaire.rb', line 333

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.

Parameters:

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

    Access credentials

Options Hash (access):

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


141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/groupdocs/questionnaire.rb', line 141

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:



196
197
198
199
200
201
202
203
204
205
206
# File 'lib/groupdocs/questionnaire.rb', line 196

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

#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:



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

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:



307
308
309
310
311
312
313
314
315
316
317
318
319
# File 'lib/groupdocs/questionnaire.rb', line 307

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

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

Returns questionnaire metadata.

Parameters:

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

    Access credentials

Options Hash (access):

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

Returns:



263
264
265
266
267
268
269
270
271
# File 'lib/groupdocs/questionnaire.rb', line 263

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)


177
178
179
180
181
182
183
184
185
186
# File 'lib/groupdocs/questionnaire.rb', line 177

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)


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

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



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

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