lib/groupdocs/questionnaire.rb in groupdocs-2.2.0 vs lib/groupdocs/questionnaire.rb in groupdocs-2.3.0

- old
+ new

@@ -1,530 +1,530 @@ -module GroupDocs - class Questionnaire < Api::Entity - - require 'groupdocs/questionnaire/collector' - require 'groupdocs/questionnaire/execution' - require 'groupdocs/questionnaire/page' - require 'groupdocs/questionnaire/question' - require 'groupdocs/questionnaire/collector_style' - - - include Api::Helpers::Status - - # - # 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>] - # - 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 - - # - # 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] - # - 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 - - # @attr [Integer] id - attr_accessor :id - # @attr [String] guid - attr_accessor :guid - # @attr [String] name - attr_accessor :name - # @attr [Symbol] status - attr_accessor :status - # @attr [String] descr - attr_accessor :descr - # @attr [Array<GroupDocs::Questionnaire::Page>] pages - attr_accessor :pages - # @attr [Integer] resolved_executions - attr_accessor :resolved_executions - # @attr [Integer] assigned_questions - attr_accessor :assigned_questions - # @attr [Integer] total_questions - attr_accessor :total_questions - # @attr [Integer] modified - attr_accessor :modified - # @attr [Integer] expires - attr_accessor :expires - # @attr [Array<String>] document_ids - attr_accessor :document_ids - - # added in release 1.5.8 - # - # @attr [Array<String>] formats - attr_accessor :formats - # @attr [String] folder - attr_accessor :folder - # @attr [String] emails - attr_accessor :emails - # @attr [String] output_format - attr_accessor :output_format - # @attr [Boolean] open_on_completion - attr_accessor :open_on_completion - # @attr [Integer] allowed_operations - attr_accessor :allowed_operations - - # added in release 1.6.0 - # @attr [Integer] totalCount - attr_accessor :totalCount - - - # Human-readable accessors - alias_accessor :description, :descr - - # added in release 1.6.0 - alias_accessor :total_count, :totalCount - - # - # Converts each page to GroupDocs::Questionnaire::Page object. - # - # @param [Array<GroupDocs::Questionnaire::Page, Hash>] pages - # - 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 - - - - # - # Converts status to human-readable format. - # - # @return [Symbol] - # - def status - parse_status(@status) - end - - # - # Adds page to questionnaire. - # - # @param [GroupDocs::Questionnaire::Page] page - # @raise [ArgumentError] if page is not GroupDocs::Questionnaire::Page object - # - 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 - - - # - # 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 - # - 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 - - # - # Updates questionnaire. - # - # @param [Hash] access Access credentials - # @option access [String] :client_id - # @option access [String] :private_key - # - 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 - - # - # Removes questionnaire. - # - # @param [Hash] access Access credentials - # @option access [String] :client_id - # @option access [String] :private_key - # - 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 - - # - # 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>] - # - 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 - - # - # 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>] - # - 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 - - # - # 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>] - # - 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 - - # - # Returns questionnaire metadata. - # - # @param [Hash] access Access credentials - # @option access [String] :client_id - # @option access [String] :private_key - # @return [GroupDocs::Questionnaire] - # - 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 - - # - # 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 - # - 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 - - # - # 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>] - # - 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 - - # - # 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 - # - 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 - - - # - # 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 - # - 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 - - # - # 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>] - # - 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 - - # - # 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 - # - 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 - - # - # 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 - # - 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 - - # - # 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 - # - 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 - - # - # 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 - # - 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 - - - - end # Questionnaire -end # GroupDocs +module GroupDocs + class Questionnaire < Api::Entity + + require 'groupdocs/questionnaire/collector' + require 'groupdocs/questionnaire/execution' + require 'groupdocs/questionnaire/page' + require 'groupdocs/questionnaire/question' + require 'groupdocs/questionnaire/collector_style' + + + include Api::Helpers::Status + + # + # 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>] + # + 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 + + # + # 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] + # + 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 + + # @attr [Integer] id + attr_accessor :id + # @attr [String] guid + attr_accessor :guid + # @attr [String] name + attr_accessor :name + # @attr [Symbol] status + attr_accessor :status + # @attr [String] descr + attr_accessor :descr + # @attr [Array<GroupDocs::Questionnaire::Page>] pages + attr_accessor :pages + # @attr [Integer] resolved_executions + attr_accessor :resolved_executions + # @attr [Integer] assigned_questions + attr_accessor :assigned_questions + # @attr [Integer] total_questions + attr_accessor :total_questions + # @attr [Integer] modified + attr_accessor :modified + # @attr [Integer] expires + attr_accessor :expires + # @attr [Array<String>] document_ids + attr_accessor :document_ids + + # added in release 1.5.8 + # + # @attr [Array<String>] formats + attr_accessor :formats + # @attr [String] folder + attr_accessor :folder + # @attr [String] emails + attr_accessor :emails + # @attr [String] output_format + attr_accessor :output_format + # @attr [Boolean] open_on_completion + attr_accessor :open_on_completion + # @attr [Integer] allowed_operations + attr_accessor :allowed_operations + + # added in release 1.6.0 + # @attr [Integer] totalCount + attr_accessor :totalCount + + + # Human-readable accessors + alias_accessor :description, :descr + + # added in release 1.6.0 + alias_accessor :total_count, :totalCount + + # + # Converts each page to GroupDocs::Questionnaire::Page object. + # + # @param [Array<GroupDocs::Questionnaire::Page, Hash>] pages + # + 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 + + + + # + # Converts status to human-readable format. + # + # @return [Symbol] + # + def status + parse_status(@status) + end + + # + # Adds page to questionnaire. + # + # @param [GroupDocs::Questionnaire::Page] page + # @raise [ArgumentError] if page is not GroupDocs::Questionnaire::Page object + # + 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 + + + # + # 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 + # + 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 + + # + # Updates questionnaire. + # + # @param [Hash] access Access credentials + # @option access [String] :client_id + # @option access [String] :private_key + # + 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 + + # + # Removes questionnaire. + # + # @param [Hash] access Access credentials + # @option access [String] :client_id + # @option access [String] :private_key + # + 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 + + # + # 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>] + # + 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 + + # + # 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>] + # + 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 + + # + # 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>] + # + 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 + + # + # Returns questionnaire metadata. + # + # @param [Hash] access Access credentials + # @option access [String] :client_id + # @option access [String] :private_key + # @return [GroupDocs::Questionnaire] + # + 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 + + # + # 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 + # + 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 + + # + # 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>] + # + 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 + + # + # 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 + # + 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 + + + # + # 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 + # + 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 + + # + # 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>] + # + 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 + + # + # 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 + # + 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 + + # + # 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 + # + 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 + + # + # 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 + # + 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 + + # + # 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 + # + 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 + + + + end # Questionnaire +end # GroupDocs