Class: Paperlex::Contract
- Inherits:
-
Base
- Object
- Hashie::Dash
- Base
- Paperlex::Contract
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_fields ⇒ Object
33
34
35
|
# File 'lib/paperlex/contract.rb', line 33
def create_fields
[*update_fields] << :slaw_id
end
|
.update_fields ⇒ Object
29
30
31
|
# File 'lib/paperlex/contract.rb', line 29
def update_fields
[:subject, :number_of_signers, :responses, :signature_callback_url, :body]
end
|
.url_name ⇒ Object
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_responses ⇒ Object
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_sessions ⇒ Object
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_signers ⇒ Object
74
75
76
77
|
# File 'lib/paperlex/contract.rb', line 74
def fetch_signers
self.signers = Signers[uuid].all
signers
end
|
#html_url ⇒ Object
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
|
#responses ⇒ Object
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_sessions ⇒ Object
103
104
105
|
# File 'lib/paperlex/contract.rb', line 103
def review_sessions
self[:review_sessions] ||= []
end
|
#review_sessions=(review_sessions) ⇒ Object
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_responses ⇒ Object
164
165
166
|
# File 'lib/paperlex/contract.rb', line 164
def save_responses
Responses[uuid].update_all(responses)
end
|
#signers=(signers) ⇒ Object
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_html ⇒ Object
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
|
#versions ⇒ Object
138
139
140
|
# File 'lib/paperlex/contract.rb', line 138
def versions
Versions[uuid].all.map {|version| Version.new(version) }
end
|