Sha256: 2c7cce248eff9fb8e79b8144b36691d0e46492fac425df1ea2e2f06e0a4b1236

Contents?: true

Size: 1.46 KB

Versions: 8

Compression:

Stored size: 1.46 KB

Contents

# frozen_string_literal: true

module Dhis2
  module Api
    module Shared
      module Event
        def self.included(base)
          base.extend(ClassMethods)
        end

        def id
          # we use super because id is defined on creation
          super || event
        end

        module ClassMethods
          def list(client, options = {}, raw = false)
            raise InvalidRequestError, new(list_error_message) if invalid_list_arguments?(options)
            super
          end

          private

          def additional_query_parameters
            [:program, :org_unit, :tracked_entity_instance]
          end

          def instance_creation_success?(response)
            response["status"] == "OK" &&
              response["response"] &&
              response["response"]["status"] == "SUCCESS" &&
              response["response"]["imported"] == 1 &&
              response["response"]["import_summaries"]
          end

          def created_instance_id(response)
            response["response"]["import_summaries"][0]["reference"]
          end

          def invalid_list_arguments?(options)
            %i(org_unit program tracked_entity_instance event).all? do |arg|
              options[arg].nil?
            end
          end

          def list_error_message
            "At least one of the following query parameters are required:" \
            "org_unit, program, tracked_entity_instance or event."
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
dhis2-3.3.1 lib/dhis2/api/shared/event.rb
dhis2-3.2.1 lib/dhis2/api/shared/event.rb
dhis2-3.0.7 lib/dhis2/api/shared/event.rb
dhis2-3.0.5 lib/dhis2/api/shared/event.rb
dhis2-3.0.4 lib/dhis2/api/shared/event.rb
dhis2-3.0.3 lib/dhis2/api/shared/event.rb
dhis2-3.0.2 lib/dhis2/api/shared/event.rb
dhis2-3.0.0 lib/dhis2/api/shared/event.rb