Skip to content

Commit f2ed2b5

Browse files
committed
added changes to support custom texts
1 parent 8ecd15d commit f2ed2b5

File tree

3 files changed

+87
-8
lines changed

3 files changed

+87
-8
lines changed

launcher-csharp/eSignature/Controllers/DeleteRestoreEnvelope.cs

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ namespace DocuSign.CodeExamples.ESignature.Controllers
88
using DocuSign.CodeExamples.Common;
99
using DocuSign.CodeExamples.Controllers;
1010
using DocuSign.CodeExamples.Models;
11+
using DocuSign.eSign.Model;
1112
using Microsoft.AspNetCore.Mvc;
1213
using Newtonsoft.Json;
1314

@@ -17,7 +18,7 @@ public class DeleteRestoreEnvelope : EgController
1718
{
1819
private const string DeleteFolderId = "recyclebin";
1920

20-
private const string RestoreFolderId = "sentitems";
21+
private const string SentItemsFolderName = "Sent Items";
2122

2223
public DeleteRestoreEnvelope(DsConfiguration config, LauncherTexts launcherTexts, IRequestItemsService requestItemsService)
2324
: base(config, launcherTexts, requestItemsService)
@@ -61,9 +62,11 @@ public IActionResult DeleteEnvelopeAction(string envelopeId)
6162
this.ViewBag.h1 = this.CodeExampleText.ExampleName;
6263
this.ViewBag.ConfirmAdditionalLink = nameof(this.GetRestoreEnvelope);
6364
this.ViewBag.OnlyConfirmAdditionalLink = true;
64-
this.ViewBag.message = this.CodeExampleText.AdditionalPages
65-
.FirstOrDefault(x => x.Name.Equals("envelope_is_deleted"))
66-
?.ResultsPageText;
65+
this.ViewBag.message = string.Format(
66+
this.CodeExampleText.AdditionalPages
67+
.FirstOrDefault(x => x.Name.Equals("envelope_is_deleted"))
68+
?.ResultsPageText,
69+
envelopeId);
6770

6871
return this.View("example_done");
6972
}
@@ -75,9 +78,10 @@ public IActionResult DeleteEnvelopeAction(string envelopeId)
7578
[HttpPost]
7679
[Route("RestoreEnvelopeAction")]
7780
[SetViewBag]
78-
public IActionResult RestoreEnvelopeAction()
81+
public IActionResult RestoreEnvelopeAction(string folderName)
7982
{
8083
bool tokenOk = this.CheckToken(3);
84+
folderName = folderName ?? SentItemsFolderName;
8185

8286
if (!tokenOk)
8387
{
@@ -89,16 +93,38 @@ public IActionResult RestoreEnvelopeAction()
8993
string accessToken = this.RequestItemsService.User.AccessToken;
9094
string accountId = this.RequestItemsService.Session.AccountId;
9195

96+
FoldersResponse availableFolders = global::ESignature.Examples.DeleteRestoreEnvelope.GetFolders(
97+
accessToken,
98+
basePath,
99+
accountId);
100+
Folder folder = global::ESignature.Examples.DeleteRestoreEnvelope.GetFolderIdByName(
101+
availableFolders.Folders,
102+
folderName);
103+
104+
if (folder == null)
105+
{
106+
this.ViewBag.h1 = this.CodeExampleText.ExampleName;
107+
this.ViewBag.message = string.Format(this.CodeExampleText.AdditionalPages[1].ResultsPageText, folderName);
108+
this.ViewBag.ConfirmAdditionalLink = nameof(this.GetRestoreEnvelope);
109+
this.ViewBag.OnlyConfirmAdditionalLink = true;
110+
111+
return this.View("example_done");
112+
}
113+
92114
global::ESignature.Examples.DeleteRestoreEnvelope.MoveEnvelopeToFolder(
93115
accessToken,
94116
basePath,
95117
accountId,
96118
this.RequestItemsService.EnvelopeId,
97-
RestoreFolderId,
119+
folder.FolderId,
98120
DeleteFolderId);
99121

100122
this.ViewBag.h1 = this.CodeExampleText.ExampleName;
101-
this.ViewBag.message = this.CodeExampleText.ResultsPageText;
123+
this.ViewBag.message = string.Format(
124+
this.CodeExampleText.ResultsPageText,
125+
this.RequestItemsService.EnvelopeId,
126+
folder.Type,
127+
folderName);
102128

103129
return this.View("example_done");
104130
}

launcher-csharp/eSignature/Examples/DeleteRestoreEnvelope.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,39 @@ public static FoldersResponse MoveEnvelopeToFolder(
4242

4343
return foldersApi.MoveEnvelopes(accountId, folderId, foldersRequest);
4444
}
45+
46+
public static FoldersResponse GetFolders(
47+
string accessToken,
48+
string basePath,
49+
string accountId)
50+
{
51+
var docusignClient = new DocuSignClient(basePath);
52+
docusignClient.Configuration.DefaultHeader.Add("Authorization", "Bearer " + accessToken);
53+
54+
FoldersApi foldersApi = new FoldersApi(docusignClient);
55+
return foldersApi.List(accountId);
56+
}
57+
58+
public static Folder GetFolderIdByName(List<Folder> folders, string targetName)
59+
{
60+
foreach (Folder folder in folders)
61+
{
62+
if (folder.Name.Equals(targetName))
63+
{
64+
return folder;
65+
}
66+
67+
if (folder.Folders != null && !folder.Folders.Count.Equals(0))
68+
{
69+
Folder nestedFolder = GetFolderIdByName(folder.Folders, targetName);
70+
if (nestedFolder != null)
71+
{
72+
return nestedFolder;
73+
}
74+
}
75+
}
76+
77+
return null;
78+
}
4579
}
4680
}

launcher-csharp/eSignature/Views/DeleteRestoreEnvelope/restoreEnvelope.cshtml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
<h4>@Html.Raw(ViewBag.CodeExampleText.ExampleName)</h4>
1+
@{
2+
int formNumber = 0;
3+
int folderNameInputNumber = 1;
4+
}
5+
6+
<h4>@Html.Raw(ViewBag.CodeExampleText.ExampleName)</h4>
27
<p>
38
@Html.Raw(ViewBag.CodeExampleText.ExampleDescription)
49
</p>
@@ -9,6 +14,20 @@
914
</p>
1015

1116
<form class="eg" asp-area="eSignature" asp-controller="DeleteRestoreEnvelope" asp-action="RestoreEnvelopeAction" method="post" data-busy="form">
17+
<div class="form-group">
18+
<label for="folderName">
19+
@Html.Raw(ViewBag.CodeExampleText.Forms[formNumber].Inputs[folderNameInputNumber].InputName)
20+
</label>
21+
22+
<input type="text"
23+
class="form-control"
24+
id="folderName"
25+
name="folderName"
26+
placeholder="@ViewBag.CodeExampleText.Forms[formNumber].Inputs[folderNameInputNumber].InputPlaceholder"
27+
required
28+
value="@ViewBag.CodeExampleText.Forms[formNumber].Inputs[folderNameInputNumber].InputPlaceholder">
29+
</div>
30+
1231
<button type="submit" class="btn btn-primary">
1332
@Html.Raw(ViewBag.SupportingTexts.HelpingTexts.SubmitButtonRestoreText)
1433
</button>

0 commit comments

Comments
 (0)