/**
  * Send envelope for all signatures for application
  *
  * @param ClientAccount $account
  * @return bool
  * @throws \RuntimeException
  */
 public function sendEnvelopeForApplication(ClientAccount $account)
 {
     $signatures = $this->signatureManager->findSignaturesByAccountConsolidatorId($account->getId());
     $usedTemplates = array();
     $compositeTemplates = array();
     foreach ($signatures as $signature) {
         $source = $this->signatureManager->getSourceObject($signature);
         $templateId = $this->getTemplateForSignableObject($source);
         if (in_array($templateId, $usedTemplates)) {
             continue;
         }
         $usedTemplates[] = $templateId;
         $recipients = $this->getRecipients($source);
         $recipientParams = array();
         foreach ($recipients as $key => $recipient) {
             $recipientParams[] = array('email' => $recipient->getEmail(), 'name' => $recipient->getName(), 'clientUserId' => $recipient->getClientUserId(), 'recipientId' => $key + 1, 'roleName' => $recipient->getRoleName(), 'type' => $recipient->getType(), 'tabs' => $recipient->getTabs()->toArray());
         }
         $serverTemplates = array(array('sequence' => 1, 'templateId' => $templateId));
         $inlineTemplates = array(array('sequence' => 2, 'recipients' => array('signers' => $recipientParams)));
         $compositeTemplates[] = array('serverTemplates' => $serverTemplates, 'inlineTemplates' => $inlineTemplates);
     }
     if (count($compositeTemplates)) {
         $options = array('compositeTemplates' => $compositeTemplates, 'enableWetSign' => false);
         $envelope = new Envelope();
         $envelope->setEmailBlurb('Sign all documents');
         $envelope->setEmailSubject('Sign all documents');
         //$envelope->setRecipients($recipients);
         $envelope->setStatus(Envelope::STATUS_SENT);
         try {
             $response = $this->docusignApi->sendEnvelope($envelope, $options);
         } catch (\Exception $e) {
             throw new \RuntimeException($e->getMessage(), $e->getCode(), $e);
         }
         foreach ($signatures as $signature) {
             $signature->setDocusignEnvelopeId($response->envelopeId);
             $signature->setStatus($response->status);
             $this->signatureManager->saveDocumentSignature($signature);
         }
         return true;
     }
     return false;
 }