class GroupDocs::Questionnaire

Attributes

allowed_operations[RW]

@attr [Integer] allowed_operations

assigned_questions[RW]

@attr [Integer] assigned_questions

descr[RW]

@attr [String] descr

document_ids[RW]

@attr [Array<String>] document_ids

emails[RW]

@attr [String] emails

expires[RW]

@attr [Integer] expires

folder[RW]

@attr [String] folder

formats[RW]

added in release 1.5.8

@attr [Array<String>] formats

guid[RW]

@attr [String] guid

id[RW]

@attr [Integer] id

modified[RW]

@attr [Integer] modified

name[RW]

@attr [String] name

open_on_completion[RW]

@attr [Boolean] open_on_completion

output_format[RW]

@attr [String] output_format

pages[RW]

@attr [Array<GroupDocs::Questionnaire::Page>] pages

resolved_executions[RW]

@attr [Integer] resolved_executions

status[RW]

@attr [Symbol] status

totalCount[RW]

added in release 1.6.0 @attr [Integer] totalCount

total_questions[RW]

@attr [Integer] total_questions

Public Class Methods

all!(options = {}, access = {}) click to toggle source

Returns an array of all questionnaires.

@param [Hash] options Hash of options @option options [Symbol] :status Filter questionnaires by status @option options [Integer] :page_number Page to start with @option options [Integer] :page_size How many items to list @option options [String] :orderBy Order by column (optional) @option options [Bool] :isAscending Order by ascending or descending (optional) @param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [Array<GroupDocs::Questionnaire>]

# 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 = {}) click to toggle source

Returns questionnaire by identifier.

@param [Integer] id @param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [GroupDocs::Questionnaire, nil]

# 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 = {}) click to toggle source

Added in release 1.5.8

Returns an array of questionnaires by name.

@param [Hash] options Hash of options @option options [String] :name Questionnaire name @option options [Symbol] :status Filter questionnaires by status @option options [Integer] :page_number Page to start with @option options [Integer] :page_size How many items to list @option options [String] :orderBy Order by column (optional) @option options [Bool] :isAscending Order by ascending or descending (optional) @param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [Array<GroupDocs::Questionnaire>]

# 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

Public Instance Methods

add_page(page) click to toggle source

Adds page to questionnaire.

@param [GroupDocs::Questionnaire::Page] page @raise [ArgumentError] if page is not GroupDocs::Questionnaire::Page object

# 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 = {}) click to toggle source

Changed in release 1.5.8

Returns an array of questionnaire collectors.

@param [Hash] options Options @option options [String] :orderBy Order by column (required) @option options [Boolean] :isAsc Order by ascending or descending (required) @param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [Array<GroupDocs::Questionnaire::Collector>]

# 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 = {}) click to toggle source

Changed in release 1.5.8

Copy file to given path.

@param [String] path (required) @param [String] mode Mode (optional) @param [Hash] options @option options [String] name @param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [Array] Templates

# 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 = {}) click to toggle source

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!

@param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key

# 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 = {}) click to toggle source

Returns array of datasources for questionnaire.

@param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [Array<GroupDocs::DataSource>]

# 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 = {}) click to toggle source

Added in release 1.5.8

Removes questionnaire collector.

@param [Hash] access Access credentials @option collectors [Array<String>] List of Collectors Guid @option access [String] :client_id @option access [String] :private_key

# 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 = {}) click to toggle source

Added in release 1.5.8

Delete list of datasource fields.

@param [Hash] access Access credentials @option datasource [Array<String>] List of Datasources Guid @option access [String] :client_id @option access [String] :private_key

# 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 = {}) click to toggle source

Added in release 1.5.8

Removes questionnaire execution.

@param [Hash] access Access credentials @option executions [Array<String>] List of Executions Guid @option access [String] :client_id @option access [String] :private_key

# 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 = {}) click to toggle source

Added in release 1.5.8

Delete list of questionnaires by GUIDs.

@param [Hash] access Access credentials @option guids [Array<String>] List of Questionnaires Guid @option access [String] :client_id @option access [String] :private_key

# 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 = {}) click to toggle source

Returns an array of questionnaire executions.

@param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [Array<GroupDocs::Questionnaire::Execution>]

# 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 = {}) click to toggle source

Returns an array of document fields for questionnaire.

@param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [Array<GroupDocs::Document::Field>]

# 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 = {}) click to toggle source

Added in release 1.5.8

Get associated document by questionnaire

@param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key

# 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 = {}) click to toggle source

Returns questionnaire metadata.

@param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [GroupDocs::Questionnaire]

# 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
pages=(pages) click to toggle source

Converts each page to GroupDocs::Questionnaire::Page object.

@param [Array<GroupDocs::Questionnaire::Page, Hash>] pages

# File lib/groupdocs/questionnaire.rb, line 123
def pages=(pages)
  if pages
    @pages = pages.map do |page|
      if page.is_a?(GroupDocs::Questionnaire::Page)
        page
      else
        Questionnaire::Page.new(page)
      end
    end
  end
end
remove!(access = {}) click to toggle source

Removes questionnaire.

@param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key

# 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 = {}) click to toggle source

Updates questionnaire.

@param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key

# 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 = {}) click to toggle source

Updates questionnaire metadata.

@example

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

@param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @raise [ArgumentError] if metadata is not GroupDocs::Questionnaire

# File lib/groupdocs/questionnaire.rb, line 330
def update_metadata!(metadata, access = {})
  metadata.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
    "Metadata should be GroupDocs::Questionnaire object, received: #{metadata.inspect}"

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