11/**
22 * @file
3- * Example 045: Delete and Restore an Envelope
3+ * Example 045: Delete and Undelete an Envelope
44 * @author DocuSign
55 */
66
77const path = require ( 'path' ) ;
8- const { moveEnvelope } = require ( '../examples/deleteRestoreEnvelope' ) ;
8+ const { moveEnvelope, getFolders } = require ( '../examples/deleteRestoreEnvelope' ) ;
99const { getExampleByNumber } = require ( '../../manifestService' ) ;
1010const dsConfig = require ( '../../../config/index.js' ) . config ;
11- const { API_TYPES } = require ( '../../utils.js' ) ;
11+ const { API_TYPES , formatString } = require ( '../../utils.js' ) ;
12+ const { getFolderIdByName } = require ( '../getData.js' ) ;
1213
1314const eg045DeleteRestoreEnvelope = exports ;
1415const exampleNumber = 45 ;
@@ -65,14 +66,14 @@ eg045DeleteRestoreEnvelope.deleteController = async (req, res) => {
6566 const additionalPageData = example . AdditionalPage . find ( p => p . Name === 'envelope_is_deleted' ) ;
6667 res . render ( 'pages/example_done' , {
6768 title : example . ExampleName ,
68- message : additionalPageData . ResultsPageText ,
69+ message : formatString ( additionalPageData . ResultsPageText , req . body . envelopeId ) ,
6970 redirectUrl : restoreEndpoint ,
7071 } ) ;
7172 }
7273} ;
7374
7475/**
75- * Restore the envelope
76+ * Undelete the envelope
7677 * @param {object } req Request obj
7778 * @param {object } res Response obj
7879 */
@@ -96,12 +97,28 @@ eg045DeleteRestoreEnvelope.restoreController = async (req, res) => {
9697 folderId : restoreFolderId ,
9798 fromFolderId : deleteFolderId ,
9899 } ;
100+ const folderName = req . body . folderName ;
101+ let folderId = '' ;
102+
103+ const example = getExampleByNumber ( res . locals . manifest , exampleNumber , api ) ;
99104
100105 // Step 2. Call the worker method
101106 let results = null ;
102-
103107 try {
104- results = await moveEnvelope ( args ) ;
108+ const folders = await getFolders ( args ) ;
109+ folderId = getFolderIdByName ( folders . folders , folderName ) ;
110+
111+ if ( ! folderId ) {
112+ const additionalPageData = example . AdditionalPage . find ( page => page . Name === 'folder_does_not_exist' ) ;
113+ return res . render ( 'pages/example_done' , {
114+ title : example . ExampleName ,
115+ message : formatString ( additionalPageData . ResultsPageText , folderName ) ,
116+ redirectUrl : restoreEndpoint ,
117+ } ) ;
118+
119+ }
120+
121+ results = await moveEnvelope ( { ...args , folderId } ) ;
105122 } catch ( error ) {
106123 const errorBody = error && error . response && error . response . body ;
107124 // we can pull the DocuSign error code and message from the response body
@@ -112,10 +129,9 @@ eg045DeleteRestoreEnvelope.restoreController = async (req, res) => {
112129 res . render ( 'pages/error' , { err : error , errorCode, errorMessage} ) ;
113130 }
114131 if ( results ) {
115- const example = getExampleByNumber ( res . locals . manifest , exampleNumber , api ) ;
116132 res . render ( 'pages/example_done' , {
117133 title : example . ExampleName ,
118- message : example . ResultsPageText ,
134+ message : formatString ( example . ResultsPageText , req . session . envelopeId , folderId , folderName ) ,
119135 } ) ;
120136 }
121137} ;
0 commit comments