forked from docusign/code-examples-csharp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEg06CreateExternalFormFillSessionController.cs
142 lines (117 loc) · 5.38 KB
/
Eg06CreateExternalFormFillSessionController.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
using DocuSign.CodeExamples.Common;
using DocuSign.CodeExamples.Controllers;
using DocuSign.CodeExamples.Models;
using DocuSign.CodeExamples.Rooms.Models;
using DocuSign.Rooms.Api;
using DocuSign.Rooms.Client;
using DocuSign.Rooms.Model;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace DocuSign.CodeExamples.Rooms.Controllers
{
[Area("Rooms")]
[Route("Eg06")]
public class Eg06CreateExternalFormFillSessionController : EgController
{
public Eg06CreateExternalFormFillSessionController(
DSConfiguration dsConfig,
IRequestItemsService requestItemsService) : base(dsConfig, requestItemsService)
{
}
public override string EgName => "Eg06";
[BindProperty]
public RoomDocumentModel RoomDocumentModel { get; set; }
protected override void InitializeInternal()
{
RoomDocumentModel = new RoomDocumentModel();
}
[MustAuthenticate]
[HttpGet]
public override IActionResult Get()
{
base.Get();
// Step 1. Obtain your OAuth token
string accessToken = RequestItemsService.User.AccessToken; // Represents your {ACCESS_TOKEN}
var basePath = $"{RequestItemsService.Session.RoomsApiBasePath}/restapi"; // Base API path
// Step 2: Construct your API headers
var apiClient = new ApiClient(basePath);
apiClient.Configuration.DefaultHeader.Add("Authorization", "Bearer " + accessToken);
var roomsApi = new RoomsApi(apiClient);
var formLibrariesApi = new FormLibrariesApi(apiClient);
string accountId = RequestItemsService.Session.AccountId; // Represents your {ACCOUNT_ID}
try
{
//Step 3: Get Rooms
RoomSummaryList rooms = roomsApi.GetRooms(accountId);
RoomDocumentModel = new RoomDocumentModel { Rooms = rooms.Rooms };
return View("Eg06", this);
}
catch (ApiException apiException)
{
ViewBag.errorCode = apiException.ErrorCode;
ViewBag.errorMessage = apiException.Message;
return View("Error");
}
}
[MustAuthenticate]
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult SelectRoom(RoomDocumentModel roomDocumentModel)
{
// Step 1. Obtain your OAuth token
string accessToken = RequestItemsService.User.AccessToken; // Represents your {ACCESS_TOKEN}
var basePath = $"{RequestItemsService.Session.RoomsApiBasePath}/restapi"; // Base API path
// Step 2: Construct your API headers
var apiClient = new ApiClient(basePath);
apiClient.Configuration.DefaultHeader.Add("Authorization", "Bearer " + accessToken);
var roomsApi = new RoomsApi(apiClient);
string accountId = RequestItemsService.Session.AccountId; // Represents your {ACCOUNT_ID}
try
{
//Step 3: Get Room Documents
RoomDocumentList documents = roomsApi.GetDocuments(accountId, roomDocumentModel.RoomId);
RoomDocumentModel.Documents = documents.Documents;
return View("Eg06", this);
}
catch (ApiException apiException)
{
ViewBag.errorCode = apiException.ErrorCode;
ViewBag.errorMessage = apiException.Message;
return View("Error");
}
}
[MustAuthenticate]
[Route("ExportData")]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ExportData(RoomDocumentModel roomDocumentModel)
{
// Step 1. Obtain your OAuth token
string accessToken = RequestItemsService.User.AccessToken; // Represents your {ACCESS_TOKEN}
var basePath = $"{RequestItemsService.Session.RoomsApiBasePath}/restapi"; // Base API path
// Step 2: Construct your API headers
var apiClient = new ApiClient(basePath);
apiClient.Configuration.DefaultHeader.Add("Authorization", "Bearer " + accessToken);
var roomsApi = new RoomsApi(apiClient);
var externalFormFillSessionsApi = new ExternalFormFillSessionsApi(apiClient);
string accountId = RequestItemsService.Session.AccountId; // Represents your {ACCOUNT_ID}
try
{
// Step 3: Call the Rooms API to create external form fill session
ExternalFormFillSession url = externalFormFillSessionsApi.CreateExternalFormFillSession(
accountId,
new ExternalFormFillSessionForCreate(roomDocumentModel.DocumentId.ToString(), roomDocumentModel.RoomId));
ViewBag.h1 = "External form fill sessions was successfully created";
ViewBag.message = $"To fill the form, navigate following URL: <a href='{url.Url}' target='_blank'>Fill the form</a>";
ViewBag.Locals.Json = JsonConvert.SerializeObject(url, Formatting.Indented);
return View("example_done");
}
catch (ApiException apiException)
{
ViewBag.errorCode = apiException.ErrorCode;
ViewBag.errorMessage = apiException.Message;
return View("Error");
}
}
}
}