Получение регулярных вкладок из шаблона при создании конверта из этого шаблона - PullRequest
0 голосов
/ 07 июня 2019

Я создал шаблон с документом внутри приложения DocuSign, и я хотел бы использовать его при создании конверта.Хитрость в том, что мне нужно заполнить все поля (tabs) из моей формы.Итак, вот шаги, которые я выполняю при создании конверта:

  1. Сначала я получаю шаблон от TemplateApi
  2. Я надуваю этот конверт полями, которые пришли ко мне из внешнего интерфейса,Это обычный цикл for на TextTabs.Все вкладки являются текстовыми типами, сделано намеренно.
  3. Создание EnvelopeDefinition объекта со всеми необходимыми полями: documentBase64, заполненными вкладками и т. Д. Поскольку объект, возвращаемый из TemplateApi, имеет тип EnvelopeTemplate, а для создания конверта требуется EnvelopeDefinition Мне нужно отобразить еговручную - есть ли другой способ добиться этого?Это очень утомительно и требует много времени.

К сожалению, сейчас все вещи я делаю вручную.Это означает циклический просмотр текстовых вкладок и заполнение значения coresponding объектами из формы со стороны внешнего интерфейса.Недостаток здесь в том, что я действительно не знаю, какое поле я на самом деле задуваю.В идеале было бы как-то получить от API метку, которая отвечает на его текстовую вкладку.

Тем временем я придумываю решение для заполнения ex.метка с предопределенным значением метки для соответствующей текстовой вкладки.В некотором смысле это обходной путь, но с точки зрения пользовательского опыта было бы очень странно устанавливать его каждый раз при создании новой вкладки. Есть ли у вас рекомендации, как с этим бороться?

Код:

 TemplatesApi templatesApi = new TemplatesApi(docusignApiClient.getApiClient());
        EnvelopesApi envelopesApi = new EnvelopesApi(docusignApiClient.getApiClient());

        try {
            EnvelopeTemplateResults envelopeTemplateResults = templatesApi.listTemplates(docusignApiClient.getAccountId());
            EnvelopeTemplate envelopeTemplate = templatesApi.get(docusignApiClient.getAccountId(), "templateId");
            List<Document> documents = envelopeTemplate.getDocuments();


            EnvelopeDefinition envelopeDefinition = new EnvelopeDefinition();
            byte[] document = templatesApi.getDocument(docusignApiClient.getAccountId(), "templateId", "1");


            envelopeTemplate.getDocuments()
                    .forEach(doc -> doc.documentBase64(Base64.getEncoder().encodeToString(document)));

            envelopeTemplate
                    .getRecipients().getSigners()
                    .stream()
                    .flatMap(signer -> signer.getTabs().getTextTabs().stream())
                    .forEach(text -> {
                        text.value("Test");
                    });

            envelopeTemplate.getRecipients().getSigners()
                    .forEach(signer -> {
                        signer.email("johndoe@gmail.com");
                        signer.name("John Doe");
                    });

            envelopeDefinition.setStatus("sent");
            envelopeDefinition.setRecipients(envelopeTemplate.getRecipients());
            envelopeDefinition.setEmailSubject("TEST email subject");
            envelopeDefinition.setDocuments(envelopeTemplate.getDocuments());

            EnvelopeSummary envelope = envelopesApi.createEnvelope(docusignApiClient.getAccountId(), envelopeDefinition);

//            templatesApi.listTabs(docusignApiClient.getAccountId(), "tabId", )



        } catch (ApiException e) {
            throw new RuntimeException("Can't receive templates", e);
        }
...