Class: Paperlex::Contract

Inherits:
Base
  • Object
show all
Extended by:
ActiveSupport::Autoload
Includes:
RootObject
Defined in:
lib/paperlex/contract.rb,
lib/paperlex/contract/signers.rb,
lib/paperlex/contract/versions.rb,
lib/paperlex/contract/responses.rb,
lib/paperlex/contract/review_sessions.rb

Defined Under Namespace

Classes: Responses, ReviewSessions, Signers, Versions

Class Method Summary collapse

Instance Method Summary collapse

Methods included from RootObject

#save!

Methods inherited from Base

[], delete, get, #initialize, parse, post, put, #to_uuid

Constructor Details

This class inherits a constructor from Paperlex::Base

Class Method Details

.create(attrs = {}) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/paperlex/contract.rb', line 41

def create(attrs = {})
  attrs.symbolize_keys!
  signers = attrs.delete(:signers)
  attrs.assert_valid_keys(create_fields)
  result = new(post("contracts.json", :contract => attrs))
  if signers.present?
    signers.each do |email|
      result.create_signer(:email => email)
    end
  end
  result
end

.create_fieldsObject



33
34
35
# File 'lib/paperlex/contract.rb', line 33

def create_fields
  [*update_fields] << :slaw_id
end

.update_fieldsObject



29
30
31
# File 'lib/paperlex/contract.rb', line 29

def update_fields
  [:subject, :number_of_signers, :responses, :signature_callback_url, :body]
end

.url_nameObject



37
38
39
# File 'lib/paperlex/contract.rb', line 37

def url_name
  "contracts"
end

Instance Method Details

#at_version(version_index) ⇒ Object Also known as: version_at



142
143
144
# File 'lib/paperlex/contract.rb', line 142

def at_version(version_index)
  self.class.new(Versions[uuid].find(version_index))
end

#create_review_session(attrs = {}) ⇒ Object



107
108
109
110
111
# File 'lib/paperlex/contract.rb', line 107

def create_review_session(attrs = {})
  session = ReviewSessions[uuid].create(attrs)
  self.review_sessions << session
  session
end

#create_signer(attrs = {}) ⇒ Object



68
69
70
71
72
# File 'lib/paperlex/contract.rb', line 68

def create_signer(attrs = {})
  signer = Signers[uuid].create(attrs)
  self.signers << signer
  signer
end

#delete_response(key) ⇒ Object



172
173
174
175
176
# File 'lib/paperlex/contract.rb', line 172

def delete_response(key)
  Responses[uuid].destroy(key)
  self.responses.delete(key)
  responses
end

#delete_review_session(review_session_uuid) ⇒ Object



132
133
134
135
# File 'lib/paperlex/contract.rb', line 132

def delete_review_session(review_session_uuid)
  remove_review_session!(review_session_uuid)
  ReviewSessions[uuid].destroy(review_session_uuid)
end

#delete_signer(signer) ⇒ Object



93
94
95
96
# File 'lib/paperlex/contract.rb', line 93

def delete_signer(signer)
  remove_signer!(signer)
  Signers[uuid].destroy(signer)
end

#fetch_response(key) ⇒ Object



160
161
162
# File 'lib/paperlex/contract.rb', line 160

def fetch_response(key)
  self.responses[key] = Responses[uuid].find(key)
end

#fetch_responsesObject



156
157
158
# File 'lib/paperlex/contract.rb', line 156

def fetch_responses
  self.responses = Responses[uuid].all
end

#fetch_review_session(review_session_uuid) ⇒ Object



118
119
120
121
122
123
# File 'lib/paperlex/contract.rb', line 118

def fetch_review_session(review_session_uuid)
  remove_review_session!(review_session_uuid)
  new_session = ReviewSessions[uuid].find(review_session_uuid)
  self.review_sessions << new_session
  new_session
end

#fetch_review_sessionsObject



113
114
115
116
# File 'lib/paperlex/contract.rb', line 113

def fetch_review_sessions
  self.review_sessions = ReviewSessions[uuid].all
  review_sessions
end

#fetch_signer(signer) ⇒ Object



79
80
81
82
83
84
# File 'lib/paperlex/contract.rb', line 79

def fetch_signer(signer)
  remove_signer!(signer)
  new_signer = Signers[uuid].find(signer)
  self.signers << new_signer
  new_signer
end

#fetch_signersObject



74
75
76
77
# File 'lib/paperlex/contract.rb', line 74

def fetch_signers
  self.signers = Signers[uuid].all
  signers
end

#html_urlObject



55
56
57
# File 'lib/paperlex/contract.rb', line 55

def html_url
  "#{Paperlex.base_url}/contracts/#{uuid}.html?#{{:token => Paperlex.token}.to_query}"
end

#responsesObject

Responses



152
153
154
# File 'lib/paperlex/contract.rb', line 152

def responses
  self[:responses] ||= {}
end

#revert_to_version(version_index) ⇒ Object



147
148
149
# File 'lib/paperlex/contract.rb', line 147

def revert_to_version(version_index)
  self.class.new(Versions[uuid].revert_to(version_index))
end

#review_sessionsObject



103
104
105
# File 'lib/paperlex/contract.rb', line 103

def review_sessions
  self[:review_sessions] ||= []
end

#review_sessions=(review_sessions) ⇒ Object

Review Sessions



99
100
101
# File 'lib/paperlex/contract.rb', line 99

def review_sessions=(review_sessions)
  self[:review_sessions] = review_sessions.map {|session| session.is_a?(Paperlex::ReviewSession) ? session : Paperlex::ReviewSession.new(session.merge(:contract_uuid => uuid)) }
end

#save_response(key) ⇒ Object



168
169
170
# File 'lib/paperlex/contract.rb', line 168

def save_response(key)
  Responses[uuid].update(key, responses[key])
end

#save_responsesObject



164
165
166
# File 'lib/paperlex/contract.rb', line 164

def save_responses
  Responses[uuid].update_all(responses)
end

#signers=(signers) ⇒ Object

Signers



64
65
66
# File 'lib/paperlex/contract.rb', line 64

def signers=(signers)
  self[:signers] = signers.map {|signer| signer.is_a?(Paperlex::Signer) ? signer : Paperlex::Signer.new(signer.merge(:contract_uuid => uuid)) }
end

#to_htmlObject



59
60
61
# File 'lib/paperlex/contract.rb', line 59

def to_html
  RestClient.get(html_url)
end

#update_review_session(review_session_uuid, attrs) ⇒ Object



125
126
127
128
129
130
# File 'lib/paperlex/contract.rb', line 125

def update_review_session(review_session_uuid, attrs)
  remove_review_session!(review_session_uuid)
  updated_session = ReviewSessions[uuid].update(review_session_uuid, attrs)
  self.review_sessions << updated_session
  updated_session
end

#update_signer(signer, attrs) ⇒ Object



86
87
88
89
90
91
# File 'lib/paperlex/contract.rb', line 86

def update_signer(signer, attrs)
  remove_signer!(signer)
  updated_signer = Signers[uuid].update(signer, attrs)
  self.signers << updated_signer
  updated_signer
end

#versionsObject

Versions



138
139
140
# File 'lib/paperlex/contract.rb', line 138

def versions
  Versions[uuid].all.map {|version| Version.new(version) }
end