protected void createEnvelope()
    {
        FileStream fs = null;

        try
        {
            String userName = ConfigurationManager.AppSettings["API.Email"];
            String password = ConfigurationManager.AppSettings["API.Password"];
            String integratorKey = ConfigurationManager.AppSettings["API.IntegratorKey"];


            String auth = "<DocuSignCredentials><Username>" + userName
                + "</Username><Password>" + password
                + "</Password><IntegratorKey>" + integratorKey
                + "</IntegratorKey></DocuSignCredentials>";
            ServiceReference1.DSAPIServiceSoapClient client = new ServiceReference1.DSAPIServiceSoapClient();

            using (OperationContextScope scope = new System.ServiceModel.OperationContextScope(client.InnerChannel))
            {
                HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
                httpRequestProperty.Headers.Add("X-DocuSign-Authentication", auth);
                OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;

                CompositeTemplate template = new CompositeTemplate();

                // Set up the envelope
                EnvelopeInformation envInfo = new EnvelopeInformation();
                envInfo.AutoNavigation = true;
                envInfo.AccountId = ConfigurationManager.AppSettings["API.AccountId"];
                envInfo.Subject = "Dynamic Fields Example";

                // Set up recipients 
                Recipient[] recipients;
                if (jointEmail.Value.Trim().Equals(""))
                {
                    recipients = new Recipient[1];
                }
                else
                {
                    recipients = new Recipient[2];
                }

                recipients[0] = new Recipient();
                recipients[0].ID = "1";
                recipients[0].Email = email.Value;
                recipients[0].Type = RecipientTypeCode.Signer;
                recipients[0].UserName = firstname.Value + " " + lastname.Value;
                recipients[0].CaptiveInfo = new RecipientCaptiveInfo();

                recipients[0].CaptiveInfo.ClientUserId = RandomizeClientUserID();
                recipients[0].RoutingOrder = 1;
                recipients[0].RoleName = "Signer1";

                // If there is a 2nd recipient, configure 
                if (!jointEmail.Value.Equals(""))
                {
                    recipients[1] = new Recipient();
                    recipients[1].ID = "2";
                    recipients[1].Email = jointEmail.Value;
                    recipients[1].Type = RecipientTypeCode.Signer;
                    recipients[1].UserName = jointFirstname.Value + " " + jointLastname.Value;
                    recipients[1].RoleName = "Signer2";
                    recipients[1].RoutingOrder = 1;
                }

                //Configure the inline templates 
                InlineTemplate inlineTemplate = new InlineTemplate();
                inlineTemplate.Sequence = "1";
                inlineTemplate.Envelope = new Envelope();
                inlineTemplate.Envelope.Recipients = recipients;
                inlineTemplate.Envelope.AccountId = ConfigurationManager.AppSettings["API.AccountId"];

                // Initialize tab properties 
                Tab tab = new Tab();
                tab.Type = TabTypeCode.SignHere;
                tab.XPosition = xPosition.Value;
                tab.YPosition = yPosition.Value;
                tab.TabLabel = tabName.Value;
                tab.RecipientID = "1";
                tab.DocumentID = "1";
                tab.Name = tabName.Value;
                tab.PageNumber = tabPage.Value;

                Tab tab2 = new Tab();
                tab2.Type = TabTypeCode.DateSigned;

                tab2.XPosition = xPosition2.Value;
                tab2.YPosition = yPosition2.Value;
                tab2.TabLabel = tabName2.Value;
                tab2.RecipientID = "1";
                tab2.DocumentID = "1";
                tab2.Name = tabName2.Value;
                tab2.PageNumber = tabPage2.Value;

                inlineTemplate.Envelope.Tabs = new Tab[] { tab, tab2 };

                template.InlineTemplates = new InlineTemplate[] { inlineTemplate };


                // Configure the document
                template.Document = new Document();
                template.Document.ID = "1";
                template.Document.Name = "Sample Document";
                BinaryReader binReader = null;
                String filename = uploadFile.Value;
                if (File.Exists(Server.MapPath("~/App_Data/" + filename)))
                {
                    fs = new FileStream(Server.MapPath("~/App_Data/" + filename), FileMode.Open);
                    binReader = new BinaryReader(fs);
                }
                byte[] PDF = binReader.ReadBytes(System.Convert.ToInt32(fs.Length));
                template.Document.PDFBytes = PDF;

                template.Document.TransformPdfFields = true;
                template.Document.FileExtension = "pdf";

                //Create envelope with all the composite template information 
                EnvelopeStatus status = client.CreateEnvelopeFromTemplatesAndForms(envInfo, new CompositeTemplate[] { template }, true);
                RequestRecipientTokenAuthenticationAssertion assert = new RequestRecipientTokenAuthenticationAssertion();
                assert.AssertionID = "12345";
                assert.AuthenticationInstant = DateTime.Now;
                assert.AuthenticationMethod = RequestRecipientTokenAuthenticationAssertionAuthenticationMethod.Password;
                assert.SecurityDomain = "www.magicparadigm.com";

                RequestRecipientTokenClientURLs clientURLs = new RequestRecipientTokenClientURLs();

                clientURLs.OnAccessCodeFailed = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnAccessCodeFailed";
                clientURLs.OnCancel = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnCancel";
                clientURLs.OnDecline = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnDecline";
                clientURLs.OnException = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnException";
                clientURLs.OnFaxPending = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnFaxPending";
                clientURLs.OnIdCheckFailed = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnIdCheckFailed";
                clientURLs.OnSessionTimeout = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnSessionTimeout";
                clientURLs.OnTTLExpired = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnTTLExpired";
                clientURLs.OnViewingComplete = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnViewingComplete";


                String url = Request.Url.AbsoluteUri;

                String recipientToken;

                clientURLs.OnSigningComplete = url.Substring(0, url.LastIndexOf("/")) + "/EmbeddedSigningComplete0.aspx?envelopeID=" + status.EnvelopeID;
                recipientToken = client.RequestRecipientToken(status.EnvelopeID, recipients[0].CaptiveInfo.ClientUserId, recipients[0].UserName, recipients[0].Email, assert, clientURLs);
                Session["envelopeID"] = status.EnvelopeID;
                if (!Request.Browser.Browser.Equals("InternetExplorer") && (!Request.Browser.Browser.Equals("Safari")))
                {
                    docusignFrame.Visible = true;
                    docusignFrame.Src = recipientToken;
                }
                else // Handle IE differently since it does not allow dynamic setting of the iFrame width and height
                {
                    docusignFrameIE.Visible = true;
                    docusignFrameIE.Src = recipientToken;
                }


            }
        }
        catch (Exception ex)
        {
            // Log4Net Piece
            log4net.ILog logger = log4net.LogManager.GetLogger(typeof(DynamicFields));
            logger.Info("\n----------------------------------------\n");
            logger.Error(ex.Message);
            logger.Error(ex.StackTrace);
            Response.Write(ex.Message);

        }
        finally
        {
            if (fs != null)
                fs.Close();
        }
    }
예제 #2
0
        private EnvelopeDefinition MakeEnvelope(string signerEmail, string signerName, string ccEmail,
                                                string ccName, string item, string quantity)
        {
            // Data for this method
            // signerEmail
            // signerName
            // ccEmail
            // ccName
            // item
            // quantity
            // signerClientId -- class global


            // The envelope request object uses Composite Template to
            // include in the envelope:
            // 1. A template stored on the DocuSign service
            // 2. An additional document which is a custom HTML source document

            // Create Recipients for server template. Note that Recipients object
            // is used, not TemplateRole
            //
            // Create a signer recipient for the signer role of the server template
            Signer signer1 = new Signer
            {
                Email       = signerEmail,
                Name        = signerName,
                RoleName    = "signer",
                RecipientId = "1",
                // Adding clientUserId transforms the template recipient
                // into an embedded recipient:
                ClientUserId = signerClientId
            };
            // Create the cc recipient
            CarbonCopy cc1 = new CarbonCopy
            {
                Email       = ccEmail,
                Name        = ccName,
                RoleName    = "cc",
                RecipientId = "2"
            };
            // Recipients object:
            Recipients recipientsServerTemplate = new Recipients
            {
                CarbonCopies = new List <CarbonCopy> {
                    cc1
                },
                Signers = new List <Signer> {
                    signer1
                }
            };

            // create a composite template for the Server Template
            CompositeTemplate compTemplate1 = new CompositeTemplate
            {
                CompositeTemplateId = "1"
            };
            ServerTemplate serverTemplates = new ServerTemplate
            {
                Sequence   = "1",
                TemplateId = RequestItemsService.TemplateId
            };

            compTemplate1.ServerTemplates = new List <ServerTemplate> {
                serverTemplates
            };
            // Add the roles via an inlineTemplate
            InlineTemplate inlineTemplate = new InlineTemplate
            {
                Sequence   = "1",
                Recipients = recipientsServerTemplate
            };

            compTemplate1.InlineTemplates = new List <InlineTemplate> {
                inlineTemplate
            };
            // The signer recipient for the added document with
            // a tab definition:
            SignHere signHere1 = new SignHere
            {
                AnchorString  = "**signature_1**",
                AnchorYOffset = "10",
                AnchorUnits   = "pixels",
                AnchorXOffset = "20"
            };

            Tabs signer1Tabs = new Tabs
            {
                SignHereTabs = new List <SignHere> {
                    signHere1
                }
            };
            // Signer definition for the added document
            Signer signer1AddedDoc = new Signer
            {
                Email        = signerEmail,
                Name         = signerName,
                ClientUserId = signerClientId,
                RoleName     = "signer",
                RecipientId  = "1",
                Tabs         = signer1Tabs
            };
            // Recipients object for the added document:
            Recipients recipientsAddedDoc = new Recipients
            {
                CarbonCopies = new List <CarbonCopy> {
                    cc1
                },
                Signers = new List <Signer> {
                    signer1AddedDoc
                }
            };

            // create the HTML document
            Document doc1 = new Document();

            String doc1b64 = Convert.ToBase64String(document1(signerEmail, signerName, ccEmail, ccName, item, quantity));

            doc1.DocumentBase64 = doc1b64;
            doc1.Name           = "Appendix 1--Sales order"; // can be different from actual file name
            doc1.FileExtension  = "html";
            doc1.DocumentId     = "1";
            // create a composite template for the added document
            CompositeTemplate compTemplate2 = new CompositeTemplate
            {
                CompositeTemplateId = "2"
            };
            // Add the recipients via an inlineTemplate
            InlineTemplate inlineTemplate2 = new InlineTemplate
            {
                Sequence   = "2",
                Recipients = recipientsAddedDoc
            };

            compTemplate2.InlineTemplates = new List <InlineTemplate> {
                inlineTemplate2
            };
            compTemplate2.Document = doc1;

            EnvelopeDefinition env = new EnvelopeDefinition
            {
                Status             = "sent",
                CompositeTemplates = new List <CompositeTemplate> {
                    compTemplate1, compTemplate2
                }
            };

            return(env);
        }
예제 #3
0
    protected void createEnvelope()
    {
        // Set up the envelope
        CreateEnvelopeRequest createEnvelopeRequest = new CreateEnvelopeRequest();

        createEnvelopeRequest.emailSubject = "Template Example";
        createEnvelopeRequest.status       = "sent";
        createEnvelopeRequest.emailBlurb   = "Example of how template functionality works";

        // Define first signer
        Signer signer = new Signer();

        signer.email        = email.Value;
        signer.name         = firstname.Value + " " + lastname.Value;
        signer.recipientId  = 1;
        signer.routingOrder = "1";
        signer.roleName     = "Signer1";
        signer.clientUserId = RandomizeClientUserID();  // First signer is embedded

        // Add tabs for the signer
        signer.tabs = new Tabs();
        signer.tabs.signHereTabs = new List <SignHereTab>();
        SignHereTab signHereTab = new SignHereTab();

        signHereTab.documentId   = "1";
        signHereTab.tabId        = "1";
        signHereTab.anchorString = tab1AnchorText.Value;
        signHereTab.name         = tabName.Value;
        signer.tabs.signHereTabs.Add(signHereTab);

        signer.tabs.dateSignedTabs = new List <DateSignedTab>();
        DateSignedTab dateSignedTab = new DateSignedTab();

        dateSignedTab.documentId   = "1";
        dateSignedTab.tabId        = "2";
        dateSignedTab.anchorString = tab2AnchorText.Value;
        dateSignedTab.name         = tab2Name.Value;
        signer.tabs.dateSignedTabs.Add(dateSignedTab);

        // Define a document
        Document document = new Document();

        document.documentId         = "1";
        document.name               = "Sample Form";
        document.transformPdfFields = "true";

        // Define an inline template
        InlineTemplate inline1 = new InlineTemplate();

        inline1.sequence           = "2";
        inline1.recipients         = new Recipients();
        inline1.recipients.signers = new List <Signer>();
        inline1.recipients.signers.Add(signer);


        // Add the inline template to a CompositeTemplate
        CompositeTemplate compositeTemplate1 = new CompositeTemplate();

        compositeTemplate1.inlineTemplates = new List <InlineTemplate>();
        compositeTemplate1.inlineTemplates.Add(inline1);
        compositeTemplate1.document = document;

        // Add compositeTemplate to the envelope
        createEnvelopeRequest.compositeTemplates = new List <CompositeTemplate>();
        createEnvelopeRequest.compositeTemplates.Add(compositeTemplate1);


        string output = JsonConvert.SerializeObject(createEnvelopeRequest);

        // Specify a unique boundary string that doesn't appear in the json or document bytes.
        string Boundary = "MY_BOUNDARY";

        // Set the URI
        HttpWebRequest request = HttpWebRequest.Create(ConfigurationManager.AppSettings["DocuSignServer"] + "/restapi/v2/accounts/" + ConfigurationManager.AppSettings["API.TemplatesAccountID"] + "/envelopes") as HttpWebRequest;

        // Set the method
        request.Method = "POST";

        // Set the authentication header
        request.Headers["X-DocuSign-Authentication"] = GetSecurityHeader();

        // Set the overall request content type aand boundary string
        request.ContentType = "multipart/form-data; boundary=" + Boundary;
        request.Accept      = "application/json";

        // Start forming the body of the request
        Stream reqStream = request.GetRequestStream();

        // write boundary marker between parts
        WriteStream(reqStream, "\n--" + Boundary + "\n");

        // write out the json envelope definition part
        WriteStream(reqStream, "Content-Type: application/json\n");
        WriteStream(reqStream, "Content-Disposition: form-data\n");
        WriteStream(reqStream, "\n"); // requires an empty line between the header and the json body
        WriteStream(reqStream, output);

        // write out the form bytes for the first form
        WriteStream(reqStream, "\n--" + Boundary + "\n");
        WriteStream(reqStream, "Content-Type: application/pdf\n");
        WriteStream(reqStream, "Content-Disposition: file; filename=\"Sample_Form\"; documentId=1\n");
        WriteStream(reqStream, "\n");
        String filename = uploadFile.Value;

        if (File.Exists(Server.MapPath("~/App_Data/" + filename)))
        {
            // Read the file contents and write them to the request stream
            byte[] buf = new byte[4096];
            int    len;
            // read contents of document into the request stream
            FileStream fileStream = File.OpenRead(Server.MapPath("~/App_Data/" + filename));
            while ((len = fileStream.Read(buf, 0, 4096)) > 0)
            {
                reqStream.Write(buf, 0, len);
            }
            fileStream.Close();
        }


        // wrte the end boundary marker - ensure that it is on its own line
        WriteStream(reqStream, "\n--" + Boundary + "--");
        WriteStream(reqStream, "\n");

        try
        {
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;

            if (response.StatusCode == HttpStatusCode.Created)
            {
                byte[] responseBytes = new byte[response.ContentLength];
                using (var reader = new System.IO.BinaryReader(response.GetResponseStream()))
                {
                    reader.Read(responseBytes, 0, responseBytes.Length);
                }
                string responseText = Encoding.UTF8.GetString(responseBytes);
                CreateEnvelopeResponse createEnvelopeResponse = new CreateEnvelopeResponse();

                createEnvelopeResponse = JsonConvert.DeserializeObject <CreateEnvelopeResponse>(responseText);
                if (createEnvelopeResponse.status.Equals("sent"))
                {
                    // Now that we have created the envelope, get the recipient token for the first signer
                    String url = Request.Url.AbsoluteUri;
                    RecipientViewRequest recipientViewRequest = new RecipientViewRequest();
                    recipientViewRequest.authenticationMethod = "email";
                    recipientViewRequest.clientUserId         = signer.clientUserId;
                    recipientViewRequest.email = email.Value;
                    if (!Request.Browser.IsMobileDevice)
                    {
                        recipientViewRequest.returnUrl = url.Substring(0, url.LastIndexOf("/")) + "/EmbeddedSigningComplete0.aspx?envelopeID=" + createEnvelopeResponse.envelopeId;
                    }
                    else
                    {
                        recipientViewRequest.returnUrl = url.Substring(0, url.LastIndexOf("/")) + "/ConfirmationPage.aspx?envelopeID=" + createEnvelopeResponse.envelopeId;
                    }
                    recipientViewRequest.userName = firstname.Value + " " + lastname.Value;

                    HttpWebRequest request2 = HttpWebRequest.Create(ConfigurationManager.AppSettings["DocuSignServer"] + "/restapi/v2/accounts/" + ConfigurationManager.AppSettings["API.TemplatesAccountID"] + "/envelopes/" + createEnvelopeResponse.envelopeId + "/views/recipient") as HttpWebRequest;
                    request2.Method = "POST";

                    // Set the authenticationheader
                    request2.Headers["X-DocuSign-Authentication"] = GetSecurityHeader();

                    request2.Accept      = "application/json";
                    request2.ContentType = "application/json";

                    Stream reqStream2 = request2.GetRequestStream();

                    WriteStream(reqStream2, JsonConvert.SerializeObject(recipientViewRequest));
                    HttpWebResponse response2 = request2.GetResponse() as HttpWebResponse;

                    responseBytes = new byte[response2.ContentLength];
                    using (var reader = new System.IO.BinaryReader(response2.GetResponseStream()))
                    {
                        reader.Read(responseBytes, 0, responseBytes.Length);
                    }
                    string response2Text = Encoding.UTF8.GetString(responseBytes);

                    RecipientViewResponse recipientViewResponse = new RecipientViewResponse();
                    recipientViewResponse = JsonConvert.DeserializeObject <RecipientViewResponse>(response2Text);
                    Session.Add("envelopeID", createEnvelopeResponse.envelopeId);

                    // If it's a non-touch aware device, show the signing session in an iFrame
                    if (!Request.Browser.IsMobileDevice)
                    {
                        if (!Request.Browser.Browser.Equals("InternetExplorer") && (!Request.Browser.Browser.Equals("Safari")))
                        {
                            docusignFrame.Visible = true;
                            docusignFrame.Src     = recipientViewResponse.url;
                        }
                        else // Handle IE differently since it does not allow dynamic setting of the iFrame width and height
                        {
                            docusignFrameIE.Visible = true;
                            docusignFrameIE.Src     = recipientViewResponse.url;
                        }
                    }
                    // For touch aware devices, show the signing session in main browser window
                    else
                    {
                        Response.Redirect(recipientViewResponse.url);
                    }
                }
            }
        }
        catch (WebException ex)
        {
            if (ex.Status == WebExceptionStatus.ProtocolError)
            {
                HttpWebResponse response = (HttpWebResponse)ex.Response;
                using (var reader = new System.IO.StreamReader(ex.Response.GetResponseStream(), UTF8Encoding.UTF8))
                {
                    string       errorMess = reader.ReadToEnd();
                    log4net.ILog logger    = log4net.LogManager.GetLogger(typeof(demos_AnchorTextREST));
                    logger.Info("\n----------------------------------------\n");
                    logger.Error("DocuSign Error: " + errorMess);
                    logger.Error(ex.StackTrace);
                    Response.Write(ex.Message);
                }
            }
            else
            {
                log4net.ILog logger = log4net.LogManager.GetLogger(typeof(demos_AnchorTextREST));
                logger.Info("\n----------------------------------------\n");
                logger.Error("WebRequest Error: " + ex.Message);
                logger.Error(ex.StackTrace);
                Response.Write(ex.Message);
            }
        }
    }
예제 #4
0
        public static EnvelopeSummary RequestStudentSignatureFromTemplate(Student student)
        {
            // instantiate api client with appropriate environment (for production change to www.docusign.net/restapi)
            //configureApiClient("https://na2.docusign.net/restapi");
            configureApiClient("https://demo.docusign.net/restapi");


            // var envID = envDef.EnvelopeId;
            //AUA --> DME --> ?PRECEPTOR?

            var envDef = new EnvelopeDefinition {
                CompositeTemplates = new List <CompositeTemplate>()
            };

            // studentSigner = CreateSigner(student.StudentEmailSchool, student.StudentName, templateRoleName, routingOrder, recipientId);

            Signer studentSigner   = new Signer();
            Signer preceptorSigner = new Signer();
            Signer DMESigner       = new Signer();
            Signer signer          = new Signer();

            Agent      agent  = new Agent();
            CarbonCopy DME_CC = new CarbonCopy();


            SetEnvelopeReminders(student, envDef);


            string formName = "";

            //Assign the correct template
            //Adds all controls to List<Recipients>

            //Make a list of forms to
            var formsList = new List <string>();

            // if Student
            formsList.Add("1");
            //formsList.Add("2");
            //formsList.Add("4");

            // if DME/Preceptor
            //formsList.Add("3");
            //formsList.Add("5");

            int i = 1;

            foreach (string form in formsList)
            {
                CompositeTemplate ct = new CompositeTemplate
                {
                    ServerTemplates = new List <ServerTemplate>(),
                    InlineTemplates = new List <InlineTemplate>()
                };


                ServerTemplate st = new ServerTemplate();  //??

                InlineTemplate it = new InlineTemplate
                {
                    Recipients = new Recipients(),
                    Documents  = new List <Document>()
                };

                st.Sequence = i.ToString();

                ct.ServerTemplates.Add(st);

                Recipients r = new Recipients();
                r.Signers = new List <Signer>();

                string documentId = string.Empty;

                switch (form)
                {
                case "1":
                    formName            = "Student Clerkship Evaluation Form";
                    st.TemplateId       = StudentClerkshipEvaluationForm;
                    documentId          = StudentClerkshipEvaluationDocumentId;
                    envDef.EmailBlurb   = "Please complete your Clerkship Evaluation on the last Friday of this rotation.";
                    envDef.EmailSubject = "AUA - Student Clerkship Evaluation Form";
                    studentSigner       = CreateSigner(student.StudentEmailSchool, student.StudentName, "Student", "1", "1");
                    r.Signers.Add(studentSigner);
                    signer = studentSigner;
                    break;

                case "2":
                    formName            = "Student Faculty Evaluation Form";
                    st.TemplateId       = StudentFacultyEvaluationForm;
                    documentId          = "";
                    envDef.EmailBlurb   = "Please complete your Faculty Evaluation on the last Friday of this rotation.";
                    envDef.EmailSubject = "AUA - Student Faculty Evaluation Form";
                    studentSigner       = CreateSigner(student.StudentEmailSchool, student.StudentName, "Student", "1", "1");
                    r.Signers.Add(studentSigner);
                    signer = studentSigner;
                    break;

                case "3":
                    formName            = "Mid Clerkship Assessment Form";
                    st.TemplateId       = MidClerkshipAssessmentForm;
                    documentId          = "";
                    envDef.EmailBlurb   = "Please complete this Mid-Clerkship Assessment Form at the middle of the rotation.";
                    envDef.EmailSubject = "AUA - Mid Clerkship Assessment Form";


                    //DME FIRST (1)
                    //  DMESigner = CreateSigner("*****@*****.**", "Chris Grenard", "DME", "2", "3");
                    //   r.Signers.Add(DMESigner);
                    //  CarbonCopy carbonCopy = new CarbonCopy();
                    DME_CC = CreateCarbonCopy("*****@*****.**", "Chris Grenard", "DME", "2", "3");
                    if (r.CarbonCopies == null)
                    {
                        r.CarbonCopies = new List <CarbonCopy>();
                    }
                    r.CarbonCopies.Add(DME_CC);


                    //BEGIN PRECEPTOR CHECK
                    //If we don't know the preceptor then create agent.

                    //AGENT SECOND (2)
                    agent = CreateAgent("*****@*****.**", "Chris G", "DMEAgent", "1", "4");

                    if (r.Agents == null)
                    {
                        r.Agents = new List <Agent>();
                    }
                    r.Agents.Add(agent);



                    //else Create a precpetor using their ACTUAL INFO***
                    //PRECEP (3)
                    preceptorSigner = CreateSigner("", "", "Preceptor", "3", "1");
                    r.Signers.Add(preceptorSigner);

                    //end if


                    //Student (4)
                    studentSigner = CreateSigner(student.StudentEmailSchool, student.StudentName, "Student", "4", "2");
                    r.Signers.Add(studentSigner);

                    // Commented out b/c I don't need to prepopulate
                    signer = preceptorSigner;
                    break;

                case "4":
                    formName            = "Student Portfolio Form";
                    st.TemplateId       = StudentPortfolioForm;
                    documentId          = "";
                    envDef.EmailBlurb   = "Please complete your Student Portfolio prior to the end of this rotation.";
                    envDef.EmailSubject = "AUA - Student Portfolio";
                    studentSigner       = CreateSigner(student.StudentEmailSchool, student.StudentName, "Student", "1", "1");
                    r.Signers.Add(studentSigner);

                    signer = studentSigner;

                    break;

                case "5":
                    formName            = "Comprehensive Student Clerkship Assessment Form";
                    st.TemplateId       = ComprehensiveStudentClerkshipAssessmentForm;
                    documentId          = "";
                    envDef.EmailBlurb   = "Please complete this Comprehensive Clerkship Assessment Form for each respective student.";
                    envDef.EmailSubject = "AUA - Comprehensive Student Clerkship Assessment Form";
                    preceptorSigner     = CreateSigner("*****@*****.**", "Dr. Gometi", "Preceptor", "1", "2");
                    DMESigner           = CreateSigner("*****@*****.**", "Janes Rice, PHd.", "DME", "2", "3");
                    r.Signers.Add(preceptorSigner);
                    r.Signers.Add(DMESigner);
                    signer = preceptorSigner;
                    break;

                default:
                    break;
                }

                it.Recipients = r;  //might need to change

                it.Sequence = i.ToString();


                Document doc = new Document
                {
                    Name           = formName,
                    DocumentBase64 = CreatePersonalizedForm(student, Convert.ToInt32(form)),
                    DocumentId     = documentId
                };
                //why #2?

                it.Documents.Add(doc);

                ct.InlineTemplates.Add(it);
                envDef.CompositeTemplates.Add(ct);

                #region FormTabs

                /*
                 * The font type used for the information in the tab. Possible values are:
                 * Arial, ArialNarrow, Calibri, CourierNew, Garamond, Georgia, Helvetica, LucidaConsole, Tahoma, TimesNewRoman, Trebuchet, and Verdana.
                 *
                 * The font size used for the information in the tab.
                 * Possible values are: Size7, Size8, Size9, Size10, Size11, Size12, Size14, Size16, Size18, Size20, Size22, Size24, Size26, Size28, Size36, Size48, or Size72.
                 *
                 * The font color used for the information in the tab. Possible values are: Black, BrightBlue, BrightRed, DarkGreen, DarkRed, Gold, Green, NavyBlue, Purple, or White.
                 */

                //Create a List<> for Checkboxes and add them to the collection

                //REFACTOR SOMEDAY INTO NEW METHOD SO WE CAN DYNAMICALLY ASSIGN TABS PER ROLE TYPE...
                signer.Tabs.CheckboxTabs = new List <Checkbox>();

                string core         = "false";
                string elective     = "false";
                string rotationType = "";

                rotationType = student.ClinicalRotation;
                // rotationType = rotationType.ToUpper();

                if (rotationType.ToUpper().Contains("CORE"))
                {
                    core = "true";
                }
                else
                {
                    elective = "true";
                }

                Checkbox chkCore = new Checkbox
                {
                    TabLabel = "chkCore",
                    Selected = core
                };
                signer.Tabs.CheckboxTabs.Add(chkCore);

                Checkbox chkElective = new Checkbox
                {
                    TabLabel = "chkElective",
                    Selected = elective
                };
                signer.Tabs.CheckboxTabs.Add(chkElective);

                Text StudentName = new Text
                {
                    TabLabel = "StudentName",
                    Value    = student.StudentFirstName + " " + student.StudentLastName
                };
                signer.Tabs.TextTabs.Add(StudentName);


                Text CourseId = new Text
                {
                    TabLabel  = "CourseId",
                    Value     = student.CourseId,
                    FontColor = "White"
                };
                signer.Tabs.TextTabs.Add(CourseId);

                Text ClinicalRotationName = new Text
                {
                    TabLabel = "ClinicalRotationName",
                    Value    = student.ClinicalRotation
                };

                signer.Tabs.TextTabs.Add(ClinicalRotationName);

                Text ClinicalRotationSite = new Text
                {
                    TabLabel = "ClinicalRotationSite",
                    Value    = student.ClinicalSite
                };
                signer.Tabs.TextTabs.Add(ClinicalRotationSite);

                Text StartDate = new Text
                {
                    TabLabel = "StartDate",
                    Value    = student.StartDate
                };
                signer.Tabs.TextTabs.Add(StartDate);

                Text EndDate = new Text
                {
                    TabLabel = "EndDate",
                    Value    = student.EndDate
                };
                signer.Tabs.TextTabs.Add(EndDate);

                Text txtStudentID = new Text
                {
                    TabLabel = "txtStudentID",
                    Value    = student.StudentId
                };
                signer.Tabs.TextTabs.Add(txtStudentID);


                #endregion FormTabs


                i++;
            }



            //Setting Status to sent sends the email
            envDef.Status = "sent";

            // |EnvelopesApi| contains methods related to creating and sending Envelopes (aka signature requests)
            EnvelopesApi    envelopesApi    = new EnvelopesApi();
            EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(ConfigurationManager.AppSettings["accountId"], envDef);


            // print the JSON response
            Console.WriteLine("EnvelopeSummary:\n{0}", JsonConvert.SerializeObject(envelopeSummary));

            //write a log file method or store to DB to show file was sent

            return(envelopeSummary);
        }
예제 #5
0
    protected void createEnvelope()
    {
        FileStream fs = null;

        try
        {
            String userName      = ConfigurationManager.AppSettings["API.Email"];
            String password      = ConfigurationManager.AppSettings["API.Password"];
            String integratorKey = ConfigurationManager.AppSettings["API.IntegratorKey"];


            String auth = "<DocuSignCredentials><Username>" + userName
                          + "</Username><Password>" + password
                          + "</Password><IntegratorKey>" + integratorKey
                          + "</IntegratorKey></DocuSignCredentials>";
            ServiceReference1.DSAPIServiceSoapClient client = new ServiceReference1.DSAPIServiceSoapClient();

            using (OperationContextScope scope = new System.ServiceModel.OperationContextScope(client.InnerChannel))
            {
                HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
                httpRequestProperty.Headers.Add("X-DocuSign-Authentication", auth);
                OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;

                CompositeTemplate template = new CompositeTemplate();

                // Set up recipients
                Recipient[] recipients;
                if (jointEmail.Value.Trim().Equals(""))
                {
                    recipients = new Recipient[1];
                }
                else
                {
                    recipients = new Recipient[2];
                }

                recipients[0]             = new Recipient();
                recipients[0].ID          = "1";
                recipients[0].Email       = email.Value;
                recipients[0].Type        = RecipientTypeCode.Signer;
                recipients[0].UserName    = firstname.Value + " " + lastname.Value;
                recipients[0].CaptiveInfo = new RecipientCaptiveInfo();

                recipients[0].CaptiveInfo.ClientUserId = RandomizeClientUserID();
                recipients[0].RoutingOrder             = 1;
                recipients[0].RoleName = "Signer1";

                // If there is a 2nd recipient, configure
                if (!jointEmail.Value.Equals(""))
                {
                    recipients[1]              = new Recipient();
                    recipients[1].ID           = "2";
                    recipients[1].Email        = jointEmail.Value;
                    recipients[1].Type         = RecipientTypeCode.Signer;
                    recipients[1].UserName     = jointFirstname.Value + " " + jointLastname.Value;
                    recipients[1].RoleName     = "Signer2";
                    recipients[1].RoutingOrder = 1;
                }

                //Configure the inline templates
                InlineTemplate inlineTemplate = new InlineTemplate();
                inlineTemplate.Sequence            = "2";
                inlineTemplate.Envelope            = new Envelope();
                inlineTemplate.Envelope.Recipients = recipients;
                inlineTemplate.Envelope.AccountId  = ConfigurationManager.AppSettings["API.TemplatesAccountId"];

                template.InlineTemplates = new InlineTemplate[] { inlineTemplate };
                // Configure the document
                template.Document      = new Document();
                template.Document.ID   = "1";
                template.Document.Name = "Sample Document";

                BinaryReader binReader = null;
                String       filename  = uploadFile.Value;
                if (File.Exists(Server.MapPath("~/App_Data/" + filename)))
                {
                    fs        = new FileStream(Server.MapPath("~/App_Data/" + filename), FileMode.Open);
                    binReader = new BinaryReader(fs);
                }
                byte[] PDF = binReader.ReadBytes(System.Convert.ToInt32(fs.Length));
                template.Document.PDFBytes = PDF;

                template.Document.TransformPdfFields = true;
                template.Document.FileExtension      = "pdf";

                ServerTemplate serverTemplate = new ServerTemplate();

                serverTemplate.Sequence   = "1";
                serverTemplate.TemplateID = templatesList.SelectedValue;
                template.ServerTemplates  = new ServerTemplate[] { serverTemplate };

                // Set up the envelope
                EnvelopeInformation envInfo = new EnvelopeInformation();
                envInfo.AutoNavigation = true;
                envInfo.AccountId      = ConfigurationManager.AppSettings["API.AccountId"];
                envInfo.Subject        = "Templates Example";

                //Create envelope with all the composite template information
                EnvelopeStatus status = client.CreateEnvelopeFromTemplatesAndForms(envInfo, new CompositeTemplate[] { template }, true);
                RequestRecipientTokenAuthenticationAssertion assert = new RequestRecipientTokenAuthenticationAssertion();
                assert.AssertionID           = "12345";
                assert.AuthenticationInstant = DateTime.Now;
                assert.AuthenticationMethod  = RequestRecipientTokenAuthenticationAssertionAuthenticationMethod.Password;
                assert.SecurityDomain        = "www.magicparadigm.com";

                RequestRecipientTokenClientURLs clientURLs = new RequestRecipientTokenClientURLs();

                clientURLs.OnAccessCodeFailed = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnAccessCodeFailed";
                clientURLs.OnCancel           = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnCancel";
                clientURLs.OnDecline          = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnDecline";
                clientURLs.OnException        = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnException";
                clientURLs.OnFaxPending       = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnFaxPending";
                clientURLs.OnIdCheckFailed    = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnIdCheckFailed";
                clientURLs.OnSessionTimeout   = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnSessionTimeout";
                clientURLs.OnTTLExpired       = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnTTLExpired";
                clientURLs.OnViewingComplete  = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnViewingComplete";


                String url = Request.Url.AbsoluteUri;

                String recipientToken;

                clientURLs.OnSigningComplete = url.Substring(0, url.LastIndexOf("/")) + "/EmbeddedSigningComplete0.aspx?envelopeID=" + status.EnvelopeID;
                recipientToken        = client.RequestRecipientToken(status.EnvelopeID, recipients[0].CaptiveInfo.ClientUserId, recipients[0].UserName, recipients[0].Email, assert, clientURLs);
                Session["envelopeID"] = status.EnvelopeID;
                if (!Request.Browser.Browser.Equals("InternetExplorer") && (!Request.Browser.Browser.Equals("Safari")))
                {
                    docusignFrame.Visible = true;
                    docusignFrame.Src     = recipientToken;
                }
                else // Handle IE differently since it does not allow dynamic setting of the iFrame width and height
                {
                    docusignFrameIE.Visible = true;
                    docusignFrameIE.Src     = recipientToken;
                }
            }
        }
        catch (Exception ex)
        {
            // Log4Net Piece
            log4net.ILog logger = log4net.LogManager.GetLogger(typeof(_Default));
            logger.Info("\n----------------------------------------\n");
            logger.Error(ex.Message);
            logger.Error(ex.StackTrace);
            Response.Write(ex.Message);
        }
        finally
        {
            if (fs != null)
            {
                fs.Close();
            }
        }
    }
예제 #6
0
//                @"{
//                ""status"" : ""Sent"",
//                ""emailBlurb"":""Test Sending template in an envelope"",
//                ""emailSubject"": ""Test Sending template in an envelope"",
//                ""compositeTemplates"":[
//                {
//                    ""serverTemplates"":[
//                      {
//                        ""sequence"":""1"",
//                        ""templateId"":""280D00CB-B0F7-479A-BBBD-A09DBB05EF6F""
//                      }
//                      ],
//                    ""inlineTemplates"": [
//                    {
//                        ""sequence"": ""1"",
//                        ""recipients"":
//                        {
//                            ""signers"": [
//                            {
//                                ""recipientID"": ""1"",
//                                ""routingOrder"": ""1"",
//                                ""email"": ""*****@*****.**"",
//                                ""name"": ""Vasudevan Sampath"",
//                                ""recipientId"": ""1"",
//                                ""roleName"": ""PrimarySigner"",
//                                ""requireIdLookup"": ""true"",
//                                ""idCheckConfigurationName"":""Phone Auth $"",
//                                ""phoneAuthentication"":{
//                                ""recipMayProvideNumber"":""false"",
//                                ""recordVoicePrint"":""false"",
//                                ""senderProvidedNumbers"":[""8175842746""],
//                                ""validateRecipProvidedNumber"":""false""
//                                 },
//                            }]
//                        }
//                    }]
//
//                }]
//            }";
    protected void createEnvelope()
    {
        // Set up the envelope
        CreateEnvelopeRequest createEnvelopeRequest = new CreateEnvelopeRequest();

        createEnvelopeRequest.emailSubject = "Composite Template Example";
        createEnvelopeRequest.status       = "sent";
        createEnvelopeRequest.emailBlurb   = "Example of how Composite templates functionality works";

        // Define a signer
        Signer signer = new Signer();

        signer.email        = "*****@*****.**";
        signer.name         = "Dufus McTeague";
        signer.recipientId  = "1";
        signer.routingOrder = "1";
        signer.roleName     = "Signer1";
        //signer.accessCode = "1234";
        signer.requireIdLookup = "true";
//        signer.idCheckConfigurationName = "Phone Auth $";
        signer.idCheckConfigurationName = "SMS Auth $";
        //signer.phoneAuthentication = new PhoneAuthentication();
        //signer.phoneAuthentication.senderProvidedNumbers = new List<string>();
        //signer.phoneAuthentication.senderProvidedNumbers.Add("8175842746");
        //signer.phoneAuthentication.recordVoicePrint = "true";

        signer.smsAuthentication = new SMSAuthentication();
        signer.smsAuthentication.senderProvidedNumbers = new List <string>();
        signer.smsAuthentication.senderProvidedNumbers.Add("8175842746");

        // Define a documetn
        Document document = new Document();

        document.documentId         = "1";
        document.name               = "Sample Form";
        document.transformPdfFields = "true";
        //document.display = "modal";

        // Define an inline template
        InlineTemplate inline1 = new InlineTemplate();

        inline1.sequence           = "2";
        inline1.recipients         = new Recipients();
        inline1.recipients.signers = new List <Signer>();
        inline1.recipients.signers.Add(signer);

        //       inline1.documents = new List<Document>();
        //       inline1.documents.Add(document);

        ServerTemplate serverTemplate1 = new ServerTemplate();

        serverTemplate1.sequence   = "1";
        serverTemplate1.templateId = "3abc4466-82a9-4c65-8c55-7cf4c44dea85";

        CompositeTemplate compositeTemplate1 = new CompositeTemplate();

        compositeTemplate1.inlineTemplates = new List <InlineTemplate>();
        compositeTemplate1.inlineTemplates.Add(inline1);
        compositeTemplate1.serverTemplates = new List <ServerTemplate>();
        compositeTemplate1.serverTemplates.Add(serverTemplate1);
        compositeTemplate1.document = document;
        //compositeTemplate1.document = new Document();
        //compositeTemplate1.document.documentId = "1";
        //compositeTemplate1.document.name = "Sample Form";
        //compositeTemplate1.document.transformPdfFields = "true";
        //compositeTemplate1.document.display = "modal";

        createEnvelopeRequest.compositeTemplates = new List <CompositeTemplate>();
        createEnvelopeRequest.compositeTemplates.Add(compositeTemplate1);


        string output = JsonConvert.SerializeObject(createEnvelopeRequest);

        accountId.Value = ConfigurationManager.AppSettings["API.AccountID"];

        // Specify a unique boundary string that doesn't appear in the json or document bytes.
        string Boundary = "MY_BOUNDARY";

        // Set the URI
        HttpWebRequest request = HttpWebRequest.Create(ConfigurationManager.AppSettings["DocuSignServer"] + "/restapi/v2/accounts/" + accountId.Value + "/envelopes") as HttpWebRequest;

        // Set the method
        request.Method = "POST";

        // Set the authentication header
        request.Headers["X-DocuSign-Authentication"] = GetSecurityHeader();

        // Set the overall request content type aand boundary string
        request.ContentType = "multipart/form-data; boundary=" + Boundary;
        request.Accept      = "application/json";

        // Start forming the body of the request
        Stream reqStream = request.GetRequestStream();

        // write boundary marker between parts
        WriteStream(reqStream, "\n--" + Boundary + "\n");

        // write out the json envelope definition part
        WriteStream(reqStream, "Content-Type: application/json\n");
        WriteStream(reqStream, "Content-Disposition: form-data\n");
        WriteStream(reqStream, "\n"); // requires an empty line between the header and the json body
        WriteStream(reqStream, output);

        // write out the form bytes for the first form
        WriteStream(reqStream, "\n--" + Boundary + "\n");
        WriteStream(reqStream, "Content-Type: application/pdf\n");
        WriteStream(reqStream, "Content-Disposition: file; filename=\"Sample_Form\"; documentId=1\n");
        WriteStream(reqStream, "\n");
        String filename = uploadFile.Value;

        if (File.Exists(Server.MapPath("~/App_Data/" + filename)))
        {
            // Read the file contents and write them to the request stream
            byte[] buf = new byte[4096];
            int    len;
            // read contents of document into the request stream
            FileStream fileStream = File.OpenRead(Server.MapPath("~/App_Data/" + filename));
            while ((len = fileStream.Read(buf, 0, 4096)) > 0)
            {
                reqStream.Write(buf, 0, len);
            }
            fileStream.Close();
        }


        // wrte the end boundary marker - ensure that it is on its own line
        WriteStream(reqStream, "\n--" + Boundary + "--");
        WriteStream(reqStream, "\n");

        try
        {
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;

            if (response.StatusCode == HttpStatusCode.Created)
            {
                byte[] responseBytes = new byte[response.ContentLength];
                using (var reader = new System.IO.BinaryReader(response.GetResponseStream()))
                {
                    reader.Read(responseBytes, 0, responseBytes.Length);
                }
                string responseText = Encoding.UTF8.GetString(responseBytes);
                CreateEnvelopeResponse createEnvelopeResponse = new CreateEnvelopeResponse();

                createEnvelopeResponse = JsonConvert.DeserializeObject <CreateEnvelopeResponse>(responseText);
                if (createEnvelopeResponse.status.Equals("sent"))
                {
                }
            }
        }
        catch (WebException ex)
        {
            if (ex.Status == WebExceptionStatus.ProtocolError)
            {
                HttpWebResponse response = (HttpWebResponse)ex.Response;
                using (var reader = new System.IO.StreamReader(ex.Response.GetResponseStream(), UTF8Encoding.UTF8))
                {
                    string       errorMess = reader.ReadToEnd();
                    log4net.ILog logger    = log4net.LogManager.GetLogger(typeof(demos_CompositeTemplate));
                    logger.Info("\n----------------------------------------\n");
                    logger.Error("DocuSign Error: " + errorMess);
                    logger.Error(ex.StackTrace);
                    Response.Write(ex.Message);
                }
            }
            else
            {
                log4net.ILog logger = log4net.LogManager.GetLogger(typeof(demos_CompositeTemplate));
                logger.Info("\n----------------------------------------\n");
                logger.Error("WebRequest Error: " + ex.Message);
                logger.Error(ex.StackTrace);
                Response.Write(ex.Message);
            }
        }
    }
    protected void createEnvelope()
    {
        // Set up the envelope
        CreateEnvelopeRequest createEnvelopeRequest = new CreateEnvelopeRequest();

        createEnvelopeRequest.emailSubject = "Kitchen Sink Example";
        createEnvelopeRequest.status       = "sent";
        createEnvelopeRequest.emailBlurb   = "Example of how different smart anchors work";

        // Define first signer
        Signer signer = new Signer();

        signer.email        = email.Value;
        signer.name         = firstname.Value + " " + lastname.Value;
        signer.recipientId  = 1;
        signer.routingOrder = "1";
        signer.roleName     = "Signer1";
        signer.clientUserId = RandomizeClientUserID();  // First signer is embedded

        // Add tabs for the signer
        signer.tabs = new Tabs();
        signer.tabs.signHereTabs = new List <SignHereTab>();
        SignHereTab signHereTab = new SignHereTab();

        signHereTab.documentId               = "1";
        signHereTab.tabId                    = "1";
        signHereTab.anchorString             = "~?";
        signHereTab.anchorIgnoreIfNotPresent = "true";
        signHereTab.name = "PrimarySignerSignature";
        signer.tabs.signHereTabs.Add(signHereTab);


        signer.tabs.dateSignedTabs = new List <DateSignedTab>();
        DateSignedTab dateSignedTab = new DateSignedTab();

        dateSignedTab.documentId               = "1";
        dateSignedTab.tabId                    = "2";
        dateSignedTab.anchorString             = "~!";
        dateSignedTab.anchorIgnoreIfNotPresent = "true";
        dateSignedTab.name = "PrimarySignerDateSigned";
        signer.tabs.dateSignedTabs.Add(dateSignedTab);

        // Define a document
        Document document = new Document();

        document.documentId            = "1";
        document.name                  = "Sample Form";
        document.transformPdfFields    = "true";
        document.fileExtension         = "doc";
        document.htmlDefinition        = new HtmlDefinition();
        document.htmlDefinition.source = "document";
        document.htmlDefinition.displayAnchorPrefix = "";
        document.htmlDefinition.maxScreenWidth      = 0;
        document.htmlDefinition.removeEmptyTags     = "table,tr,p";
        document.htmlDefinition.headerLabel         = "<h1 style='color:#E20074;text-align:center;font-family:Tele-Grotesk, Arial, Helvetica;'>Examples of Smart Sections</h1><h2 style = 'text-align:center;font-family:Tele-Grotesk, Arial, Helvetica;'> Simply scroll down to review.</ h2><div style = 'margin-top:20px;margin-bottom:20px;border-bottom:solid 2px #dedede;'></ div >";

        // Define the display anchors
        document.htmlDefinition.displayAnchors = new List <DisplayAnchor>();
        DisplayAnchor displayAnchor = new DisplayAnchor();

        displayAnchor.startAnchor                           = "$Docu$printonlyS$";
        displayAnchor.endAnchor                             = "$Docu$printonlyE$";
        displayAnchor.removeEndAnchor                       = true;
        displayAnchor.removeStartAnchor                     = true;
        displayAnchor.caseSensitive                         = true;
        displayAnchor.displaySettings                       = new DisplaySettings();
        displayAnchor.displaySettings.display               = "print_only";
        displayAnchor.displaySettings.tableStyle            = "";
        displayAnchor.displaySettings.cellStyle             = "";
        displayAnchor.displaySettings.labelWhenOpened       = "";
        displayAnchor.displaySettings.scrollToTopWhenOpened = true;
        displayAnchor.displaySettings.hideLabelWhenOpened   = true;
        displayAnchor.displaySettings.displayLabel          = "";
        document.htmlDefinition.displayAnchors.Add(displayAnchor);

        DisplayAnchor displayAnchor2 = new DisplayAnchor();

        displayAnchor2.startAnchor                           = "$tmo$tila$";
        displayAnchor2.endAnchor                             = "$tmo$tila$";
        displayAnchor2.removeEndAnchor                       = true;
        displayAnchor2.removeStartAnchor                     = true;
        displayAnchor2.caseSensitive                         = true;
        displayAnchor2.displaySettings                       = new DisplaySettings();
        displayAnchor2.displaySettings.display               = "responsive_table_single_column";
        displayAnchor2.displaySettings.tableStyle            = "margin-bottom:20px;";
        displayAnchor2.displaySettings.cellStyle             = "text-align:center;border:solid 3px #333;margin:5px;padding:5px;background-color:#eaeaea;~text-align:center;border:solid 3px #333;margin:5px;padding:5px;background-color:#eaeaea;~text-align:center;border:solid 1px #999;margin:5px;padding:5px;background-color:#eaeaea;";
        displayAnchor2.displaySettings.labelWhenOpened       = "";
        displayAnchor2.displaySettings.scrollToTopWhenOpened = true;
        displayAnchor2.displaySettings.hideLabelWhenOpened   = true;
        displayAnchor2.displaySettings.displayLabel          = "";
        document.htmlDefinition.displayAnchors.Add(displayAnchor2);

        DisplayAnchor displayAnchor5 = new DisplayAnchor();

        displayAnchor5.startAnchor                           = "$Docu$collapsedS$";
        displayAnchor5.endAnchor                             = "$Docu$collapsedE$";
        displayAnchor5.removeEndAnchor                       = true;
        displayAnchor5.removeStartAnchor                     = true;
        displayAnchor5.caseSensitive                         = true;
        displayAnchor5.displaySettings                       = new DisplaySettings();
        displayAnchor5.displaySettings.display               = "collapsed";
        displayAnchor5.displaySettings.tableStyle            = "";
        displayAnchor5.displaySettings.cellStyle             = "";
        displayAnchor5.displaySettings.labelWhenOpened       = "";
        displayAnchor5.displaySettings.scrollToTopWhenOpened = true;
        displayAnchor5.displaySettings.hideLabelWhenOpened   = false;
        displayAnchor5.displaySettings.displayLabel          = @"<div style='display:flex;flex-flow:row wrap;align-items:center;min-height:40px;border-top:solid 1px #dedede;font-size:24px;color:#9d2624'><div style = 'flex:none;width:90%;padding:5px;'>Declaration Of Independence</div><div style='width:10%;text-align:right;padding:5px;'><a><i class='icon icon-caret-large-down' style='color:#000;'></i></a></div></div>";
        document.htmlDefinition.displayAnchors.Add(displayAnchor5);

        DisplayAnchor displayAnchor3 = new DisplayAnchor();

        displayAnchor3.startAnchor                           = "$Docu$collapsibleS$";
        displayAnchor3.endAnchor                             = "$Docu$collapsibleE$";
        displayAnchor3.removeEndAnchor                       = true;
        displayAnchor3.removeStartAnchor                     = true;
        displayAnchor3.caseSensitive                         = true;
        displayAnchor3.displaySettings                       = new DisplaySettings();
        displayAnchor3.displaySettings.display               = "collapsible";
        displayAnchor3.displaySettings.tableStyle            = "";
        displayAnchor3.displaySettings.cellStyle             = "";
        displayAnchor3.displaySettings.labelWhenOpened       = "";
        displayAnchor3.displaySettings.scrollToTopWhenOpened = true;
        displayAnchor3.displaySettings.hideLabelWhenOpened   = false;
        displayAnchor3.displaySettings.displayLabel          = @"<div style='display:flex;flex-flow:row wrap;align-items:center;min-height:40px;border-top:solid 1px #dedede;font-size:24px;color:#9d2624'><div style = 'flex:none;width:90%;padding:5px;'>Declaration Of Independence</div><div style='width:10%;text-align:right;padding:5px;'><a><i class='icon icon-caret-large-down' style='color:#000;'></i></a></div></div>";
        document.htmlDefinition.displayAnchors.Add(displayAnchor3);

        DisplayAnchor displayAnchor4 = new DisplayAnchor();

        displayAnchor4.startAnchor                           = "$Docu$inlineS$";
        displayAnchor4.endAnchor                             = "$Docu$inlineE$";
        displayAnchor4.removeEndAnchor                       = true;
        displayAnchor4.removeStartAnchor                     = true;
        displayAnchor4.caseSensitive                         = true;
        displayAnchor4.displaySettings                       = new DisplaySettings();
        displayAnchor4.displaySettings.display               = "inline";
        displayAnchor4.displaySettings.labelWhenOpened       = "";
        displayAnchor4.displaySettings.scrollToTopWhenOpened = true;
        displayAnchor4.displaySettings.hideLabelWhenOpened   = true;
        displayAnchor4.displaySettings.displayLabel          = "Highlight the following section";
        displayAnchor4.displaySettings.inlineOuterStyle      = "background-color:#ff0; padding:10px;";
        document.htmlDefinition.displayAnchors.Add(displayAnchor4);

        // Define an inline template
        InlineTemplate inline1 = new InlineTemplate();

        inline1.sequence           = "2";
        inline1.recipients         = new Recipients();
        inline1.recipients.signers = new List <Signer>();
        inline1.recipients.signers.Add(signer);


        // Add the inline template to a CompositeTemplate
        CompositeTemplate compositeTemplate1 = new CompositeTemplate();

        compositeTemplate1.inlineTemplates = new List <InlineTemplate>();
        compositeTemplate1.inlineTemplates.Add(inline1);
        compositeTemplate1.document = document;

        // Add compositeTemplate to the envelope
        createEnvelopeRequest.compositeTemplates = new List <CompositeTemplate>();
        createEnvelopeRequest.compositeTemplates.Add(compositeTemplate1);
        createEnvelopeRequest.brandId = ConfigurationManager.AppSettings["MomentumBrandID"];


        string output = JsonConvert.SerializeObject(createEnvelopeRequest);

        // Specify a unique boundary string that doesn't appear in the json or document bytes.
        string Boundary = "MY_BOUNDARY";

        // Set the URI
        HttpWebRequest request = HttpWebRequest.Create(ConfigurationManager.AppSettings["DocuSignServer"] + "/restapi/vdev/accounts/" + ConfigurationManager.AppSettings["API.AccountId"] + "/envelopes") as HttpWebRequest;

        // Set the method
        request.Method = "POST";

        // Set the authentication header
        request.Headers["X-DocuSign-Authentication"] = GetSecurityHeader();

        // Set the overall request content type aand boundary string
        request.ContentType = "multipart/form-data; boundary=" + Boundary;
        request.Accept      = "application/json";

        // Start forming the body of the request
        Stream reqStream = request.GetRequestStream();

        // write boundary marker between parts
        WriteStream(reqStream, "\n--" + Boundary + "\n");

        // write out the json envelope definition part
        WriteStream(reqStream, "Content-Type: application/json\n");
        WriteStream(reqStream, "Content-Disposition: form-data\n");
        WriteStream(reqStream, "\n"); // requires an empty line between the header and the json body
        WriteStream(reqStream, output);

        // write out the form bytes for the first form
        WriteStream(reqStream, "\n--" + Boundary + "\n");
        WriteStream(reqStream, "Content-Type: application/pdf\n");
        WriteStream(reqStream, "Content-Disposition: file; filename=\"Sample_Form\"; documentId=1\n");
        WriteStream(reqStream, "\n");
        if (File.Exists(Server.MapPath("~/App_Data/kitchensink.pdf")))
        {
            // Read the file contents and write them to the request stream
            byte[] buf = new byte[4096];
            int    len;
            // read contents of document into the request stream
            FileStream fileStream = File.OpenRead(Server.MapPath("~/App_Data/kitchensink.pdf"));
            while ((len = fileStream.Read(buf, 0, 4096)) > 0)
            {
                reqStream.Write(buf, 0, len);
            }
            fileStream.Close();
        }


        // wrte the end boundary marker - ensure that it is on its own line
        WriteStream(reqStream, "\n--" + Boundary + "--");
        WriteStream(reqStream, "\n");
        try
        {
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;

            if (response.StatusCode == HttpStatusCode.Created)
            {
                byte[] responseBytes = new byte[response.ContentLength];
                using (var reader = new System.IO.BinaryReader(response.GetResponseStream()))
                {
                    reader.Read(responseBytes, 0, responseBytes.Length);
                }
                string responseText = Encoding.UTF8.GetString(responseBytes);
                CreateEnvelopeResponse createEnvelopeResponse = new CreateEnvelopeResponse();

                createEnvelopeResponse = JsonConvert.DeserializeObject <CreateEnvelopeResponse>(responseText);
                if (createEnvelopeResponse.status.Equals("sent"))
                {
                    // Now that we have created the envelope, get the recipient token for the first signer
                    String url = Request.Url.AbsoluteUri;
                    RecipientViewRequest recipientViewRequest = new RecipientViewRequest();
                    recipientViewRequest.authenticationMethod = "email";
                    recipientViewRequest.clientUserId         = signer.clientUserId;
                    recipientViewRequest.email     = email.Value;
                    recipientViewRequest.returnUrl = url.Substring(0, url.LastIndexOf("/")) + "/ConfirmationScreen.aspx";
                    recipientViewRequest.userName  = firstname.Value + " " + lastname.Value;

                    HttpWebRequest request2 = HttpWebRequest.Create(ConfigurationManager.AppSettings["DocuSignServer"] + "/restapi/v2/accounts/" + ConfigurationManager.AppSettings["API.TemplatesAccountID"] + "/envelopes/" + createEnvelopeResponse.envelopeId + "/views/recipient") as HttpWebRequest;
                    request2.Method = "POST";

                    // Set the authenticationheader
                    request2.Headers["X-DocuSign-Authentication"] = GetSecurityHeader();

                    request2.Accept      = "application/json";
                    request2.ContentType = "application/json";

                    Stream reqStream2 = request2.GetRequestStream();

                    WriteStream(reqStream2, JsonConvert.SerializeObject(recipientViewRequest));
                    HttpWebResponse response2 = request2.GetResponse() as HttpWebResponse;

                    responseBytes = new byte[response2.ContentLength];
                    using (var reader = new System.IO.BinaryReader(response2.GetResponseStream()))
                    {
                        reader.Read(responseBytes, 0, responseBytes.Length);
                    }
                    string response2Text = Encoding.UTF8.GetString(responseBytes);

                    RecipientViewResponse recipientViewResponse = new RecipientViewResponse();
                    recipientViewResponse = JsonConvert.DeserializeObject <RecipientViewResponse>(response2Text);
                    Response.Redirect(recipientViewResponse.url);
                }
            }
        }
        catch (WebException ex)
        {
            if (ex.Status == WebExceptionStatus.ProtocolError)
            {
                HttpWebResponse response = (HttpWebResponse)ex.Response;
                using (var reader = new System.IO.StreamReader(ex.Response.GetResponseStream(), UTF8Encoding.UTF8))
                {
                    string       errorMess = reader.ReadToEnd();
                    log4net.ILog logger    = log4net.LogManager.GetLogger(typeof(KitchenSink));
                    logger.Info("\n----------------------------------------\n");
                    logger.Error("DocuSign Error: " + errorMess);
                    logger.Error(ex.StackTrace);
                    Response.Write(ex.Message);
                }
            }
            else
            {
                log4net.ILog logger = log4net.LogManager.GetLogger(typeof(KitchenSink));
                logger.Info("\n----------------------------------------\n");
                logger.Error("WebRequest Error: " + ex.Message);
                logger.Error(ex.StackTrace);
                Response.Write(ex.Message);
            }
        }
    }
    protected void createEnvelope()
    {
        // Set up the envelope
        CreateEnvelopeRequest createEnvelopeRequest = new CreateEnvelopeRequest();

        createEnvelopeRequest.emailSubject = "eNotary Example";
        createEnvelopeRequest.status       = "sent";

        //Define inperson signers
        InPersonSigner inPersonSigner = new InPersonSigner();

        //       inPersonSigner.hostEmail = "*****@*****.**";
        inPersonSigner.hostEmail           = email.Value;
        inPersonSigner.hostName            = firstname.Value + " " + lastname.Value;
        inPersonSigner.recipientId         = "3";
        inPersonSigner.routingOrder        = "3";
        inPersonSigner.inPersonSigningType = "notary";

        NotaryHost notaryHost = new NotaryHost();

        notaryHost.recipientId = 4;
        notaryHost.email       = notaryEmail.Value;
        notaryHost.name        = notaryFirstname.Value + " " + notaryLastname.Value;

        // Add tab for the recipient
        inPersonSigner.tabs = new Tabs();
        inPersonSigner.tabs.signHereTabs = new List <SignHereTab>();
        SignHereTab signHereTab = new SignHereTab();

        signHereTab.documentId = "1";
        signHereTab.pageNumber = "1";
        signHereTab.tabId      = "1";
        signHereTab.xPosition  = "110";
        signHereTab.yPosition  = "210";
        signHereTab.name       = "sigTab";
        inPersonSigner.tabs.signHereTabs.Add(signHereTab);

        inPersonSigner.tabs.dateSignedTabs = new List <DateSignedTab>();
        DateSignedTab dateSignedTab = new DateSignedTab();

        dateSignedTab.documentId = "1";
        dateSignedTab.pageNumber = "1";
        dateSignedTab.tabId      = "2";
        dateSignedTab.xPosition  = "425";
        dateSignedTab.yPosition  = "260";
        dateSignedTab.name       = "dateSignedTab";
        inPersonSigner.tabs.dateSignedTabs.Add(dateSignedTab);

        inPersonSigner.tabs.fullNameTabs = new List <FullNameTab>();
        FullNameTab fullNameTab = new FullNameTab();

        fullNameTab.documentId = "1";
        fullNameTab.pageNumber = "1";
        fullNameTab.tabId      = "3";
        fullNameTab.xPosition  = "90";
        fullNameTab.yPosition  = "150";
        fullNameTab.name       = "fullNameTab";
        inPersonSigner.tabs.fullNameTabs.Add(fullNameTab);

        inPersonSigner.notaryHost = notaryHost;


        // Define a document
        Document document = new Document();

        document.documentId         = "1";
        document.name               = "Sample Form";
        document.transformPdfFields = "true";
        //document.display = "modal";

        // Define an inline template
        InlineTemplate inline1 = new InlineTemplate();

        inline1.sequence   = "2";
        inline1.recipients = new Recipients();
        //        inline1.recipients.signers = new List<Signer>();
        //        inline1.recipients.signers.Add(signer);
        inline1.recipients.inPersonSigners = new List <InPersonSigner>();
        inline1.recipients.inPersonSigners.Add(inPersonSigner);

        //       inline1.documents = new List<Document>();
        //       inline1.documents.Add(document);

        ServerTemplate serverTemplate1 = new ServerTemplate();

        serverTemplate1.sequence   = "1";
        serverTemplate1.templateId = "d7a2c6d9-3b20-4086-a408-ada85efc00fd";

        CompositeTemplate compositeTemplate1 = new CompositeTemplate();

        compositeTemplate1.inlineTemplates = new List <InlineTemplate>();
        compositeTemplate1.inlineTemplates.Add(inline1);
        //        compositeTemplate1.serverTemplates = new List<ServerTemplate>();
        //        compositeTemplate1.serverTemplates.Add(serverTemplate1);
        compositeTemplate1.document                    = document;
        compositeTemplate1.document                    = new Document();
        compositeTemplate1.document.documentId         = "1";
        compositeTemplate1.document.name               = "Affidavit";
        compositeTemplate1.document.transformPdfFields = "true";
        //compositeTemplate1.document.display = "modal";

        createEnvelopeRequest.compositeTemplates = new List <CompositeTemplate>();
        createEnvelopeRequest.compositeTemplates.Add(compositeTemplate1);


        string output = JsonConvert.SerializeObject(createEnvelopeRequest);

        accountId.Value = ConfigurationManager.AppSettings["API.NotaryAccountID"];

        // Specify a unique boundary string that doesn't appear in the json or document bytes.
        string Boundary = "MY_BOUNDARY";

        // Set the URI
        HttpWebRequest request = HttpWebRequest.Create(ConfigurationManager.AppSettings["DocuSignServer"] + "/restapi/v2/accounts/" + accountId.Value + "/envelopes") as HttpWebRequest;

        // Set the method
        request.Method = "POST";

        // Set the authentication header
        request.Headers["X-DocuSign-Authentication"] = GetSecurityHeader();

        // Set the overall request content type aand boundary string
        request.ContentType = "multipart/form-data; boundary=" + Boundary;
        request.Accept      = "application/json";

        // Start forming the body of the request
        Stream reqStream = request.GetRequestStream();

        // write boundary marker between parts
        WriteStream(reqStream, "\n--" + Boundary + "\n");

        // write out the json envelope definition part
        WriteStream(reqStream, "Content-Type: application/json\n");
        WriteStream(reqStream, "Content-Disposition: form-data\n");
        WriteStream(reqStream, "\n"); // requires an empty line between the header and the json body
        WriteStream(reqStream, output);

        // write out the form bytes for the first form
        WriteStream(reqStream, "\n--" + Boundary + "\n");
        WriteStream(reqStream, "Content-Type: application/pdf\n");
        WriteStream(reqStream, "Content-Disposition: file; filename=\"Sample_Form\"; documentId=1\n");
        WriteStream(reqStream, "\n");
        String filename = "Docusign_Affidavit.pdf";

        if (File.Exists(Server.MapPath("~/App_Data/" + filename)))
        {
            // Read the file contents and write them to the request stream
            byte[] buf = new byte[4096];
            int    len;
            // read contents of document into the request stream
            FileStream fileStream = File.OpenRead(Server.MapPath("~/App_Data/" + filename));
            while ((len = fileStream.Read(buf, 0, 4096)) > 0)
            {
                reqStream.Write(buf, 0, len);
            }
            fileStream.Close();
        }


        // wrte the end boundary marker - ensure that it is on its own line
        WriteStream(reqStream, "\n--" + Boundary + "--");
        WriteStream(reqStream, "\n");

        try
        {
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;

            if (response.StatusCode == HttpStatusCode.Created)
            {
                byte[] responseBytes = new byte[response.ContentLength];
                using (var reader = new System.IO.BinaryReader(response.GetResponseStream()))
                {
                    reader.Read(responseBytes, 0, responseBytes.Length);
                }
                string responseText = Encoding.UTF8.GetString(responseBytes);
                CreateEnvelopeResponse createEnvelopeResponse = new CreateEnvelopeResponse();

                createEnvelopeResponse = JsonConvert.DeserializeObject <CreateEnvelopeResponse>(responseText);
                if (createEnvelopeResponse.status.Equals("sent"))
                {
                    Response.Redirect("ConfirmationPage.aspx");
                }
            }
        }
        catch (WebException ex)
        {
            if (ex.Status == WebExceptionStatus.ProtocolError)
            {
                HttpWebResponse response = (HttpWebResponse)ex.Response;
                using (var reader = new System.IO.StreamReader(ex.Response.GetResponseStream(), UTF8Encoding.UTF8))
                {
                    string       errorMess = reader.ReadToEnd();
                    log4net.ILog logger    = log4net.LogManager.GetLogger(typeof(demos_eNotary));
                    logger.Info("\n----------------------------------------\n");
                    logger.Error("DocuSign Error: " + errorMess);
                    logger.Error(ex.StackTrace);
                    Response.Write(ex.Message);
                }
            }
            else
            {
                log4net.ILog logger = log4net.LogManager.GetLogger(typeof(demos_eNotary));
                logger.Info("\n----------------------------------------\n");
                logger.Error("WebRequest Error: " + ex.Message);
                logger.Error(ex.StackTrace);
                Response.Write(ex.Message);
            }
        }
    }
예제 #9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            EnvelopeDefinition envDef = new EnvelopeDefinition();

            envDef.CompositeTemplates = new List <CompositeTemplate>();
            CompositeTemplate ct = new CompositeTemplate();

            ct.CompositeTemplateId = "1";

            ct.ServerTemplates = new List <ServerTemplate>();
            ServerTemplate st = new ServerTemplate();

            st.Sequence = "1";

            ct.InlineTemplates = new List <InlineTemplate>();
            InlineTemplate it = new InlineTemplate();

            it.Sequence           = "1";
            it.Recipients         = new Recipients();
            it.Recipients.Signers = new List <Signer>();

            Signer Signer1 = new Signer();

            Signer1.RecipientId         = "1";
            Signer1.Tabs                = new Tabs();
            Signer1.Tabs.TextTabs       = new List <Text>();
            Signer1.Tabs.CheckboxTabs   = new List <Checkbox>();
            Signer1.Tabs.ListTabs       = new List <List>();
            Signer1.Tabs.RadioGroupTabs = new List <RadioGroup>();
            Signer Signer2 = new Signer();

            Signer2.RecipientId         = "2";
            Signer2.Tabs                = new Tabs();
            Signer2.Tabs.TextTabs       = new List <Text>();
            Signer2.Tabs.CheckboxTabs   = new List <Checkbox>();
            Signer2.Tabs.ListTabs       = new List <List>();
            Signer2.Tabs.RadioGroupTabs = new List <RadioGroup>();

            const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

            foreach (string key in Request.Form)
            {
                if (key.Length > 9)
                {
                    switch (key.Substring(0, 10))
                    {
                    case "signer1_us":
                        Signer1.Name = Request[key];
                        break;

                    case "signer1_em":
                        Signer1.Email = Request[key];
                        break;

                    case "signer1_ro":
                        Signer1.RoleName       = Request[key];
                        envelope.dsSigner1Role = Request[key];
                        break;

                    case "signer1_ty":
                        if (Request[key] == "embedded")
                        {
                            Random random1 = new Random();
                            envelope.dsSigner1CID = new string(Enumerable.Repeat(chars, 10)
                                                               .Select(s => s[random1.Next(s.Length)]).ToArray());
                            Signer1.ClientUserId = envelope.dsSigner1CID;
                        }
                        break;

                    case "signer1_au":
                        envelope.dsSigner1AuthMethod = Request[key];
                        break;

                    case "signer1_nu":
                        envelope.dsSigner1AuthNumber = Request[key];
                        break;

                    case "signer1_si":
                        envelope.dsSigner1SP = Request[key];
                        break;

                    case "signer1_tx":
                        Text   tempText1    = new Text();
                        string tempTxtLabel = key;
                        tempTxtLabel       = tempTxtLabel.Substring(12);
                        tempText1.TabLabel = tempTxtLabel;
                        tempText1.Value    = Request[key];
                        Signer1.Tabs.TextTabs.Add(tempText1);
                        break;

                    case "signer1_rb":
                        RadioGroup tempRG1     = new RadioGroup();
                        string     tempRBLabel = key;
                        tempRBLabel       = tempRBLabel.Substring(11);
                        tempRG1.GroupName = tempRBLabel;
                        tempRG1.Radios    = new List <Radio>();
                        Radio tempRB1 = new Radio();
                        tempRB1.Selected = "true";
                        tempRB1.Value    = Request[key];
                        tempRG1.Radios.Add(tempRB1);
                        Signer1.Tabs.RadioGroupTabs.Add(tempRG1);
                        break;

                    case "signer1_li":
                        List   tempList1     = new List();
                        string tempListLabel = key;
                        tempListLabel      = tempListLabel.Substring(13);
                        tempList1.TabLabel = tempListLabel;
                        tempList1.Value    = Request[key];
                        Signer1.Tabs.ListTabs.Add(tempList1);
                        break;

                    case "signer1_cb":
                        Checkbox tempCB1     = new Checkbox();
                        string   tempCBLabel = key;
                        tempCBLabel      = tempCBLabel.Substring(11);
                        tempCB1.TabLabel = tempCBLabel;
                        tempCB1.Selected = "true";
                        Signer1.Tabs.CheckboxTabs.Add(tempCB1);
                        break;


                    case "signer2_us":
                        Signer2.Name           = Request[key];
                        envelope.dsSigner2Name = Signer2.Name;
                        break;

                    case "signer2_em":
                        Signer2.Email           = Request[key];
                        envelope.dsSigner2Email = Request[key];
                        break;

                    case "signer2_ro":
                        Signer2.RoleName       = Request[key];
                        envelope.dsSigner2Role = Request[key];
                        break;

                    case "signer2_ty":
                        if (Request[key] == "embedded")
                        {
                            Random random2 = new Random();
                            envelope.dsSigner2CID = new string(Enumerable.Repeat(chars, 10)
                                                               .Select(s => s[random2.Next(s.Length)]).ToArray());
                            Signer2.ClientUserId = envelope.dsSigner2CID;
                        }
                        break;

                    case "signer2_au":
                        envelope.dsSigner2AuthMethod = Request[key];
                        break;

                    case "signer2_nu":
                        envelope.dsSigner2AuthNumber = Request[key];
                        break;

                    case "signer2_si":
                        envelope.dsSigner2SP = Request[key];
                        break;

                    case "signer2_tx":
                        Text   tempText2     = new Text();
                        string tempTxtLabel2 = key;
                        tempTxtLabel2      = tempTxtLabel2.Substring(12);
                        tempText2.TabLabel = tempTxtLabel2;
                        tempText2.Value    = Request[key];
                        Signer2.Tabs.TextTabs.Add(tempText2);
                        break;

                    case "signer2_rb":
                        RadioGroup tempRG2      = new RadioGroup();
                        string     tempRBLabel2 = key;
                        tempRBLabel2      = tempRBLabel2.Substring(11);
                        tempRG2.GroupName = tempRBLabel2;
                        tempRG2.Radios    = new List <Radio>();
                        Radio tempRB2 = new Radio();
                        tempRB2.Selected = "true";
                        tempRB2.Value    = Request[key];
                        tempRG2.Radios.Add(tempRB2);
                        Signer2.Tabs.RadioGroupTabs.Add(tempRG2);
                        break;

                    case "signer2_li":
                        List   tempList2      = new List();
                        string tempListLabel2 = key;
                        tempListLabel2     = tempListLabel2.Substring(13);
                        tempList2.TabLabel = tempListLabel2;
                        tempList2.Value    = Request[key];
                        Signer2.Tabs.ListTabs.Add(tempList2);
                        break;

                    case "signer2_cb":
                        Checkbox tempCB2      = new Checkbox();
                        string   tempCBLabel2 = key;
                        tempCBLabel2     = tempCBLabel2.Substring(13);
                        tempCB2.TabLabel = tempCBLabel2;
                        tempCB2.Selected = "true";
                        Signer2.Tabs.CheckboxTabs.Add(tempCB2);
                        break;

                    case "accountnum":
                        envelope.dsAccountId = Request[key];
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    switch (key)
                    {
                    case "usr":
                        envelope.dsUser = Request[key];
                        break;

                    case "pd":
                        envelope.dsPassword = Request[key];
                        break;

                    case "dst":
                        envelope.dsTemplateId = Request[key];
                        break;

                    case "logo":
                        envelope.dsLogo = Request[key];
                        break;

                    default:
                        break;
                    }
                }
            }
            switch (envelope.dsSigner1AuthMethod.ToLower())
            {
            case "access code":
                Signer1.AccessCode = envelope.dsSigner1AuthNumber;
                break;

            case "sms":
                Signer1.IdCheckConfigurationName = "SMS Auth $";
                Signer1.RequireIdLookup          = "true";
                Signer1.SmsAuthentication        = new RecipientSMSAuthentication();
                Signer1.SmsAuthentication.SenderProvidedNumbers = new List <string>();
                Signer1.SmsAuthentication.SenderProvidedNumbers.Add("+" + envelope.dsSigner1AuthNumber);
                break;

            case "phone":
                Signer1.IdCheckConfigurationName = "Phone Auth $";
                Signer1.RequireIdLookup          = "true";
                Signer1.PhoneAuthentication      = new RecipientPhoneAuthentication();
                Signer1.PhoneAuthentication.SenderProvidedNumbers = new List <string>();
                Signer1.PhoneAuthentication.SenderProvidedNumbers.Add("+" + envelope.dsSigner1AuthNumber);
                Signer1.PhoneAuthentication.RecipMayProvideNumber = "false";
                break;

            case "idcheck":
                Signer1.IdCheckConfigurationName = "ID Check $";
                Signer1.RequireIdLookup          = "true";
                break;

            default:
                break;
            }

            switch (envelope.dsSigner1SP.ToLower())
            {
            case "ds electronic":
                Signer1.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspE = new RecipientSignatureProvider();
                rspE.SignatureProviderName = "UniversalSignaturePen_ImageOnly";
                Signer1.RecipientSignatureProviders.Add(rspE);
                break;

            case "ds express":
                Signer1.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspD = new RecipientSignatureProvider();
                rspD.SignatureProviderName = "UniversalSignaturePen_Default";
                Signer1.RecipientSignatureProviders.Add(rspD);
                break;

            case "ds aes ac":
                Signer1.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspAESAC = new RecipientSignatureProvider();
                rspAESAC.SignatureProviderName    = "UniversalSignaturePen_OpenTrust_Hash_TSP";
                rspAESAC.SignatureProviderOptions = new RecipientSignatureProviderOptions();
                rspAESAC.SignatureProviderOptions.OneTimePassword = envelope.dsSigner1AuthNumber;
                Signer1.RecipientSignatureProviders.Add(rspAESAC);
                break;

            case "ds aes sms":
                Signer1.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspAESSMS = new RecipientSignatureProvider();
                rspAESSMS.SignatureProviderName        = "UniversalSignaturePen_OpenTrust_Hash_TSP";
                rspAESSMS.SignatureProviderOptions     = new RecipientSignatureProviderOptions();
                rspAESSMS.SignatureProviderOptions.Sms = "+" + envelope.dsSigner1AuthNumber;
                Signer1.RecipientSignatureProviders.Add(rspAESSMS);
                break;

            case "dsa":
                Signer1.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspDSA = new RecipientSignatureProvider();
                rspDSA.SignatureProviderName = "universalsignaturepen_docusignsigningappliance_tsp";
                Signer1.RecipientSignatureProviders.Add(rspDSA);
                break;

            case "id now":
                Signer1.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspIDNOW = new RecipientSignatureProvider();
                rspIDNOW.SignatureProviderName = "UniversalSignaturePen_IDNow_TSP";
                Signer1.RecipientSignatureProviders.Add(rspIDNOW);
                break;

            case "us piv":
                Signer1.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspUSPIV = new RecipientSignatureProvider();
                rspUSPIV.SignatureProviderName = "UniversalSignaturePen_PIV_Test_TSP";
                Signer1.RecipientSignatureProviders.Add(rspUSPIV);
                break;

            case "it agile":
                Signer1.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspAgile = new RecipientSignatureProvider();
                rspAgile.SignatureProviderName = "UniversalSignaturePen_ItAgile_TSP";
                Signer1.RecipientSignatureProviders.Add(rspAgile);
                break;

            case "icp":
                Signer1.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspICP = new RecipientSignatureProvider();
                rspICP.SignatureProviderName = "UniversalSignaturePen_ICP_SmartCard_TSP";
                Signer1.RecipientSignatureProviders.Add(rspICP);
                break;

            case "ds smart card":
                Signer1.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspSMART = new RecipientSignatureProvider();
                rspSMART.SignatureProviderName = "universalsignaturepen_ds_smartcard_tsp";
                Signer1.RecipientSignatureProviders.Add(rspSMART);
                break;

            default:
                break;
            }

            switch (envelope.dsSigner2AuthMethod.ToLower())
            {
            case "access code":
                Signer2.AccessCode = envelope.dsSigner2AuthNumber;
                break;

            case "sms":
                Signer2.IdCheckConfigurationName = "SMS Auth $";
                Signer2.RequireIdLookup          = "true";
                Signer2.SmsAuthentication        = new RecipientSMSAuthentication();
                Signer2.SmsAuthentication.SenderProvidedNumbers = new List <string>();
                Signer2.SmsAuthentication.SenderProvidedNumbers.Add("+" + envelope.dsSigner2AuthNumber);
                break;

            case "phone":
                Signer2.IdCheckConfigurationName = "Phone Auth $";
                Signer2.RequireIdLookup          = "true";
                Signer2.PhoneAuthentication      = new RecipientPhoneAuthentication();
                Signer2.PhoneAuthentication.SenderProvidedNumbers = new List <string>();
                Signer2.PhoneAuthentication.SenderProvidedNumbers.Add("+" + envelope.dsSigner2AuthNumber);
                Signer2.PhoneAuthentication.RecipMayProvideNumber = "false";
                break;

            case "idcheck":
                Signer2.IdCheckConfigurationName = "ID Check $";
                Signer2.RequireIdLookup          = "true";
                break;

            default:
                break;
            }

            switch (envelope.dsSigner2SP.ToLower())
            {
            case "ds electronic":
                Signer2.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspE = new RecipientSignatureProvider();
                rspE.SignatureProviderName = "UniversalSignaturePen_ImageOnly";
                Signer2.RecipientSignatureProviders.Add(rspE);
                break;

            case "ds express":
                Signer2.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspD = new RecipientSignatureProvider();
                rspD.SignatureProviderName = "UniversalSignaturePen_Default";
                Signer2.RecipientSignatureProviders.Add(rspD);
                break;

            case "ds aes ac":
                Signer2.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspAESAC = new RecipientSignatureProvider();
                rspAESAC.SignatureProviderName    = "UniversalSignaturePen_OpenTrust_Hash_TSP";
                rspAESAC.SignatureProviderOptions = new RecipientSignatureProviderOptions();
                rspAESAC.SignatureProviderOptions.OneTimePassword = envelope.dsSigner1AuthNumber;
                Signer2.RecipientSignatureProviders.Add(rspAESAC);
                break;

            case "ds aes sms":
                Signer2.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspAESSMS = new RecipientSignatureProvider();
                rspAESSMS.SignatureProviderName        = "UniversalSignaturePen_OpenTrust_Hash_TSP";
                rspAESSMS.SignatureProviderOptions     = new RecipientSignatureProviderOptions();
                rspAESSMS.SignatureProviderOptions.Sms = "+" + envelope.dsSigner1AuthNumber;
                Signer2.RecipientSignatureProviders.Add(rspAESSMS);
                break;

            case "dsa":
                Signer2.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspDSA = new RecipientSignatureProvider();
                rspDSA.SignatureProviderName = "universalsignaturepen_docusignsigningappliance_tsp";
                Signer2.RecipientSignatureProviders.Add(rspDSA);
                break;

            case "id now":
                Signer2.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspIDNOW = new RecipientSignatureProvider();
                rspIDNOW.SignatureProviderName = "UniversalSignaturePen_IDNow_TSP";
                Signer2.RecipientSignatureProviders.Add(rspIDNOW);
                break;

            case "us piv":
                Signer2.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspUSPIV = new RecipientSignatureProvider();
                rspUSPIV.SignatureProviderName = "UniversalSignaturePen_PIV_Test_TSP";
                Signer2.RecipientSignatureProviders.Add(rspUSPIV);
                break;

            case "it agile":
                Signer2.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspAgile = new RecipientSignatureProvider();
                rspAgile.SignatureProviderName = "UniversalSignaturePen_ItAgile_TSP";
                Signer2.RecipientSignatureProviders.Add(rspAgile);
                break;

            case "icp":
                Signer2.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspICP = new RecipientSignatureProvider();
                rspICP.SignatureProviderName = "UniversalSignaturePen_ICP_SmartCard_TSP";
                Signer2.RecipientSignatureProviders.Add(rspICP);
                break;

            case "ds smart card":
                Signer2.RecipientSignatureProviders = new List <RecipientSignatureProvider>();
                RecipientSignatureProvider rspSMART = new RecipientSignatureProvider();
                rspSMART.SignatureProviderName = "universalsignaturepen_ds_smartcard_tsp";
                Signer2.RecipientSignatureProviders.Add(rspSMART);
                break;

            default:
                break;
            }

            it.Recipients.Signers.Add(Signer1);
            if (Signer2.Email != "")
            {
                it.Recipients.Signers.Add(Signer2);
            }

            st.TemplateId = envelope.dsTemplateId;

            ct.ServerTemplates.Add(st);
            ct.InlineTemplates.Add(it);

            envDef.CompositeTemplates.Add(ct);

            envDef.Status = "sent";

            string json = JsonConvert.SerializeObject(envDef, Formatting.Indented);

            System.Diagnostics.Debug.Write(json);

            ApiClient apiClient = new ApiClient("https://demo.docusign.net/restapi");

            Configuration.Default.ApiClient = apiClient;
            envelope.dsAuthHeader           = "{\"Username\":\"" + envelope.dsUser + "\", \"Password\":\"" + envelope.dsPassword + "\", \"IntegratorKey\":\"49cfeb67-7406-4cef-bac9-7594a8802986\"}";
            Configuration.Default.DefaultHeader.Remove("X-DocuSign-Authentication");
            Configuration.Default.AddDefaultHeader("X-DocuSign-Authentication", envelope.dsAuthHeader);

            TemplatesApi     tempApi  = new TemplatesApi();
            EnvelopeTemplate tempInfo = tempApi.Get(envelope.dsAccountId, envelope.dsTemplateId);
            string           brandId  = tempInfo.BrandId;

            AccountsApi acctApi   = new AccountsApi();
            Brand       brandInfo = acctApi.GetBrand(envelope.dsAccountId, brandId);

            foreach (var key in brandInfo.Colors)
            {
                if (key.Name == "headerBackground")
                {
                    envelope.dsHeaderColor = key.Value;
                }
                if (key.Name == "headerText")
                {
                    envelope.dsFontColor = key.Value;
                }
            }
            if (envelope.dsHeaderColor == "")
            {
                envelope.dsHeaderColor = "#5376B7";
            }
            if (envelope.dsFontColor == "")
            {
                envelope.dsFontColor = "#FFFFFF";
            }

            EnvelopesApi envelopesApi = new EnvelopesApi();

            EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(envelope.dsAccountId, envDef);

            envelope.dsEnvelopeId = envelopeSummary.EnvelopeId;

            using (StreamWriter file = File.CreateText(Server.MapPath("~/json/" + envelope.dsEnvelopeId + ".json")))
            {
                JsonSerializer serializer = new JsonSerializer();
                serializer.Serialize(file, envDef);
            }

            if (Signer1.ClientUserId != null && Signer2.ClientUserId != null)
            {
                RecipientViewRequest viewOptions = new RecipientViewRequest()
                {
                    ReturnUrl            = "https://innov8ive.app/hmd/signer2start.aspx",
                    ClientUserId         = envelope.dsSigner1CID,
                    AuthenticationMethod = "email",
                    UserName             = Signer1.Name,
                    Email = Signer1.Email
                };

                ViewUrl recipientView = envelopesApi.CreateRecipientView(envelope.dsAccountId, envelope.dsEnvelopeId, viewOptions);

                Response.Redirect(recipientView.Url);
            }
            else if (Signer1.ClientUserId != null && Signer2.ClientUserId == null)
            {
                RecipientViewRequest viewOptions = new RecipientViewRequest()
                {
                    ReturnUrl            = "https://innov8ive.app/hmd/status.aspx",
                    ClientUserId         = envelope.dsSigner1CID,
                    AuthenticationMethod = "email",
                    UserName             = Signer1.Name,
                    Email = Signer1.Email
                };

                ViewUrl recipientView = envelopesApi.CreateRecipientView(envelope.dsAccountId, envelope.dsEnvelopeId, viewOptions);

                Response.Redirect(recipientView.Url);
            }
            else
            {
                Response.Redirect("~/status.aspx");
            }
        }
예제 #10
0
    protected void createEnvelope()
    {
        // Set up the envelope
        CreateEnvelopeRequest createEnvelopeRequest = new CreateEnvelopeRequest();

        createEnvelopeRequest.emailSubject = "Certified Delivery Example";
        createEnvelopeRequest.status       = "sent";
        createEnvelopeRequest.emailBlurb   = "Example of how certified delivery works";

        // Define first signer
        CertifiedDelivery signer = new CertifiedDelivery();

        signer.email        = email.Value;
        signer.name         = firstname.Value + " " + lastname.Value;
        signer.recipientId  = 1;
        signer.routingOrder = "1";
        signer.roleName     = "Signer1";
        //       signer.clientUserId = RandomizeClientUserID();  // First signer is embedded

        // Define a document
        Document document = new Document();

        document.documentId = "1";
        document.name       = "Sample Form";
//        document.transformPdfFields = "true";

        // Define an inline template
        InlineTemplate inline1 = new InlineTemplate();

        inline1.sequence   = "2";
        inline1.recipients = new Recipients();
        inline1.recipients.certifiedDeliveries = new List <CertifiedDelivery>();
        inline1.recipients.certifiedDeliveries.Add(signer);


        // Add the inline template to a CompositeTemplate
        CompositeTemplate compositeTemplate1 = new CompositeTemplate();

        compositeTemplate1.inlineTemplates = new List <InlineTemplate>();
        compositeTemplate1.inlineTemplates.Add(inline1);
        compositeTemplate1.document = document;

        // Add compositeTemplate to the envelope
        createEnvelopeRequest.compositeTemplates = new List <CompositeTemplate>();
        createEnvelopeRequest.compositeTemplates.Add(compositeTemplate1);


        string output = JsonConvert.SerializeObject(createEnvelopeRequest);

        // Specify a unique boundary string that doesn't appear in the json or document bytes.
        string Boundary = "MY_BOUNDARY";

        // Set the URI
        HttpWebRequest request = HttpWebRequest.Create(ConfigurationManager.AppSettings["DocuSignServer"] + "/restapi/v2/accounts/" + ConfigurationManager.AppSettings["API.AccountID"] + "/envelopes") as HttpWebRequest;

        // Set the method
        request.Method = "POST";

        // Set the authentication header
        request.Headers["X-DocuSign-Authentication"] = GetSecurityHeader();

        // Set the overall request content type aand boundary string
        request.ContentType = "multipart/form-data; boundary=" + Boundary;
        request.Accept      = "application/json";

        // Start forming the body of the request
        Stream reqStream = request.GetRequestStream();

        // write boundary marker between parts
        WriteStream(reqStream, "\n--" + Boundary + "\n");

        // write out the json envelope definition part
        WriteStream(reqStream, "Content-Type: application/json\n");
        WriteStream(reqStream, "Content-Disposition: form-data\n");
        WriteStream(reqStream, "\n"); // requires an empty line between the header and the json body
        WriteStream(reqStream, output);

        // write out the form bytes for the first form
        WriteStream(reqStream, "\n--" + Boundary + "\n");
        WriteStream(reqStream, "Content-Type: application/pdf\n");
        WriteStream(reqStream, "Content-Disposition: file; filename=\"Sample_Form\"; documentId=1\n");
        WriteStream(reqStream, "\n");
        String filename = uploadFile.Value;

        if (File.Exists(Server.MapPath("~/App_Data/" + filename)))
        {
            // Read the file contents and write them to the request stream
            byte[] buf = new byte[4096];
            int    len;
            // read contents of document into the request stream
            FileStream fileStream = File.OpenRead(Server.MapPath("~/App_Data/" + filename));
            while ((len = fileStream.Read(buf, 0, 4096)) > 0)
            {
                reqStream.Write(buf, 0, len);
            }
            fileStream.Close();
        }


        // wrte the end boundary marker - ensure that it is on its own line
        WriteStream(reqStream, "\n--" + Boundary + "--");
        WriteStream(reqStream, "\n");

        try
        {
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;

            if (response.StatusCode == HttpStatusCode.Created)
            {
                byte[] responseBytes = new byte[response.ContentLength];
                using (var reader = new System.IO.BinaryReader(response.GetResponseStream()))
                {
                    reader.Read(responseBytes, 0, responseBytes.Length);
                }
                string responseText = Encoding.UTF8.GetString(responseBytes);
                CreateEnvelopeResponse createEnvelopeResponse = new CreateEnvelopeResponse();

                createEnvelopeResponse = JsonConvert.DeserializeObject <CreateEnvelopeResponse>(responseText);
                if (createEnvelopeResponse.status.Equals("sent"))
                {
                    Response.Redirect("ConfirmationPage.aspx?envelopeID=" + createEnvelopeResponse.envelopeId);
                }
            }
        }
        catch (WebException ex)
        {
            if (ex.Status == WebExceptionStatus.ProtocolError)
            {
                HttpWebResponse response = (HttpWebResponse)ex.Response;
                using (var reader = new System.IO.StreamReader(ex.Response.GetResponseStream(), UTF8Encoding.UTF8))
                {
                    string       errorMess = reader.ReadToEnd();
                    log4net.ILog logger    = log4net.LogManager.GetLogger(typeof(CertifiedDelivery));
                    logger.Info("\n----------------------------------------\n");
                    logger.Error("DocuSign Error: " + errorMess);
                    logger.Error(ex.StackTrace);
                    Response.Write(ex.Message);
                }
            }
            else
            {
                log4net.ILog logger = log4net.LogManager.GetLogger(typeof(CertifiedDelivery));
                logger.Info("\n----------------------------------------\n");
                logger.Error("WebRequest Error: " + ex.Message);
                logger.Error(ex.StackTrace);
                Response.Write(ex.Message);
            }
        }
    }