Class: Esignatur::Order

Inherits:
Object
  • Object
show all
Includes:
ApiResource
Defined in:
lib/esignatur/order.rb

Overview

esignatur order representation More info: api.esignatur.dk/Documentation/Order

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ApiResource

#errors, #last_response

Constructor Details

#initialize(attributes: {}, api:) ⇒ Order

Returns a new instance of Order.



17
18
19
20
# File 'lib/esignatur/order.rb', line 17

def initialize(attributes: {}, api:)
  @attributes = attributes
  @api = api
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



15
16
17
# File 'lib/esignatur/order.rb', line 15

def attributes
  @attributes
end

Instance Method Details

#cancel(attributes) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/esignatur/order.rb', line 39

def cancel(attributes)
  camelized_attributes = attributes.transform_keys(&:to_s).transform_keys(&:camelize)
  creator_id = camelized_attributes.delete('CreatorId')

  data = { 'OrderId' => id }.merge(camelized_attributes.compact)
  headers = { 'X-eSignatur-CreatorId': creator_id }

  api_post('Cancel/CancelOrder', data, headers: headers).success?
end

#create(attributes) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/esignatur/order.rb', line 22

def create(attributes)
  response = api_post('Order/Create', attributes)
  if errors.empty?
    body = response.json_body
    @attributes = attributes.merge(id: body.fetch('OrderId')).merge(body)
  end
  self
end

#idObject



31
32
33
# File 'lib/esignatur/order.rb', line 31

def id
  attributes[:id]
end

#pades_listObject



49
50
51
52
53
# File 'lib/esignatur/order.rb', line 49

def pades_list
  @pades_list ||= status.attributes['Documents'].map do |document|
    Esignatur::Pades.new(order: self, attributes: document, api: api)
  end
end

#source_documentObject



55
56
57
# File 'lib/esignatur/order.rb', line 55

def source_document
  @source_document ||= Esignatur::SourceDocument.new(order: self, api: api)
end

#statusObject



35
36
37
# File 'lib/esignatur/order.rb', line 35

def status
  @status ||= Esignatur::Status.new(order: self, api: api).tap(&:fetch)
end