forked from docusign/code-examples-csharp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEg04AddingFormToRoomController.cs
More file actions
129 lines (109 loc) · 4.86 KB
/
Eg04AddingFormToRoomController.cs
File metadata and controls
129 lines (109 loc) · 4.86 KB
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
using System;
using System.Collections.Generic;
using System.Linq;
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;
using ApiError = DocuSign.Rooms.Model.ApiError;
namespace DocuSign.CodeExamples.Rooms.Controllers
{
[Area("Rooms")]
[Route("Eg04")]
public class Eg04AddingFormToRoomController : EgController
{
public Eg04AddingFormToRoomController(
DSConfiguration dsConfig,
IRequestItemsService requestItemsService) : base(dsConfig, requestItemsService)
{
}
public override string EgName => "Eg04";
[BindProperty]
public RoomFormModel RoomFormModel { get; set; }
protected override void InitializeInternal()
{
RoomFormModel = new RoomFormModel();
}
[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 Forms Libraries
FormLibrarySummaryList formLibraries = formLibrariesApi.GetFormLibraries(accountId);
//Step 4: Get Forms
FormSummaryList forms = new FormSummaryList(new List<FormSummary>());
if (formLibraries.FormsLibrarySummaries.Any())
{
forms = formLibrariesApi.GetFormLibraryForms(
accountId,
formLibraries.FormsLibrarySummaries.First().FormsLibraryId);
}
//Step 5: Get Rooms
RoomSummaryList rooms = roomsApi.GetRooms(accountId);
RoomFormModel = new RoomFormModel { Forms = forms.Forms, Rooms = rooms.Rooms };
return View("Eg04", this);
}
catch (ApiException apiException)
{
ViewBag.errorCode = apiException.ErrorCode;
ViewBag.errorMessage = apiException.Message;
ApiError error = JsonConvert.DeserializeObject<ApiError>(apiException.ErrorContent);
if (error.ErrorCode.Equals("FORMS_INTEGRATION_NOT_ENABLED", StringComparison.InvariantCultureIgnoreCase))
{
return View("ExampleNotAvailable");
}
return View("Error");
}
}
[MustAuthenticate]
[Route("ExportData")]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ExportData(RoomFormModel roomFormModel)
{
// 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: Call the Rooms API to add form to a room
RoomDocument roomDocument = roomsApi.AddFormToRoom(
accountId,
roomFormModel.RoomId,
new FormForAdd(roomFormModel.FormId));
ViewBag.h1 = "The form was successfully added to a room";
ViewBag.message = $"Results from the Rooms: AddFormToRoom method. RoomId: {roomFormModel.RoomId}, FormId: {roomFormModel.FormId} :";
ViewBag.Locals.Json = JsonConvert.SerializeObject(roomDocument, Formatting.Indented);
return View("example_done");
}
catch (ApiException apiException)
{
ViewBag.errorCode = apiException.ErrorCode;
ViewBag.errorMessage = apiException.Message;
return View("Error");
}
}
}
}