From 510fcd5a927b84e8735bd03c455e81996dea5f8b Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Fri, 21 May 2021 09:49:16 +0200 Subject: [PATCH] FEAT #16982 TIME 2:30 Get proof for yousign --- .../history/controllers/HistoryController.php | 20 +++++++++++ .../controllers/YousignController.php | 34 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/src/app/history/controllers/HistoryController.php b/src/app/history/controllers/HistoryController.php index 9b0f43622d..4f54db4c7d 100755 --- a/src/app/history/controllers/HistoryController.php +++ b/src/app/history/controllers/HistoryController.php @@ -38,6 +38,7 @@ use SrcCore\models\PasswordModel; use SrcCore\models\TextFormatModel; use SrcCore\models\ValidatorModel; use User\models\UserModel; +use Workflow\controllers\YousignController; use Workflow\models\WorkflowExternalInformationModel; use Workflow\models\WorkflowModel; use Workflow\models\WorkflowTemplateModel; @@ -524,6 +525,25 @@ class HistoryController 'value' => $step['note'] ]; } + + $workflowExternalInformations = WorkflowExternalInformationModel::getByWorkflowId(['select' => ['informations'], 'workflowId' => $step['id']]); + if (!empty($workflowExternalInformations)) { + $informations = json_decode($workflowExternalInformations['informations'], true); + if ($informations['type'] == 'yousign' && !empty($informations['yousignProcedureId'])) { + $yousignProof = YousignController::getProofByWorkflowId(['workflowId' => $step['id']]); + $archivePath = $tmpPath . 'yousignProof' . $GLOBALS['id'] . "_" . rand() . '.zip'; + file_put_contents($archivePath, base64_decode($yousignProof)); + $zipArchive = new \ZipArchive(); + $zipArchive->open($archivePath); + $nameInArchive = $zipArchive->getNameIndex(0); + $yousignPdfProof = $zipArchive->getFromIndex(0); + $yousignPath = $tmpPath . 'yousignProof' . $GLOBALS['id'] . "_" . rand() . '.pdf'; + file_put_contents($yousignPath, $yousignPdfProof); + unlink($archivePath); + + $documentPathToZip[] = ['path' => $yousignPath, 'filename' => $nameInArchive]; + } + } } if (!empty($notes)) { diff --git a/src/app/workflow/controllers/YousignController.php b/src/app/workflow/controllers/YousignController.php index 5db104a4c1..9cd61fad2e 100755 --- a/src/app/workflow/controllers/YousignController.php +++ b/src/app/workflow/controllers/YousignController.php @@ -281,6 +281,40 @@ class YousignController return true; } + public static function getProofByWorkflowId(array $args) + { + $workflowExternalInformations = WorkflowExternalInformationModel::getByWorkflowId(['select' => ['informations', 'external_signatory_book_id'], 'workflowId' => $args['workflowId']]); + if (empty($workflowExternalInformations)) { + return ['errors' => 'Workflow does not exist']; + } + + $informations = json_decode($workflowExternalInformations['informations'], true); + + $externalSB = ExternalSignatoryBookModel::getById(['select' => ['*'], 'id' => $workflowExternalInformations['external_signatory_book_id']]); + if (empty($externalSB)) { + return ['errors' => 'No external signatory book configuration found']; + } elseif ($externalSB['type'] != 'yousign') { + return ['errors' => 'External signatory book configuration is invalid']; + } + $externalSB['connection_data'] = json_decode($externalSB['connection_data'], true); + + $trunkedProcedureId = str_replace('/procedures/', '', $informations['yousignProcedureId']); + if (empty($trunkedProcedureId)) { + return ['errors' => 'No procedure to process']; + } + + $procedureResponse = CurlModel::exec([ + 'url' => "{$externalSB['connection_data']['apiUri']}/procedures/{$trunkedProcedureId}/proof?format=pdf", + 'bearerAuth' => ['token' => $externalSB['connection_data']['apiKey']], + 'method' => 'GET' + ]); + if ($procedureResponse['code'] != 200) { + return ['errors' => json_encode($procedureResponse['response'])]; + } + + return $procedureResponse['response']; + } + public static function deleteProcedureByWorkflowId(array $args) { $workflowExternalInformations = WorkflowExternalInformationModel::getByWorkflowId(['select' => ['informations', 'external_signatory_book_id'], 'workflowId' => $args['workflowId']]); -- GitLab