Skip to content

Commit 1093eae

Browse files
author
Balaji Jayaraman
committed
added delete and restore envelope how to code snippet
1 parent e34b358 commit 1093eae

File tree

10 files changed

+207
-13
lines changed

10 files changed

+207
-13
lines changed
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../../services/utils'
4+
5+
class ESign::Eeg045DeleteRestoreEnvelopeController < EgController
6+
before_action -> { check_auth('eSignature') }
7+
before_action -> { @example = Utils::ManifestUtils.new.get_example(@manifest, 45, 'eSignature') }
8+
9+
DELETE_FOLDER_ID = 'recyclebin'
10+
11+
def delete_envelope
12+
args = {
13+
account_id: session['ds_account_id'],
14+
base_path: session['ds_base_path'],
15+
access_token: session['ds_access_token'],
16+
envelope_id: param_gsub(params['envelope_id']),
17+
delete_folder_id: DELETE_FOLDER_ID
18+
}
19+
20+
delete_restore_envelope_service = ESign::Eg045DeleteRestoreEnvelopeService.new
21+
22+
delete_restore_envelope_service.delete_envelope args
23+
24+
session[:envelope_id] = args[:envelope_id]
25+
additional_page_data = @example['AdditionalPage'].find { |p| p['Name'] == 'envelope_is_deleted' }
26+
@title = @example['ExampleName']
27+
@message = format_string(additional_page_data['ResultsPageText'], args[:envelope_id])
28+
@redirect_url = "/#{session[:eg]}restore"
29+
30+
render 'ds_common/example_done'
31+
end
32+
33+
def restore_envelope
34+
folder_name = param_gsub(params['folder_name'])
35+
args = {
36+
account_id: session['ds_account_id'],
37+
base_path: session['ds_base_path'],
38+
access_token: session['ds_access_token'],
39+
envelope_id: param_gsub(session[:envelope_id]),
40+
from_folder_id: DELETE_FOLDER_ID
41+
}
42+
43+
delete_restore_envelope_service = ESign::Eg045DeleteRestoreEnvelopeService.new
44+
45+
folders = delete_restore_envelope_service.get_folders args
46+
args[:folder_id] = Utils::DocuSignUtils.new.get_folder_id_by_name(folders.folders, folder_name)
47+
48+
if args[:folder_id].nil? || args[:folder_id].empty?
49+
additional_page_data = @example['AdditionalPage'].find { |p| p['Name'] == 'folder_does_not_exist' }
50+
@title = @example['ExampleName']
51+
@message = format_string(additional_page_data['ResultsPageText'], folder_name)
52+
@redirect_url = "/#{session[:eg]}restore"
53+
54+
return render 'ds_common/example_done'
55+
end
56+
57+
delete_restore_envelope_service.move_envelope_to_folder args
58+
59+
session[:envelope_id] = args[:envelope_id]
60+
@title = @example['ExampleName']
61+
@message = format_string(@example['ResultsPageText'], session[:envelope_id], args[:folder_id], folder_name)
62+
render 'ds_common/example_done'
63+
end
64+
65+
def get_delete_envelope
66+
get
67+
@envelope_id = session[:envelope_id]
68+
@submit_button_text = @manifest['SupportingTexts']['HelpingTexts']['SubmitButtonDeleteText']
69+
70+
render 'e_sign/eeg045_delete_restore_envelope/delete'
71+
end
72+
73+
def get_restore_envelope
74+
return redirect_to "/#{session[:eg]}" if session[:envelope_id].nil?
75+
76+
get
77+
@envelope_id = session[:envelope_id]
78+
@submit_button_text = @manifest['SupportingTexts']['HelpingTexts']['SubmitButtonRestoreText']
79+
80+
render 'e_sign/eeg045_delete_restore_envelope/restore'
81+
end
82+
end

app/services/api_creator.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,12 @@ def create_group_api(args)
4949
api_client.default_headers['Authorization'] = "Bearer #{args[:access_token]}"
5050
DocuSign_eSign::GroupsApi.new api_client
5151
end
52+
53+
def create_folders_api(args)
54+
configuration = DocuSign_eSign::Configuration.new
55+
configuration.host = args[:base_path]
56+
api_client = DocuSign_eSign::ApiClient.new configuration
57+
api_client.default_headers['Authorization'] = "Bearer #{args[:access_token]}"
58+
DocuSign_eSign::FoldersApi.new api_client
59+
end
5260
end
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# frozen_string_literal: true
2+
3+
class ESign::Eg045DeleteRestoreEnvelopeService
4+
include ApiCreator
5+
6+
def delete_envelope(args)
7+
#ds-snippet-start:eSign45Step2
8+
folders_api = create_folders_api(args)
9+
#ds-snippet-end:eSign45Step2
10+
11+
#ds-snippet-start:eSign45Step3
12+
folders_request = DocuSign_eSign::FoldersRequest.new
13+
folders_request.envelope_ids = [args[:envelope_id]]
14+
#ds-snippet-end:eSign45Step3
15+
16+
#ds-snippet-start:eSign45Step4
17+
folders_api.move_envelopes(args[:account_id], args[:delete_folder_id], folders_request)
18+
#ds-snippet-end:eSign45Step4
19+
end
20+
21+
def move_envelope_to_folder(args)
22+
folders_api = create_folders_api(args)
23+
24+
#ds-snippet-start:eSign45Step6
25+
folders_request = DocuSign_eSign::FoldersRequest.new
26+
folders_request.envelope_ids = [args[:envelope_id]]
27+
folders_request.from_folder_id = args[:from_folder_id]
28+
29+
folders_api.move_envelopes(args[:account_id], args[:folder_id], folders_request)
30+
#ds-snippet-end:eSign45Step6
31+
end
32+
33+
def get_folders(args)
34+
folders_api = create_folders_api(args)
35+
36+
#ds-snippet-start:eSign45Step5
37+
folders_api.list(args[:account_id])
38+
#ds-snippet-end:eSign45Step5
39+
end
40+
end

app/services/utils.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,19 @@ def get_user_id(args)
2929
user_info = api_client.get_user_info(args[:access_token])
3030
user_info.sub
3131
end
32+
33+
def get_folder_id_by_name(folders, folder_name)
34+
folders.each do |folder|
35+
return folder.folder_id if folder.name.downcase == folder_name.downcase
36+
37+
if folder.folders&.any?
38+
folder_id = get_folder_id_by_name(folder.folders, folder_name)
39+
return folder_id if folder_id
40+
end
41+
end
42+
43+
nil
44+
end
3245
end
3346

3447
class FileUtils

app/services/webforms/eg002_create_remote_instance_service.rb

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,20 @@ def create_web_form_instance(form_id)
5757
'Company' => 'Tally',
5858
'JobTitle' => 'Programmer Writer'
5959
}
60-
recipient = DocuSign_WebForms::CreateInstanceRequestBodyRecipients.new({
61-
'roleName' => 'signer',
62-
'name' => args[:signer_name],
63-
'email' => args[:signer_email]
64-
})
65-
web_form_req_object = DocuSign_WebForms::CreateInstanceRequestBody.new({
66-
'formValues' => web_form_values,
67-
'recipients' => [recipient],
68-
'sendOption' => 'now'
69-
})
60+
recipient = DocuSign_WebForms::CreateInstanceRequestBodyRecipients.new(
61+
{
62+
'roleName' => 'signer',
63+
'name' => args[:signer_name],
64+
'email' => args[:signer_email]
65+
}
66+
)
67+
web_form_req_object = DocuSign_WebForms::CreateInstanceRequestBody.new(
68+
{
69+
'formValues' => web_form_values,
70+
'recipients' => [recipient],
71+
'sendOption' => 'now'
72+
}
73+
)
7074
#ds-snippet-end:WebForms2Step4
7175

7276
#ds-snippet-start:WebForms2Step5
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<%= render('partials/example_info') %>
2+
3+
<% form_index = 0 %>
4+
<% envelope_id_index = 0 %>
5+
6+
<form class="eg" action="" method="post" data-busy="form">
7+
<% if @example["Forms"][form_index]["FormName"] %>
8+
<%= sanitize @example["Forms"][form_index]["FormName"] %>
9+
<% end %>
10+
11+
<div class="form-group">
12+
<label for="envelope_id"><%= @example["Forms"][form_index]["Inputs"][envelope_id_index]["InputName"] %></label>
13+
<input type="text" class="form-control" id="envelope_id" name="envelope_id"
14+
aria-describedby="envelope_id_help" value="<%= @envelope_id %>" required
15+
placeholder="<%= @example["Forms"][form_index]["Inputs"][envelope_id_index]["InputPlaceholder"] %>">
16+
<small id="envelope_id_help" class="form-text text-muted"><%= @manifest["SupportingTexts"]["HelpingTexts"]["DefaultEnvelopeId"] %></small>
17+
</div>
18+
19+
<%= render('partials/submit_button') %>
20+
</form>
21+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<h4><%= @example["ExampleName"] %></h4>
2+
<p><%= sanitize @example["ExampleDescription"] %></p>
3+
<%= sanitize format_string(@manifest["SupportingTexts"]["HelpingTexts"]["EnvelopeWillBeRestored"], @envelope_id) %>
4+
5+
<% form_index = 0 %>
6+
<% folder_name_index = 1 %>
7+
8+
<form class="eg" action="" method="post" data-busy="form">
9+
<% if @example["Forms"][form_index]["FormName"] %>
10+
<%= sanitize @example["Forms"][form_index]["FormName"] %>
11+
<% end %>
12+
13+
<div class="form-group">
14+
<label for="folder_name"><%= @example["Forms"][form_index]["Inputs"][folder_name_index]["InputName"] %></label>
15+
<input type="text" class="form-control" id="folder_name" name="folder_name" required
16+
placeholder="<%= @example["Forms"][form_index]["Inputs"][folder_name_index]["InputPlaceholder"] %>">
17+
</div>
18+
19+
<%= render('partials/submit_button') %>
20+
</form>
21+

app/views/partials/_example_info.erb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
<p><a target='_blank' href='<%= @documentation %>'>Documentation</a> about this example.</p>
66
<% end %>
77

8-
<% if @example["Note"] %>
9-
<%= sanitize @example["Note"] %>
8+
<% if @example["Notes"] %>
9+
<%= sanitize @example["Notes"] %>
1010
<% end %>
1111

1212
<% if @example["LinksToAPIMethod"] %>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<button type="submit" class="btn btn-docu"><%= sanitize @manifest["SupportingTexts"]["SubmitButton"] %></button>
1+
<button type="submit" class="btn btn-docu"><%= sanitize @submit_button_text || @manifest["SupportingTexts"]["SubmitButton"] %></button>

config/routes.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,11 @@
231231

232232
get 'eeg044' => 'eeg044_focused_view#get'
233233
post 'eeg044' => 'eeg044_focused_view#create'
234+
235+
get 'eeg045' => 'eeg045_delete_restore_envelope#get_delete_envelope'
236+
post 'eeg045' => 'eeg045_delete_restore_envelope#delete_envelope'
237+
get 'eeg045restore' => 'eeg045_delete_restore_envelope#get_restore_envelope'
238+
post 'eeg045restore' => 'eeg045_delete_restore_envelope#restore_envelope'
234239
end
235240

236241
scope module: 'connect' do

0 commit comments

Comments
 (0)