docusign_signature-1.0.x-dev/modules/examples/src/Form/SignatureByEmail.php

modules/examples/src/Form/SignatureByEmail.php
<?php

declare(strict_types=1);

namespace Drupal\docusign_signature_examples\Form;

use DocuSign\eSign\Model\EnvelopeDefinition;
use DocuSign\eSign\Model\TemplateRole;
use Drupal\Core\Form\FormStateInterface;

/**
 * DocuSign signature by email example.
 *
 * @package Drupal\docusign_signature_examples\Form
 */
class SignatureByEmail extends EmbeddedSignature {

  /**
   * {@inheritdoc}
   */
  public function getFormId(): string {
    return 'docusign_signature_examples_by_email_form';
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state): array {
    $form = parent::buildForm($form, $form_state);

    $form['carbon_copy'] = $form['signer'];
    $form['carbon_copy']['#title'] = $this->t('Carbon Copy');

    return $form;
  }

  /**
   * {@inheritdoc}
   */
  protected function getEnvelopeArgs(array $values): array {
    $envelopeArgs = parent::getEnvelopeArgs($values);

    $envelopeArgs['cc_email'] = $values['carbon_copy']['email'];
    $envelopeArgs['cc_name'] = $values['carbon_copy']['name'];

    return $envelopeArgs;
  }

  /**
   * {@inheritdoc}
   */
  protected function createEnvelopeDefinition(array $envelopeArgs): EnvelopeDefinition {
    $envelopeDefinition = parent::createEnvelopeDefinition($envelopeArgs);

    // Create the template role elements to connect
    // the carbon copy to the template.
    $signer = $envelopeDefinition->getTemplateRoles()[0];

    $carbonCopy = new TemplateRole([
      'email' => $envelopeArgs['cc_email'],
      'name' => $envelopeArgs['cc_name'],
      'role_name' => 'cc',
    ]);

    // Add the TemplateRole objects to the envelope object.
    $envelopeDefinition->setTemplateRoles([$signer, $carbonCopy]);

    return $envelopeDefinition;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc