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));
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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: ");
        }