Skip to content

Commit eb6e225

Browse files
committed
Added delete restore example
1 parent 2016b8f commit eb6e225

File tree

7 files changed

+251
-1
lines changed

7 files changed

+251
-1
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<oauth2.version>2.5.6</oauth2.version>
2727
<commonsio.version>2.16.1</commonsio.version>
2828

29-
<esignature.version>6.2.0</esignature.version>
29+
<esignature.version>6.4.0</esignature.version>
3030
<rooms.version>1.4.3</rooms.version>
3131
<click.version>1.5.0</click.version>
3232
<monitor.version>1.4.0</monitor.version>

src/main/java/com/docusign/common/WorkArguments.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ public class WorkArguments {
7171

7272
private String agreementId;
7373

74+
private String envelopeId;
75+
7476
private String permissionProfileName;
7577

7678
private String phoneNumber;
@@ -182,4 +184,6 @@ public class WorkArguments {
182184
private String jsonPayload;
183185

184186
private String instanceName;
187+
188+
private String folderName;
185189
}
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
package com.docusign.controller.eSignature.examples;
2+
3+
import com.docusign.DSConfiguration;
4+
import com.docusign.common.WorkArguments;
5+
import com.docusign.controller.eSignature.services.DeleteRestoreEnvelopeService;
6+
import com.docusign.core.model.DoneExample;
7+
import com.docusign.core.model.Session;
8+
import com.docusign.core.model.User;
9+
import com.docusign.esign.client.ApiClient;
10+
import com.docusign.esign.model.Folder;
11+
import com.docusign.esign.model.FoldersResponse;
12+
import org.springframework.http.MediaType;
13+
import org.springframework.stereotype.Controller;
14+
import org.springframework.ui.ModelMap;
15+
import org.springframework.web.bind.annotation.GetMapping;
16+
import org.springframework.web.bind.annotation.PostMapping;
17+
import org.springframework.web.bind.annotation.RequestMapping;
18+
19+
import javax.servlet.http.HttpServletResponse;
20+
import java.text.MessageFormat;
21+
22+
23+
/**
24+
* Used to delete the envelope and restore it back.
25+
*/
26+
@Controller
27+
@RequestMapping("/eg045")
28+
public class EG045ControllerDeleteRestoreEnvelope extends AbstractEsignatureController {
29+
public static final String RECYCLE_BIN_FOLDER_ID = "recyclebin";
30+
31+
public static final String SENT_ITEMS_FOLDER_NAME = "Sent items";
32+
33+
public static final String EXAMPLE_NUMBER = "/eg045";
34+
35+
public static final String RESTORE_ENVELOPE = "/restoreEnvelope";
36+
37+
public static final String RESTORE_ENVELOPE_PAGE = "pages/esignature/examples/eg045RestoreEnvelope";
38+
39+
public EG045ControllerDeleteRestoreEnvelope(DSConfiguration config, Session session, User user){
40+
super(config, "eg045", session, user);
41+
}
42+
43+
@Override
44+
protected void onInitModel(WorkArguments args, ModelMap model) throws Exception {
45+
super.onInitModel(args, model);
46+
model.addAttribute("envelopeId", session.getEnvelopeId());
47+
}
48+
49+
@Override
50+
protected Object doWork(WorkArguments args, ModelMap model,
51+
HttpServletResponse response) throws Exception {
52+
String envelopeId = args.getEnvelopeId();
53+
session.setEnvelopeId(envelopeId);
54+
55+
ApiClient apiClient = createApiClient(session.getBasePath(), user.getAccessToken());
56+
57+
DeleteRestoreEnvelopeService.moveEnvelopeToFolder(
58+
apiClient,
59+
session.getAccountId(),
60+
envelopeId,
61+
RECYCLE_BIN_FOLDER_ID,
62+
null);
63+
64+
DoneExample.createDefault(getTextForCodeExampleByApiType().ExampleName)
65+
.withMessage(getTextForCodeExampleByApiType().AdditionalPage.get(0).ResultsPageText)
66+
.withRedirect(EXAMPLE_NUMBER + RESTORE_ENVELOPE)
67+
.addToModel(model, config);
68+
69+
return DONE_EXAMPLE_PAGE;
70+
}
71+
72+
@GetMapping(value = RESTORE_ENVELOPE, produces = MediaType.APPLICATION_JSON_VALUE)
73+
public String getRestoreEnvelope(WorkArguments args, ModelMap model) throws Exception {
74+
super.onInitModel(args, model);
75+
76+
String envelopeId = session.getEnvelopeId();
77+
String restoreEnvelopeText = MessageFormat.format(
78+
config.getCodeExamplesText().SupportingTexts.HelpingTexts.EnvelopeWillBeRestored,
79+
envelopeId
80+
);
81+
82+
model.addAttribute("restoreText", restoreEnvelopeText);
83+
model.addAttribute("envelopeId", envelopeId);
84+
85+
return RESTORE_ENVELOPE_PAGE;
86+
}
87+
88+
@PostMapping(value = RESTORE_ENVELOPE, produces = MediaType.APPLICATION_JSON_VALUE)
89+
public String postRestoreEnvelope(WorkArguments args, ModelMap model) throws Exception {
90+
String envelopeId = session.getEnvelopeId();
91+
String accountId = session.getAccountId();
92+
String folderName = args.getFolderName() != null ? args.getFolderName() : SENT_ITEMS_FOLDER_NAME;
93+
94+
FoldersResponse availableFolders = DeleteRestoreEnvelopeService.getFolders(apiClient, accountId);
95+
Folder folder = availableFolders.getFolders().stream()
96+
.filter(f -> f.getName().equals(folderName))
97+
.findFirst()
98+
.orElse(null);
99+
100+
if(folder == null) {
101+
DoneExample.createDefault(getTextForCodeExampleByApiType().ExampleName)
102+
.withMessage(getTextForCodeExampleByApiType().AdditionalPage.get(1).ResultsPageText)
103+
.withRedirect(EXAMPLE_NUMBER + RESTORE_ENVELOPE)
104+
.addToModel(model, config);
105+
106+
return DONE_EXAMPLE_PAGE;
107+
}
108+
109+
ApiClient apiClient = createApiClient(session.getBasePath(), user.getAccessToken());
110+
111+
DeleteRestoreEnvelopeService.moveEnvelopeToFolder(
112+
apiClient,
113+
accountId,
114+
envelopeId,
115+
folder.getFolderId(),
116+
RECYCLE_BIN_FOLDER_ID);
117+
118+
DoneExample.createDefault(getTextForCodeExampleByApiType().ExampleName)
119+
.withMessage(
120+
MessageFormat.format(
121+
getTextForCodeExampleByApiType().ResultsPageText,
122+
folder.getType(),
123+
folderName
124+
)
125+
)
126+
.addToModel(model, config);
127+
128+
return DONE_EXAMPLE_PAGE;
129+
}
130+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.docusign.controller.eSignature.services;
2+
3+
import com.docusign.esign.api.FoldersApi;
4+
import com.docusign.esign.client.ApiClient;
5+
import com.docusign.esign.model.FoldersRequest;
6+
import com.docusign.esign.model.FoldersResponse;
7+
8+
import java.util.Collections;
9+
10+
public final class DeleteRestoreEnvelopeService {
11+
public static FoldersResponse moveEnvelopeToFolder(
12+
ApiClient apiClient,
13+
String accountId,
14+
String envelopeId,
15+
String folderId,
16+
String fromFolderId
17+
) throws Exception {
18+
FoldersApi foldersApi = new FoldersApi(apiClient);
19+
20+
FoldersRequest foldersRequest = new FoldersRequest();
21+
foldersRequest.setFromFolderId(fromFolderId);
22+
foldersRequest.setEnvelopeIds(Collections.singletonList(envelopeId));
23+
24+
return foldersApi.moveEnvelopes(accountId, folderId, foldersRequest);
25+
}
26+
27+
public static FoldersResponse getFolders(
28+
ApiClient apiClient,
29+
String accountId
30+
) throws Exception {
31+
FoldersApi foldersApi = new FoldersApi(apiClient);
32+
return foldersApi.callList(accountId);
33+
}
34+
}

src/main/java/com/docusign/core/model/manifestModels/HelpingTexts.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,12 @@ public class HelpingTexts {
3535
public String NOTAGREED;
3636

3737
public String AGREED;
38+
39+
public String SubmitButtonDeleteText;
40+
41+
public String SubmitButtonRestoreText;
42+
43+
public String EnvelopeWillBeRestored;
44+
45+
public String DefaultEnvelopeId;
3846
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2+
<jsp:include page="../../../partials/head.jsp"/>
3+
4+
<c:set var="formNumber" value="0" scope="page" />
5+
<c:set var="envelopeIdInputNumber" value="0" scope="page" />
6+
7+
<h4>${example.getExampleName()}</h4>
8+
<p>${example.getExampleDescription()}</p>
9+
10+
<c:if test="${showDoc}">
11+
<p><a target='_blank' href='${documentation}'>Documentation</a> about this example.</p>
12+
</c:if>
13+
14+
<jsp:include page="../../links_to_api_methods.jsp" />
15+
16+
<p>
17+
${viewSourceFile}
18+
</p>
19+
20+
<form class="eg" action="" method="post" data-busy="form">
21+
<div class="form-group">
22+
<label for="envelopeId">
23+
${example.getForms().get(formNumber).getInputs().get(envelopeIdInputNumber).getInputName()}
24+
</label>
25+
26+
<input type="text"
27+
class="form-control"
28+
id="envelopeId"
29+
name="envelopeId"
30+
aria-describedby="envelopeIdHelp"
31+
placeholder="${example.getForms().get(formNumber).getInputs().get(envelopeIdInputNumber).getInputPlaceholder()}"
32+
required
33+
value="${envelopeId}">
34+
35+
<small id="envelopeIdHelp" class="form-text text-muted">
36+
${launcherTexts.getHelpingTexts().getDefaultEnvelopeId()}
37+
</small>
38+
</div>
39+
40+
<input type="hidden" name="_csrf" value="${csrfToken}">
41+
<button type="submit" class="btn btn-docu">${launcherTexts.getHelpingTexts().getSubmitButtonDeleteText()}</button>
42+
</form>
43+
44+
<jsp:include page="../../../partials/foot.jsp"/>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2+
<jsp:include page="../../../partials/head.jsp"/>
3+
4+
<c:set var="formNumber" value="0" scope="page" />
5+
<c:set var="folderNameInputNumber" value="1" scope="page" />
6+
7+
<h4>${example.getExampleName()}</h4>
8+
<p>${example.getExampleDescription()}</p>
9+
<p>${restoreText}</p>
10+
11+
<form class="eg" action="" method="post" data-busy="form">
12+
<div class="form-group">
13+
<label for="folderName">
14+
${example.getForms().get(formNumber).getInputs().get(folderNameInputNumber).getInputName()}
15+
</label>
16+
17+
<input type="text"
18+
class="form-control"
19+
id="folderName"
20+
name="folderName"
21+
placeholder="${example.getForms().get(formNumber).getInputs().get(folderNameInputNumber).getInputPlaceholder()}"
22+
required
23+
value="${example.getForms().get(formNumber).getInputs().get(folderNameInputNumber).getInputPlaceholder()}">
24+
</div>
25+
26+
<input type="hidden" name="_csrf" value="${csrfToken}">
27+
<button type="submit" class="btn btn-docu">${launcherTexts.getHelpingTexts().getSubmitButtonRestoreText()}</button>
28+
</form>
29+
30+
<jsp:include page="../../../partials/foot.jsp"/>

0 commit comments

Comments
 (0)