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 = {}, **keyword_attributes) ⇒ Object



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

def cancel(attributes = {}, **keyword_attributes)
  camelized_attributes = attributes.merge(keyword_attributes).transform_keys(&:to_s).transform_keys(&:camelize)
  data = { 'OrderId' => id }.merge(camelized_attributes.compact)

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

#create(attributes = {}, **keyword_attributes) ⇒ Object



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

def create(attributes = {}, **keyword_attributes)
  response = api_post('Order/Create', attributes.merge(keyword_attributes))

  if errors.empty?
    body = response.json_body
    @attributes = attributes.merge(id: body.fetch('OrderId')).merge(body)
  end

  self
end

#idObject



33
34
35
# File 'lib/esignatur/order.rb', line 33

def id
  attributes[:id]
end

#pades_listObject



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

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

#source_documentObject



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

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

#statusObject



37
38
39
# File 'lib/esignatur/order.rb', line 37

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