public async Task <ActionResult> StarteSealTspFlow([FromQuery(Name = "env_slt")] string envSlt) { // First step is to get a token with the retrieve friom the query param SignatureOAuthUserToken signatureOAuthUserToken; try { signatureOAuthUserToken = await DocuSignService.GetBearerTokenFromEnvSltAsync(_httpClientFactory, _dsConfig, envSlt); } catch (Exception e) { // If you ending up in this case, make sure you clientId/clientSecret are good // Also make sure you are hitting the right environement return(BadRequest(e)); } // Initialize DocuSign ApiClient var apiClient = new eSign.Client.ApiClient(signatureOAuthUserToken.user_api + "/restapi"); apiClient.Configuration.AddDefaultHeader("Authorization", "Bearer " + signatureOAuthUserToken.access_token); DocuSign.eSign.Api.SignatureApi signatureApi = new eSign.Api.SignatureApi(apiClient); // UserInfo var userInfoResult = signatureApi.UserInfo(); UserCertificate userCertificate = new UserCertificate(userInfoResult.User.DisplayName, userInfoResult.User.Email, userInfoResult.Language.ToUpper(), "DocuSign"); var SignHashSessionInfoResult = signatureApi.SignHashSessionInfo(new eSign.Model.SignSessionInfoRequest(Convert.ToBase64String(userCertificate.CertContainer.Certificate.GetEncoded()))); if (SignHashSessionInfoResult.Documents[0] == null || SignHashSessionInfoResult.Documents[0].RemainingSignatures == 0L) { return(Ok("Nothing to sign")); } byte[] hashBytes = System.Convert.FromBase64String(SignHashSessionInfoResult.Documents[0].Data); byte[] signedCmsData = SignatureProvider.SignatureProvider.Sign(hashBytes, userCertificate); eSign.Model.DocumentUpdateInfo docInfo = new eSign.Model.DocumentUpdateInfo() { DocumentId = SignHashSessionInfoResult.Documents[0].DocumentId, Data = Convert.ToBase64String(signedCmsData), ReturnFormat = "CMS" }; var CompleteSignHashResult = signatureApi.CompleteSignHash(new eSign.Model.CompleteSignRequest() { DocumentUpdateInfos = new List <eSign.Model.DocumentUpdateInfo> { docInfo } }); ViewBag.CompleteResult = CompleteSignHashResult; return(Redirect(CompleteSignHashResult.RedirectionUrl)); }
public static void uploadDocument(IDictionary <string, string> localParams, string envelopeId, string documentId, DocumentOptions options, string docClass, string docType) { Log.Info("Environment : " + localParams[EnvelopeMetaFields.Environment] + " - Account Id : " + localParams[EnvelopeMetaFields.AccountId] + " - Envelope Id : " + envelopeId + " - document Id : " + documentId + " - Option : " + options); //Now retrieve the documents for the given envelope from the accountId hosted in environment as combined MemoryStream docStream = DocuSignService.GetDocument(localParams[EnvelopeMetaFields.Environment], localParams[EnvelopeMetaFields.AccountId], envelopeId, documentId, options); // Now upload the bytes for the document that we just retrieved in cm byte[] buffer = ServiceUtil.ReadFully(docStream); string exFolderUri = exFolderUri = ConfigurationManager.AppSettings["exFolderUri"]; AuthenticationData authData = CMWebServiceClient.setupAuthData(); MTOMAttachment[] mtomAttachment = CMWebServiceClient.setupAttachments(new string[, ] { { "doc", "application/pdf" } }, buffer); //check for cach //check for hangfire flag ObjectCache cache = MemoryCache.Default; string cacheItemUri = cache["cacheItemUri"] as string; string itemUri = null; if (cacheItemUri == null) { CacheItemPolicy policy = new CacheItemPolicy(); policy.AbsoluteExpiration = DateTime.Now.AddHours(36); itemUri = CMWebServiceClient.createItem(authData, mtomAttachment, docClass, docType, localParams[EnvelopeMetaFields.EID], localParams[EnvelopeMetaFields.FirstName], localParams[EnvelopeMetaFields.LastName]); cacheItemUri = itemUri; cache.Set("cacheItemUrl", cacheItemUri, policy); Log.Info("Cache Value for : " + envelopeId + " is : " + cacheItemUri); } //setcach //set a hangfire flag Log.Info("The Following CM Item was Created. Item Uri :: " + itemUri); string folderUri = CMWebServiceClient.getItemUri(authData, "HrEmpFolder", localParams[EnvelopeMetaFields.EID]); if (folderUri == null) { CMWebServiceClient.addItemToFolder(authData, exFolderUri, itemUri); Log.Info("No Folder Matching the Employee ID was found. Item was placed in the following Exception Folder - Folder URI :: " + folderUri); } else { CMWebServiceClient.addItemToFolder(authData, folderUri, itemUri); Log.Info("Item was placed in the following Folder - Folder URI ::" + folderUri); } }
public async Task OnGetAsync(string authorizationCode) { // First step is to get a token with the retrieve friom the query param try { SignatureOAuthUserToken = await DocuSignService.GetBearerTokenFromCodeAsync(_httpClientFactory, _dsConfig, authorizationCode); } catch (Exception e) { // If you ending up in this case, make sure you clientId/clientSecret are good // Also make sure you are hitting the right environement ViewData["Error"] = e; } // Initialize DocuSign ApiClient var apiClient = new eSign.Client.ApiClient(SignatureOAuthUserToken.user_api + "/restapi"); apiClient.Configuration.AddDefaultHeader("Authorization", "Bearer " + SignatureOAuthUserToken.access_token); DocuSign.eSign.Api.SignatureApi signatureApi = new eSign.Api.SignatureApi(apiClient); // Get UserInfo var userInfoResponse = signatureApi.UserInfo(); ViewData["UserInfo"] = JsonConvert.SerializeObject(userInfoResponse); UserCertificate userCertificate = new UserCertificate(UserInfoResponse.User.DisplayName, UserInfoResponse.User.Email, UserInfoResponse.Language.ToUpper(), "DocuSign"); //var SignHashSessionInfoResult = signatureApi.SignHashSessionInfo(new eSign.Model.SignSessionInfoRequest(Convert.ToBase64String(userCertificate.CertContainer.Certificate.GetEncoded()))); //if (SignHashSessionInfoResult.Documents[0] == null || SignHashSessionInfoResult.Documents[0].RemainingSignatures == "0") //{ // return Ok("Nothing to sign"); //} //byte[] hashBytes = System.Convert.FromBase64String(SignHashSessionInfoResult.Documents[0].Data); //byte[] signedCmsData = SignatureProvider.SignatureProvider.Sign(hashBytes, userCertificate); //eSign.Model.DocumentUpdateInfo docInfo = new eSign.Model.DocumentUpdateInfo() //{ // DocumentId = SignHashSessionInfoResult.Documents[0].DocumentId, // Data = Convert.ToBase64String(signedCmsData), // ReturnFormat = "CMS" //}; //var CompleteSignHashResult = signatureApi.CompleteSignHash(new eSign.Model.CompleteSignRequest() { DocumentUpdateInfos = new List<eSign.Model.DocumentUpdateInfo> { docInfo } }); //ViewBag.CompleteResult = CompleteSignHashResult; //return Redirect(CompleteSignHashResult.RedirectionUrl); }
public static void uploadDocument(IDictionary <string, string> localParams, string envelopeId, string documentId, DocumentOptions options) { //Now retrieve the documents for the given envelope from the accountId hosted in environment as combined MemoryStream docStream = DocuSignService.GetDocument(localParams[EnvelopeMetaFields.Environment], localParams[EnvelopeMetaFields.AccountId], envelopeId, documentId, options); // Now upload the bytes for teh document that we just retrieved in Documentum byte[] buffer = ServiceUtil.ReadFully(docStream); var response = DocumentumService.uploadDocument(localParams, buffer); Log.Debug("Properties created: "); }